Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.1 Destilleret UML Oversættelse fra UML til Java
Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.2 UML Unified Modeling Language er ved at være en industristandard til at give overblik over objekt- orienterede systemer i en kompakt, grafisk, form. Vi vil kun bruge en lille delmængde af UML, primært klassediagrammer.
Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.3 Klasser En klasse beskrives ved en kasse, delt i tre lag triangle b: int c: Color draw() move() erase() Navn Attributter/variable Metoder (overblik)
Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.4 Klasser Det primære formål med et UML diagram er overblik over de væsentlige aspekter af ens model—ikke at beskrivelsen er komplet. Derfor viser man ofte overhovedet ikke variable og metoder: triangle
Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.5 Oversættelse til Java Oversættelsen er simpel i et objekt-orienteret sprog: triangle b: int c: Color draw() move() erase() class triangle … { int b; Color c; … public void draw() { … } … }
Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.6 Abstrakte klasser Abstrakte klasser kan man angive vha. en indskrænkning (constraint): shape {abstract}
Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.7 Relationer Vi vil kun beskæftige os med 2 (3) relationer Associering~ “tilknytning / afhængighed” Aggregering~ “indhold (permanent)” (Komposition~ “(uadskillelig) del-helhed”) Disse angiver en stigende grad af tilknytning
Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.8 Et eksempel Vi skal lave et systemdesign for elektronisk handel med bøger – en virtuel boghandel ala amazon.com. Problembeskrivelse: En kunde præsenteres for de bøger, som boghandlen ligger inde med. Kunden udvælger en bog og lægger den i sin indkøbskurv. Dette gentages til kunden ikke ønsker flere bøger. Derefter betaler kunden for bøgerne i kurven ved kasseapparatet.
Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.9 Find primære objekter Kunde Bog Kasseapparat Boghandel Indkøbskurv
Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.10 Forsimpling KundeBog Kasseapparat Boghandel Indkøbskurv
Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.11 Relationer KundeBog Boghandel Indkøbskurv Nedarvning? Associering? Aggregering?
Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.12 Relationer: Én mulighed KundeBog Boghandel Indkøbskurv * * Associering, 1-1, 1-mange, mange-mange Aggregering, 1-1, 1-mange Komposition, 1-1, 1-mange
Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.13 Roller KundeBog Boghandel Indkøbskurv * * betjener handler i bærer Læses f.eks: En kunde handler i en boghandel. En kunde bærer en indkøbskurv. Osv.
Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.14 Orientering KundeBog Boghandel Indkøbskurv * * betjener handler bærer Orientering (navigability) udtaler sig om ansvar og kendskab (og implementation). En kunde ved hun handler i boghandlen, men boghandlen ved ikke nødvendigvis at kunden er der.
Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.15 Specialisering KundeBog Boghandel Indkøbskurv * * betjener handler bærer TilbudsBog
Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.16 Implementation af relationer Nedarvning/specialisering er direkte understøttet i objektorienterede sprog: Bog TilbudsBog class Book { … } class TilbudsBook extends book { … }
Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.17 Implementation af relationer Associering og aggregering implementeres generelt på samme måde, nemlig ved hjælp af referencer. Orientering angiver, hvilken klasse der ”har” referencen AB class A { // 1-1 relation til B B bRelation; } class B { // Ingen relation til A }
Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.18 Implementation af relationer Tovejs relationer kan implementeres ved at de har referencer til hinanden. Her skal man passe på ved oprettelse, at de faktisk refererer til hinanden AB class A { // Relation til B B bRelation; } class B { // Relation til A A aRelaion; }
Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.19 Implementation af relationer 1-mange relationer implementeres oftest ved hjælp af en collection, typisk Vector eller Dictionary. 1 AB class A { // Relation til B collection som kan indeholde B objekter ; } class B { // No relation til A } * * *
Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.20 Øvelse Hvordan vil du implementere denne her? Hvordan vil du sikre konsistens? AB * *