Obligatorisk opgave

public.ucn.dk

Obligatorisk opgave

NOEA/IT: Programmeringsteknologi: C#/.NET FEN 2008-09-15

Obligatorisk opgave

Udleveret den 23.9.2008.

Afleveres (rapportform) den 21.9.2008.

Problemstilling

Hos engros-firmaet Andersen & Asp, aps., modtager man bl.a. ordrer fra sine kunder med henblik

på efterfølgende import. Firmaet ønsker en IT-løsning, der kan håndtere kunderne, ordrerne og

varerne.

Nedenstående er vist et udsnit af design klassediagrammet for det færdige system:

Kunde

KundeKartotek

kundenr

navn

0..* 1

Add()

Find()

1

Slet()

0..*

Ordre

OrdreBog

ordrenr

Add()

addOrdreLinie() 0..* 1

Find()

Slet()

1

FindOrdrerAfgivetAfKunde()

0..*

Ordrelinie

antal

0..*

1

Vare

varenummer

pris

0..* 1

VareKartotek

Add()

Find()

Del 1: Model

Opgave 1) Klasserne Kunde og Vare

I første omgang skal vi realisere klasserne Kunde og Vare.

På klassen Kunde skal tilgangen til attributterne styres vha. properties. Navne-attributten er

read/write og kundenummeret er read-only. Constructoren skal tage begge attributter som

parameter.

På klassen Vare skal tilgangen til attributterne ligeledes styres vha. properties. Pris-attributten er

read/write og varenummeret er read-only. Constructoren skal igen tage begge attributter som

parameter.

1


NOEA/IT: Programmeringsteknologi: C#/.NET FEN 2008-09-15

Opgave 2) Klassen OrdreLinie

Realiser klassen OrdreLinie, idet det besluttes at realisere associeringen fra OrdreLinie til Vare

ved en reference (placeret i OrdreLinie-klassen – som det ses af klassediagrammet).

Opgave 3) Klassen Ordre

Klassen Ordre skal nu realiseres. Associeringen fra Ordre til Kunde realiseres ved en reference.

Samtidigt realiseres aggregeringen af OrdreLinier i klassen Ordre ved hjælp af en liste. Metoden

add i Ordre opretter en ny OrdreLinie og tilføjer denne til listen.

Det næste vi vil realisere, er en metode getTotal(), som placeres i klassen Ordre. Denne metode

skal for en given ordre returnere den totale pris af alle de varer, som indgår i ordren.

Opgave 4) Klassen OrdreBog.

Klassen OrdreBog skal indeholde alle ordrer i systemet. Vælg en passende Collection-klasse til

ordrebogen.

I klassen OrdreBog skal du desuden realisere følgende metoder:

Metoden add modtager en ordre og tilføjer den til ordrebogen.

Metoden find modtager et ordrenummer og returnerer ordren med det tilsvarende ordrenummer.

Hvis en sådan ordre ikke findes, returneres null.

Metoden slet modtager et ordrenummer og sletter ordren med det tilsvarende ordrenummer, hvis en

sådan ordre faktisk findes i ordrebogen.

Metoden findOrdrerAfgivetAfKunde modtager et kundenummer knr som parameter og returnerer en

liste indeholdende alle de ordrer, som kunden med kundenummeret knr har afgivet.

Opgave 5) Klasserne KundeKartotek og VareKartotek.

Realisér disse klasser vha. passende Collections.

Del 2: Controller

Til at styre vores adgang til systemet vi lavede i del 1 vil vi implementere en klasse

OrdreController. Klassen skal have referencer til et objekt af hver af typerne KundeKartotek,

VareKartotek og OrdreBog. Klassen kan se således ud:

public class OrdreController

{

KundeKartotek kunder;

VareKartotek varer;

OrdreBog ordrer;

public OrdreController()

{

kunder = new KundeKartotek();

varer = new VareKartotek();

ordrer = new OrdreBog();

//Vi snyder lidt og opretter 10 varer med varenumrene 1-10

//og 5 kunder med kundenumrene 1-5

for (int i=1; i


NOEA/IT: Programmeringsteknologi: C#/.NET FEN 2008-09-15

}

}

}

kunder.Add(new Kunde(1,"Jens"));

kunder.Add(new Kunde(2,"Peter"));

kunder.Add(new Kunde(3,"Johannes"));

kunder.Add(new Kunde(4,"Pia"));

kunder.Add(new Kunde(5,"Lene"));

public void OpretOrdre(int knr, int onr)

{

//Her skal du kode

}

public void tilfojOrdrelinie(int onr, int vnr, int antal)

{

//Her skal du kode

}

public ArrayList FindKundesOrdrer(int knr)

{

return ordrer.FindKundesOrdrer(knr);

}

Implementér metoden opretOrdre() i klassen OrdreKontroller. Denne metode modtager et

kundenummer knr og et ordrenummer onr som parameter, og opretter en ny ordre fra kunden med

kundenummer knr. Den nye ordres ordrenummer er onr.

Implementér desuden en metode tilfojOrdreLinie() i klassen OrdreKontroller. Denne metode

modtager et ordrenummer onr, et varenummer vnr og et antal a, og sørger for, at ordren med

ordrenummer onr tilføjes en ny ordrelinie. Den nye ordrelinie skal fortælle, at ordren er udvidet

med a eksemplarer af varen med varenummeret vnr.

Del 3: Udvidelse af modellen

Efter et stykke tid ønsker firmaet at skelne mellem privatkunder og erhvervskunder. For

erhvervskunder skal der registreres en rabatprocent, som anvendes ved prisberegning.

Fortag de fornødne ændringer i modellen.

3

More magazines by this user
Similar magazines