Klasse

Tags:    objekter

<< < 12 > >>
Jeg har nogle spørgsmåle til et lagerstyringssystem til søgning af varer, ændring af order, og levering.

Det foregår sådan at medarbejdere får en order på et stykke papir med stregkode. Man plukker varerne. Hvis der ikke er nok antal varer retter man det antal ned. Efter plukning og pakning scanner man orderen og en labels og kvitering kommer ud.

Afgrænsning: (Registrering af ordre fra det andet system har jeg undladt)

Jeg har klasserne: Kunde, privatkunde, erhvervskunde, lokation, vare, ordre, samt post.

1.
En klasse (Vare) som har hændelsen (vare flyttes). Skal der være en klasse til f.eks. flyt? Eller behøver man ikke en hel klasse, men nok med en funktion?

2.
En klasse (Order)= kundeordre med varer

Kunderne bestiller varer via tlf. eller internettet, og kommer ind i lagerstyringssystemet via et andet system.

Hvilke atributter og hændelser vil passe godt for klassen Order?

Så jeg kan lave et tilstandsdiagram for klassen Order.



Indlæg senest redigeret d. 19.11.2011 22:54 af Bruger #16870
18 svar postet i denne tråd vises herunder
11 indlæg har modtaget i alt 24 karma
Sorter efter stemmer Sorter efter dato
Jeg har nogle spørgsmåle til et lagerstyringssystem til søgning af varer, ændring af order, og levering.

Det foregår sådan at medarbejdere får en order på et stykke papir med stregkode. Man plukker varerne. Hvis der ikke er nok antal varer retter man det antal ned. Efter plukning og pakning scanner man orderen og en labels og kvitering kommer ud.

Afgrænsning: (Registrering af ordre fra det andet system har jeg undladt)

Jeg har klasserne: Kunde, privatkunde, erhvervskunde, lokation, vare, ordre, samt post.

1.
En klasse (Vare) som har hændelsen (vare flyttes). Skal der være en klasse til f.eks. flyt? Eller behøver man ikke en hel klasse, men nok med en funktion?

2.
En klasse (Order)= kundeordre med varer

Kunderne bestiller varer via tlf. eller internettet, og kommer ind i lagerstyringssystemet via et andet system.

Hvilke atributter og hændelser vil passe godt for klassen Order?

Så jeg kan lave et tilstandsdiagram for klassen Order.


Man har normalt en opdeling af ordrer i Ordre og ordrelinie, det er et klassisk composite pattern og det gør at du bedre kan styre dit ordre objekt. Du har således en ordre medfx Navn, adresse, osv. samt en liste af ordrelinier. Ordrelinien har: Vare, antal, enhedspris, Enhed (fx. stk. timer eller liter). Så for hver ting der bestilles i dit system tilføjes der en ekstra linie i dit ordre objekt. du finder prisen ved at summere alle linierne.

Et tilstandsdiagram kan være således:

* Objekt oprettet
* Staminformationer indtastet (navn, adresse, leverance osv)
* x antal ordrelinier tilføjes
* Ordre afsendes
* Ordre betales
* Ordre lukkes.






1. Du laver en metode på klassen Vare der hedder Flyt. Det betyder at du kan be' den konkrete vare om at flytte sig selv. F.eks.

Fold kodeboks ind/udCSharp kode 


2. En ordre består normalt af et ordrehovede og ordrelinjer. Hovedet har alle de attributter som der er nødvendig for en ordre (ordrenr. Kundenr. osv. );-) Og ordrelinjerne er de varer der hører til ordren (ordrenr., varenr. antal, osv.)

Der er flere der spørger om dette lager/ordresystem for tiden. Er i igang med noget eksamensprojekt?



Michael.

Det er helt og aldeles simpel database teori det der.

Jeg synes du skal købe denne bog, den forklare nemlig det hele på dansk så alle kan forstå det (Selv min egen mor kan forstå det).

Her lærer du også om hvordan du får lavet alt det du søger.

Se bogen her

God fornøjelse



Michael.

Det er helt og aldeles simpel database teori det der.

Jeg synes du skal købe denne bog, den forklare nemlig det hele på dansk så alle kan forstå det (Selv min egen mor kan forstå det).

Her lærer du også om hvordan du får lavet alt det du søger.

Se bogen her

God fornøjelse



Det er ikke databaseteori, men objektorienteret analyse.



Tjah... Magento har en struktur der ligner følgende:

order
- user
- paymentlocation
- dispatchlocation
- produkt1
- ...
- produktN


Jeg ville nok få min "ordre" til at oprette en "sub-ordre", hvor den gamle "ordre" flytter de manglende produkter over.

Eller den nye sub-ordre kopiere de manglende varer, og den gamle ordre markerer dem for udgået eller overført til anden ordre.



Indlæg senest redigeret d. 20.11.2011 00:24 af Bruger #10216
Min fejl, jeg forstod det anderledes :D



Ifht. mit forslag, ville det ikke give nogen mening, da varen ikke flyttes. Varen meldes udsolgt og der oprettes en ny ordre med en ny vare. Det er ikke den gamle vare der lægges i en ny ordre - det kan man jo ikke, da den ikke er på lager.



Helt på linje med Hvarregaard og hans indlæg. Læs op på designmønstre, hvis det er en del af uddannelsen. Det giver lige det sidste til eksamen at fyre dem af :-)



Aftale, stemmer kommer efter 00:00 :)

Da kunder bestiller varer gennem et andet system, som jeg ikke skal beskrive.

Så kan jeg da ikke tilføje i tilstandsdiagrammet, kunde køber?
eller for en erhvervskunde: erhvervskunde oprettes?

Da jeg har de 3 klasser, kunde, privatkunde og erhverskunde?

Eller kan jeg?

I klassen lokation har jeg valgt attributter som:
lokations navn, lokationsnr.

Som hændelse: vare indsat, vare plukket.

Er det fornuftigt?


Husk lige på dine "is a" relationer. Hvad er forskellen på en kunde, en privatkunde og en erhvervskunde. Husk at bruge nedarvning til dine kunder. Dvs. du skal sikkert have en klasse der hedder kunde, med alt det der er fælles for kunde, privatkunde og erhvervskunde. Så skal både privatkunde og erhvervskunde nedarve fra kunde. Du skal vel ikke bruge klassen "kunde" til noget - kun de to andre?

Hvis du har ordrer i dit system kan du godt arbejde med dem, de kan bare ikke lave tilstandsdiagrammer med dem. Du kan jo godt have dem med i dit use-case diagram som eksterne systemer (systemet med ordrene) og så interagere med det system som alt muligt andet. Det betyder også at du godt kan tilgå det fra dit system.

Mht. ordrer kunne det tænkes at der ikke er så meget "kød" på det, jeg går ud fra at det er i "regnskabssystemet" det skal laves, dvs. uden for dit scope. MEn da du skal interagere med det andet system, kan du jo sagtens bruge ordrene. Fx. en use case: "Medarbejder plukker ordre", dvs. du ændrer ikke på ordrens _indhold_, men du kan skifte dens "tilstand" som "afventer plukning", "plukket", "afsendt", "restordre".

Så kunne et tilstandsdiagram se således ud:

Ordre Modtaget
---------------
Ordre afventer plukning
Ordre Plukket / Ordre (vare) restordre
Ordre Afsendt





Indlæg senest redigeret d. 20.11.2011 20:24 af Bruger #2730

Husk lige på dine "is a" relationer. Hvad er forskellen på en kunde, en privatkunde og en erhvervskunde. Husk at bruge nedarvning til dine kunder. Dvs. du skal sikkert have en klasse der hedder kunde, med alt det der er fælles for kunde, privatkunde og erhvervskunde. Så skal både privatkunde og erhvervskunde nedarve fra kunde. Du skal vel ikke bruge klassen "kunde" til noget - kun de to andre?


Lige præcis. De attributter som Kunde har, har privat og erhvervskunde også. Dvs. de nedarvende attributter. Privat og erhvervskunde er specialiseringer af Kunde.


Så kunne et tilstandsdiagram se således ud:

Ordre Modtaget
---------------
Ordre afventer plukning
Ordre Plukket / Ordre (vare) restordre
Ordre Afsendt


Jeg kommer lidt i tvivl. Både klassen Lokation og Ordre har hændelsen plukkes, dvs. klasserne har hændelserne plukkes. Klassen Vare har ligeldes attributten vare plukkes. Er det korrekt, kan de alle 3 have den samme hændelse?


Og det næste er for klassen Post

Ordren (på papiret) er der en stregkode på. Når ordreren er plukket skal ordrerens stregkode scannes af en scanner. Efter kommer informationerne ind i Outbox. Efter alle dagens ordre er blevet plukket, trykkes der på funktionen (send) som sender filerne i outbox til postdanmark.

Jeg vil mene for Post kunne det være:
Ordre registeret
Ordre afsendt.

Eller er det forkert?




Husk på virkeligheden!

Kan du plukke en "lokation", dvs. kan du gå ind på lageret og plukke en lokation? Nej vel. Du skal adskille objekterbes ansvar, således de hver især har ET OG KUN ET ANSVAR. Det hedder "Seperation of concern" og er den første grundsten i S.O.L.I.D princippet. Det vil sige at din lokation ikke skal have nogle hændelser. Den skal have nogle attributter, der beskriver hvor den er henne, fx. hyldenummer.

En vare kan man diskutere om man kan plukke den, eller om man bare skifter dens lokation. Din vare har nogle forskellige attributter som navn, farve, vægt osv. Den har så også en hændelse der hedder "Skift Lokation", fx. når du flytter den fra en hylde til en anden hylde. Du kan også have en hændelse der hedder "pak til ordre", for ikke at blande den sammen med din ordres "pluk" hændelse.

Det er din ordre der skal plukkes. Når du plukker ordren, sætter du dens tilstand til "plukkes", så for hver vare du tager, kører du varens hændelse "pak til ordre", det skifter lokationen på varen til din pakke der skal med posten. Når alle ordrelinier i ordren er pakket, kører du ordrens hændelse "ordre færdigplukket" og det skifter så din ordres tilstand fra "plukkes" til "færdigplukket", når posten så henter den, skifter du fra "færdigplukket" til "afsendt".




<< < 12 > >>
t