Sparring omkring klassediagram

Tags:    uml klassediagram analyse

<< < 123 > >>
Jeg mangler lidt sparring omkring dette klassediagram som er en del af mit afgangsprojekt på min efteruddannelse. Jeg kan kun modtage vejledning og ikke direkte diskussion om indholdet og jeg laver det alene. Så derfor spørger jeg her :-)

Projektet er fra idé til implementering og er en webapplikation hvor en eksisterende bruger kan oprette købs- og salgsannoncer. En annonce kan indeholde et pre-defineret fabrikat. En bruger kan selv bestemme om der kan oprettes kommentarer til annoncen.

Mit analyse klassediagram kan ses her: http://i39.tinypic.com/34h6upt.jpg

Jeg har overvejet om Annonce skulle være abstrakt og indeholde subklasserne købsannonce og salgsannonce, men da forskellen kun er en egenskab på Annonceklassen har jeg ikke fundet det nødvendigt.

Fabrikater kan kun vedligeholdes af en administrator.

En bruger kan enten være bruger, moderator eller administrator. En moderator kan inaktivere annoncer og slette kommentarer. En administrator kan det samme som en moderator + vedligeholde fabrikater.

Men jeg er i tvivl om man i dette meget tidlige klassediagram også beskriver sammenhænge mellem f.eks. Administrator og Fabrikat som i kan se jeg har lavet. Det skal ligesom vise at kun Administrator kan vedligeholde dem. Men er dette korrekt?

Jeg har ikke oprettet controller-klasser, men i stedet lader jeg klasserne styre hændelserne selv. F.eks. forestiller jeg mig, at en annonce opretter "sig selv" ved at lave en:

Fold kodeboks ind/udCSharp kode 


Og andet input til det er velkommen :-)




Indlæg senest redigeret d. 12.03.2012 18:28 af Bruger #9814
21 svar postet i denne tråd vises herunder
5 indlæg har modtaget i alt 24 karma
Sorter efter stemmer Sorter efter dato
Hvis du vil have ikke-skolet input må du gi lidt mere ramme .. der er osse en database og det 'lever' i en asp/php sammenhæng. Eller hur?

Man kan forestille sig at bruger og annonce er et 'hurtigt' udtræk fra databasen og som sådan et overflødigt/misvisende klasse-grundlag.


For det første vil jeg ikke have en færdig løsning. Jeg vil gerne have en diskussion om et analyseklassediagram.

På dette tidspunkt i udviklingsprocessen ved man ikke nødvendigvis om det er asp, php, etc. etc. og det er et analyseklassediagram og ikke et designklassediagram - som jeg skrev.

Så at inddrage database og teknik på dette tidspunkt er helt forkert i mine øjne. Databasen eksisterer slet ikke endnu - hverken på papir eller på en server.




Indlæg senest redigeret d. 13.03.2012 08:45 af Bruger #9814
Ok,
Brian Hvarregaard er inde på, at annonce opretter og sletter sig selv osv. Bruger har samme problem. I det lys kan jeg sé én fornuftig metode/property: annonce.TilknytBilled()
Skal annonce ikke ha' en 'Fabrikat' property
Skal bruger ikke ha' en annoncer() property



Properties defineres ikke på et så tidligt og konceptuelt klassediagram. Så nej, de mangler ikke her, men kommer på et senere diagram. Det er udelukkende strukturen og hændelserne jeg vil vise til at starte med.

Jeg laver en ny version i aften med controller klasser, så problematikken med hvem der opretter hvad bliver løst.





Indlæg senest redigeret d. 13.03.2012 09:05 af Bruger #9814
Jeg har vist misforstået diagrammet
bruger, annonce osv er mere 'roller' end klasser?



Jeg har tit en opdeling i model, service og repository. Dvs. modellen (klassen) indeholder kun properties, servicen indeholder kun funktioner som søg, beregn osv... mens repository står for at gemme og læse fra db. Noget lignende dette: http://bit.ly/wqR8y8



Jeg har vist misforstået diagrammet
bruger, annonce osv er mere 'roller' end klasser?


Nej, det er skam et klassediagram ;-)


Jeg har tit en opdeling i model, service og repository. Dvs. modellen (klassen) indeholder kun properties, servicen indeholder kun funktioner som søg, beregn osv... mens repository står for at gemme og læse fra db. Noget lignende dette: http://bit.ly/wqR8y8


Dvs. at din serviceklasse er det jeg kalder controllerklasse?



Hvis du er ved at beskrive dine klasser kan jeg ikke tænke mig mere rygrad i dem, en properties.
Du har meget forvirrende ordbrug. Aktuelt nævner du 'strukturen' og skulle måske ha' i mente, at en struktur er et kodebegreb der ligger helt tæt på begrebet klasse.
Hændelser får mig til at tænke på events .. og det er vel en helt speciel kode-setup du får gang i så?
Så nævner du osse, at brugere kan være brugere og admins osv. .. Jeg kan ikke forestille mig noget der lægger op til større forvirring. Brug fx 'invoker' og nedarv 'bruger', 'moderator' og 'admin'

Eftersom du endelig har brugt hændelser (metoder?) konsekvent forkert tror jeg ærlig talt ikke på enten
1)at du har greb om det du har gang i
2)at dit indlæg er seriøst


Damn, jeg må give op. Ved du overhovedet noget om OOAD? Prøv at læse bogen "Objektorienteret Analyse og Design" - aka "Rød Aalborg". Så ved du også hvad jeg snakker om. *EDIT* Direkte citat fra bogen så DU også forstår det: "En hændelse er en øjeblikkelig begivenhed, som involverer et eller flere objekter". *EDIT

Og hvis jeg ikke skal vise en generaliseringsstruktur af klassen Bruger i et klassediagram, hvor søren skal jeg så vise det?

Gider du ikke godt blive ude af min tråd? TAK!

Og tak til den anden Brian for konstruktiv feedback.



Indlæg senest redigeret d. 13.03.2012 10:23 af Bruger #9814
var det dig der skrev:

"Og andet input til det er velkommen :-)"

Selv uden den kommentar har jeg givet dig relevant input mht klassediagrammet.

Jeg har spurgt dig om rammen omkring dine 'klasser', for de 'hændelser' du snakker om er enten initieret udenfor dine klasser ... eller osse er de misplaceret inden i. Kun admin og moderator forholder sig til andet end sig selv .. så, hvordan kan 'rammen' være ligegyldig.

Hvis du opgiver har du vel taget min kritik til dig?

Har jeg givet udtryk for at du ikke skal vise de klasser du bruger i klassediagrammet?

Hvad mener du med 'din tråd'? Du og jeg har ret til at ytre os, ikke pligt.

øh .. det var alle retoriske spørgsmål.





Det giver dot altid nogle udfordringer omkring at holde opdelinge, specielt når man introducerer repositories/controllers, for er det det samme objekter man bør eksponere til sin grænseflade som man har i sin database? (se evt.: http://blog.ploeh.dk/2012/02/09/IsLayeringWorthTheMapping.aspx)

Igen, det er lidt off-topic, det er min personlige præference.


Godt link, da det giver mig stof til eftertanke. Men hans spørgsmål: "That’s a lot of work in order to add a single data element, and this is even a read-only scenario! Is it really worth it?"

Vil jeg nok svare nej til og i stedet bruge den klassiske lag-deling som han også skriver om i slutningen.

Min løsning / mit produkt ser jeg ikke som komplekst, så jeg vil heller ikke skyde gråspurve med kanoner.

Tak igen.





Alle metoder på 'Annonce' objekter gør vel noget med et 'Annonce' objekt, så hvorfor indkode det i metode navnet ?

Det er lidt som at have 'bruger_navn' og 'bruger_id' på et 'Bruger' objekt, som mange har for vane.


God pointe. Den tager jeg til mig :-)



<< < 123 > >>
t