OOP Designfundering

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • erciz
    Medlem
    • 2001-05-07
    • 1880

    #1

    OOP Designfundering

    Jag är inte helt van vid att använda OOP och databaser så jag har en liten fundering om jag tänkter rätt.

    Jag har en databastabell med Personer och en med Grupper. I Person-tabellen så finns en kolumn med vilken grupp personen är med i, Grupp-ID.

    Hur ska jag implementera klassen för en Person? Ska jag ha en int GruppID som i databasen och när jag vill accessa info om gruppen så slår jag upp Grupp-objektet från en ArrayList eller liknande? Eller ska jag lägga in ett Grupp-objekt i varje Person-objekt? Det hade varit enkelt men det blir problem om jag ska uppdatera gruppen, då måste jag komma åt alla Grupp-objekt och uppdatera dom. Eller finns det någon annan bra lösnin för detta?

    Sist men inte minst: Finns det något Design-Pattern för det här fallet? eller är det för enkelt
  • SPiN
    Medlem
    • 2000-03-12
    • 5832

    #2
    Hur ser relalationen mellan Grupp och Person ut? Kan en Person vara med i flera Grupper? Kan en Grupp innehålla flera Personer? Det låter som ett många-till-många-förhållande, alltså att en Grupp kan innehålla flera Personer och en Person kan vara med i flera Grupper. Om så är fallet, och varje Person måste veta vilka Grupper han tillhör, skulle man kunna ha följande struktur:
    Code:
    class Person {
        private List<Grupp> grupperSomPersonenÄrMedI;
        ...
    }
    class Grupp {
        private List<Person> personerSomÄrMedIGruppen;
        ...
    }
    Är det istället så att en Person kan enbart vara med i en och endast en Grupp, men en Grupp kan innehålla flera Personer, skulle jag tänkta en extra gång. Ska Personen verkligen ha tillgång till gruppen? Jag hade helst designat det så att en Grupp innehåller en List<Person>, men en Person kan inte "gå bakåt" i hierarkin - alltså lagras inget Grupp-objekt i klassen Person.

    Har man en starkt typad hierarki, med strikta regler, är det lättare att designa. Skriv med ord vad som förväntas av varje objekt, så ska du nog se att du hittar en lösning.

    Personligen skulle jag aldrig lagra ett ID-nummer för att veta vilket objekt som det associeras med - jag skulle lagra objektet direkt. Java är ju (oftast) ett "pass-by-reference"-språk (det är diskuterat i mängder ).
    "Knock off the hippie shit, strap on a helmet and start shooting. This is Malibu, baby! I want you to storm that beach like it's fuckin' Normandy!"

    Comment

    Working...