Obligatorisk SD-opgave s. Obligatorisk opgave i objektorienteret analyse og design Løs følgende, som en indviduel opgave. I må gerne samarbejde i grupper, men alle har ansvar for at udfærdige sin egen aflevering. Håndskrevne afleveringer er ok, hvis man ikke har lyst til at tegne og forklare på computer. Firmaet Bladhuset udgiver forskellige blade og tidsskrifter. Teknologien til deres nuværende abonnentsystem er forældet, hvorfor der skal laves et nyt. Bladhuset har en salgskonsulent, som varetager de fleste opgaver i systemet, herunder registrering af nye blade/tidsskrifter, kundekontakt, abonnementer og afgivelse af tilbud. Der er disse Use-cases: Udgivelse af nyt blad (brief) Når Bladhuset har valgt at udgive et nyt blad eller tidsskrift, registrerer salgskonsulenten det i systemet med angivelse af navn, udkommelsesfrekvens ( gang om ugen, gang pr måned etc.) og pris pr. blad. Modtag abonnements-tegning (brief) Når salgskonsulenten modtager en tegning af et abonnement på et blad/tidskrift fra en kunde pr. telefon, post eller mail, skal det registreres i systemet. Først undersøges det, om kunden findes i systemet i forvejen, ellers opretter han kunden med navn, adresse, postnr, by, telefonnr og eventuelt e-mail og systemet opretter kunden med et kundenummer. Derefter registrerer salgskonsulenten abonnementet på kunden med oplysninger om det er et elektronisk eller almindeligt abonnement, betalingsform (giro eller PBS) samt evt. rabatprocent, hvis abonnementet er oprettet i forbindelse med en kampagne. Afgiv tilbud (brief) Det hænder, at bladhuset kører kampagner, hvor der gives speciel-rabat på abonnementer, hvis man har mere end ét abonnement (i de første 6 måneder af 20 kørte de følgende tilbud:. abonnement er til fuld pris, 2. abonnement får 0% rabat, 3. abonnement får 20%, 4. og flere abonnementer får 30%). n opgiver sit kundenummer, og salgskonsulenten slår op i systemet for at se en liste over dennes abonnementer med oplysninger om navn, pris og rabatsats. Salgskonsulenten laver derefter et tilbud på nye rabat-satser på de enkelte abonnementer. Salgskonsulenten registrerer de nye rabat-satser i systemet, hvis kunden siger ok.
Obligatorisk SD-opgave s. 2 Domænemodel (ufuldstændig og forkert): Abonnement Blad Opgaver Følgende indeholder både spørgsmålene og Kims løsninger på spørgsmålene. Spørgsmål a) Find de rigtige multipliciteter i domænemodellen ovenfor. b) Find de attributter der skal være i domænemodellen ud fra de givne use cases. c) Tegn en objekt-model for systemet (eksempler på instantiering af domæne modellen, med praktisk data) Jeg starter med et use case diagram for at få et overblik over interessenter, ud fra use casene (ikke påkrævet i opgaven, men for overblikkets skyld). Use Case Diagram Bladhus Opret bladtype Opret kunde Blad leverandør Salgskonsulent Abonnementstegning Opret tilbud
Obligatorisk SD-opgave s. 3 Domænemodel (besvarer a og b) ID Nr Navn Adresse Postnr By Land Tlf E-mail Har AbonnementsID..* AbonnementsType * Betalingsform RabatType Kan deltage i Abonnement Indeholder BladID BladNavn Udkommelsesfrekvens Pris 0, Kampagne KampagneID KampagneNavn KampagneStartDato KampagneSlutDato RabatType BladNavn Multipliciteterne (relationerne) ses mellem klasserne, med associationer. Attributterne ses i de enkelte klasser (, Abonnement osv.) Forklaring på klasser: En kunde har en eller flere abonnementer. Et abonnement indeholder én bladtype. Et bladtype kan deltage i nul eller én kampagne på det givne tidspunkt. Uddybende -klasse forklaring: Her menes bladtype, ikke antal fysiske blade at bladtypen kan indeholde over tid. Bladet kan kun komme fra ét abonnement, og bladet kan deltage i 0 eller kampagne. Uddybende Abonnement-klasse forklaring: Attributterne "AbonnementType", "Betalingsform", "RabatType" og "Kampagne" skal alle tildeles egen tabel i databasen, hvorfor disse navngives med nummer. I databasen, hvor der f.eks. står "" under betalingsform defineres denne som f.eks. GIRO. Derfor har disse udledte attributter kaldet "integer" (int) og ikke en string, som definerer tekst.
Obligatorisk SD-opgave s. 4 Objektmodel (besvarer c) Følgende viser objektmodellen med detaljer, som giver kunden et bedre overblik, set i forhold til domænemodellen, som kunden bedre kan comitte sig til. Abonnement Abonnement 2 Kampagne Hver 2. gratis 0.05.203 3.05.203 BT (Ill.Videnskab) SYSTEM : Per Pedersen Pederstræde 4 5000 Odense C Danmark Tlf: 6565 6565 Abonnement 3 Abonnement 4 Kampagne 2 2 (BT) 3 (Anders And) 2 Abonnement 5 4 (Bilen) Abonnement 6 Spørgsmål 2 Lav for use-casen Udgivelse af nyt blad: a) SSD, b) Operationskontrakt og c) SD System Sekvens Diagram (besvarer 2a) En SSD er en interaktion mellem bruger og systemet, betragtet som en blackbox (Larman kap.0). Det handler om den ydre opførsel, mens et SD diagram er den indre opførsel. Den ydre opførsel vil se således ud: : SYSTEM Salgskonsulent Opret nyt blad (navn, udkommelsesfrekvens, pris) Returnerer data
Obligatorisk SD-opgave s. 5 Operationskontrakt (besvarer 2b) Følgende viser de krav som stilles til opførslen på use casen "Udgivelse af nyt blad" på et dybere niveau end i selve use casene. De definerer konkret hvad der skal ske i systemet, med udgangspunkt i SSD'en. Operationskontrakt =Opret(bladtypenr) Cross case: Use case: Pre condition: Post condition: Output: none Udgivelse af nyt blad Det ønskede er ikke oprettet er oprettet, som er oprettet, vises i skærmbillede. Sekvens Diagram (besvarer 2c) En SD giver yderligere og dybere indsigt i hvad som skal programmeres. Den laves ud fra operationskontrakten, som er afledt af SSD'eren. Det handler her om den indre opførsel. Den indre opførsel vil se således ud: SD _Opret Bladkartotek Opret Create (fra domænemodel) ny bladliste.add(blad) Spørgsmål 3 Lav for use-casen Modtag abonnements-tegning: a) SSD, b) Operationskontrakt og c) SD
Obligatorisk SD-opgave s. 6 System Sekvens Diagram (besvarer 3a) : SYSTEM Salgskonsulent henvendelse Check (om kunden eksisterer i DB) Svar om kunden eksisterer i DB ALT [ findes] Abonnér Opret Succes Abonnementsregistrering (Type, Betalingsform, Kampagne) Succes Operationskontrakt (besvarer 3b) Operationskontrakt Abonnement=OpretAbn(Abnnr) Cross case: Use case: Pre condition: Post condition: Output: none Modtag abonnements-tegning Vi ved ikke om kunden eksisterer i DB. n abonnerer ikke på. Vi ved nu om kunden eksisterer i DB. Hvis kunden ikke eksisterer i DB oprettes denne i DB. n abonnerer nu på. Skærmbillede viser, at kunden nu er oprettet (hvis ikke kunden er det i forvejen). Skærmbillede viser, at abonnement nu er tildelt kundenummeret.
Obligatorisk SD-opgave s. 7 Sekvens Diagram (besvarer 3c) SD Abonnement_OpretAbn OpretAbn til eksisterende kunde Kartotek Abn List find(kunde) opretabn* nyabn opretblad() Abonnementsliste.Add *n er et objekt vi finder frem fra listen. Spørgsmål 4 Konstruer et designklassediagram (DCD) for systemet med korrekt associationer, attributter og metoder med typer. ID: int Nr: int Navn: string Adresse: string Postnr: int By: string Land: string Tlf: int E-mail: string Har AbnID: int..* AbnType: int Betalingsform: int * RabatType: int Kan deltage i Abonnement makeabn(...) Indeholder BladID: int BladNavn: string Udk.frekvens: int Pris: int create(...) createcustomer(...) 0, Kampagne KampagneID: int KampagneNavn: str KampStart: DateTime() KampSlut: DateTime() RabatType: int BladNavn: string makecampaign(...) endcampaign(...)