objektorienterad modellering programmering och analys
DESCRIPTION
OOMPA-1999 Föreläsning 2. Objektorienterad Modellering Programmering och Analys. Objektorientering grunder Vad är OO? Programspråk?, paradigm?, gränssnitt?, struktur?, eller? Termer och fundament Objekt, klass, hierarki, arv, inkapsling, polymorfi, meddelande, metod, instans Scenarier - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/1.jpg)
Objektorienterad Modellering Programmering och Analys
Objektorientering grunder
Vad är OO?– Programspråk?, paradigm?, gränssnitt?, struktur?, eller?
Termer och fundament– Objekt, klass, hierarki, arv, inkapsling, polymorfi, meddelande, metod, instans
Scenarier– För att beskriva typiska och viktiga aktiviteter
CRC-kort– Teknik för att beskriva och ta fram objekt, klasser och relationer
OOMPA-1999Föreläsning 2
![Page 2: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/2.jpg)
© Björn Eiderbäck 1999
- 2 -
Vad menas med att vara objektorienterad?
Svaret beror på om frågan avser programspråk, användargränssnitt, en tillämpning, en databas eller en analys och designmetod
Kategori "Definition"Vad är det byggtmed?
C++, Smalltalk, Java. Gränssnittsbyggare. Kodgenerator.Återanvändbara komponenter
Hur arbetar det? Frågande snarare än berättande. Identifierande av enheter ochsändande av meddelanden.
Vad behandlar det? Abstraktioner som modellerar ett problem.Hur är detstrukturerat?
Moduler. Grundenheterna enkla att integrera. Generella beskrivningarav klasser av ting. Generalisering och specialisering, inkapsling,polymorfi, arv.
Vad mer kan mangöra med det?
Systemet kan utvidgas med ändringar som propagerar ut översystemet utan att dom behöver dupliceras eller "förstöra" ickerelaterade delar
![Page 3: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/3.jpg)
© Björn Eiderbäck 1999
- 3 -
...
Objektorienterat språk– Baseras på inkapsling, polymorfi och arv
Objektorienterad användargränssnitt– Delarna i gränssnittet är objekt/komponenter
Objektorienterad tillämpning eller verktyg– Ändringsbara, återanvändbara och utvidgbara komponenter
Objektorienterad databas– Representerar, lagrar och återskapar objektmodeller
Objektorienterad analys och design– Består av tekniker att hitta objekt, för att strukturera
relationer, eller hantera processen att skapa objekt.
![Page 4: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/4.jpg)
© Björn Eiderbäck 1999
- 4 -
Varför objektorientering?
Separerar gränssnitt från implementation Avbildar världen på ett enkelt och naturligt
sätt Objekt förbereder system för förändring Objekt tillåter att (bara) delar av systemet
fungerar– Andra delar kan byggas klart senare
Objekt är naturliga att återanvända
![Page 5: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/5.jpg)
© Björn Eiderbäck 1999
- 5 -
Vad är ett objekt?
Ett objekt– En beskrivning av beteende– Har ett väldefinierat gränssnitt som specificerar
beteendet oberoende av implementationen. Andra objekt kan interagera med objektet via det givna gränssnittet.
– Implementationen beskriver hur objektet skall reagera– Ett objekt består av
privata delar, dolda och ej åtkomliga av andra objekt publika delar, som är åtkomliga för andra objekt
– Ett objekt instansieras från en klass
myAccount = new Account();
yourAccount = new Account();
Inkapsling
metod
instans
Klass
![Page 6: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/6.jpg)
© Björn Eiderbäck 1999
- 6 -
Skicka meddelanden
Meddelandesändning– Vi aktiverar ett objekt genom att skicka meddelanden till det
myAccount.balance();
yourAccount.balance();00 00
x = 100;myAccount.withdraw(x);
yourAccount.deposit(x);200200 600600
yourAccount.deposit(500);myAccount.deposit(300);
300300 500500
myAccount.transfer(100, yourAccount);
100100 700700
Vissa meddelanden kan ha argument
![Page 7: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/7.jpg)
© Björn Eiderbäck 1999
- 7 -
Sammansatta objekt och delegering
Objektsammansättning– Objekt kan vara definierade mha andra objekt
en bil bil består av en kaross, en motor, en bensintank, dörrar etc
– dessa objekt kan i sin tur bestå av andra objekt en dörr består av ett handtag, ett fönster, ett lås, osv
– Ett objekt som består av andra objekt kan delegera ansvar till dessa objekt
Bilen delegerar ”ansvaret” för dörrlåsningen till dörren som i sin tur delegerar detta till låset.Vi kan enkelt byta lås (från tex mekaniskt till elektroniskt) utan att ändra varken bil eller dörr.
![Page 8: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/8.jpg)
© Björn Eiderbäck 1999
- 8 -
…delegereing..
Ett PersonRegister delegerar till– ett Dictionary
Meddelandecentral delegerar till– ett Kommunikationsobjekt som delegerar till
ServerSocket och KlientSocket
En Person delegerar till– Namnobjekt och Adressobjekt
En FigurGrupp delegerar utritning till– Figurer
FigurGruppFigurGrupp FigurFigurrita rita *
![Page 9: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/9.jpg)
© Björn Eiderbäck 1999
- 9 -
…sammansatt objekt
Ett annat exempel ären bild som består av linjer, rektanglar eller andra bilder
bild
bild
linje bild rektangel
bild
rektangel
rektangellinje
![Page 10: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/10.jpg)
© Björn Eiderbäck 1999
- 10 -
Vad är en klass?
En klass är en beskrivning av en viss uppsättning av objekts attribut och beteende– attributen kallas för instansvariabler– beteendet beskrivs med hjälp av metoder
Account
deposit(amount)withdraw(amount)transfer(amount, anotherAccount)balance()
balance = balance +amount;
balance = 0
balance = balance – amount;
withdraw(amount);anotherAccount.deposit(amount);
operationer/meddelanden
instansvariabelmed initialvärde
metoder
return balance;
![Page 11: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/11.jpg)
© Björn Eiderbäck 1999
- 11 -
Klasser ordnas i hierarkier
Vehicle
start()stop()move()
LandVehicle AirVehicle
takeOff()land()
Car Train GolfCart Airplane Glider
superklass
supe
rkla
ss
subklas
ssuperklass
subk
lass
superklass
subklassernaärver från sinasuperklasser
![Page 12: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/12.jpg)
© Björn Eiderbäck 1999
- 12 -
Metodbindning
Metod söks först i mottagarens klass därefter i superklasser Vehicle
start()stop()move()
AirVehicle
takeOff()land()
Airplane Glider
airplane = new Airplane();
airplane.start();
1: sök i klassen
2: sök i
superklas
sen
3: f
orts
ätt i
sup
erkl
asse
ns
supe
rkla
ss
Hittas ingen metodi rotklassen så genereras ett felavbrott!
![Page 13: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/13.jpg)
© Björn Eiderbäck 1999
- 13 -
Arvshierarkier
I VisualWorks\Smalltalk hittar vi följande klasshierarki (ett utsnitt)
Object ()Magnitude ()
ArithmeticValue ()Number ()
Fraction ('numerator' 'denominator')Integer ()
LargeInteger ()LargeNegativeInteger ()LargePositiveInteger ()
SmallInteger () Collection ()
SequenceableCollection ()OrderedCollection ('firstIndex' 'lastIndex')
SortedCollection ('sortBlock')
![Page 14: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/14.jpg)
© Björn Eiderbäck 1999
- 14 -
...Arvshierarkier
I Java-2 hittar vi följande klasshierarki (ett utsnitt)java.lang.Object
java.lang.Number
java.lang.Integer
java.math.BigInteger
java.lang.Long
java.lang.Short
java.util.AbstractCollection
java.util.AbstractSet
java.util.TreeSet
java.util.HashSet
![Page 15: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/15.jpg)
© Björn Eiderbäck 1999
- 15 -
Subklasser kan skriva över metoder
Shape
toString() :Stringdraw() : voidmoveBy(distance) : void
position : Point
Rectangle
toString() :Stringdraw() : void
extent : Point
Ellipse
toString() :Stringdraw() : void
extent : Point
Circle
toString() : Stringdraw() : void
return "Jag är en figur!"
//vi gör ingenting som default!
position.translate(distance.x, distance.y);
//vi gör ingenting som default!
return "Jag är en ellips i position " +positon.toString();
primitiveDrawOval(postion, extent);
Square
toString() : Stringdraw() : void
max = Math.max(extent.x, extent.y);primitiveDrawOval(
new Point(max, max));
Försök att hitta klassergenom att abstrahera gemensamt beteendeoch ordna dem hierarkisktgenom att låta klasser“som är” (eng. is-a) avviss “underordnad” typbli subklasser.
Exempel:Kvadrat är-en rektangel.Cirkel är-en ellips.
![Page 16: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/16.jpg)
© Björn Eiderbäck 1999
- 16 -
Polymorfi och överskrivning
Olika klasser kan ha metoder med samma namn, s.k. polymorfir1 = new Rectangle(); // Instansiera klassen Rectanglec1 = new Circle(); // Skapa en instans av klassen Circle
/* Nu skickar vi meddelandet draw till både r1 och c1 */r1.draw();c1.draw();
/* vilket ger olika resultat trots att vi skickar samma meddelande till båda objekten. Mottagaren "avgör" helt enkelt vad som skall hända! */
![Page 17: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/17.jpg)
© Björn Eiderbäck 1999
- 17 -
Design och utveckling
Vilken typ av projekt kan vara avgörande för hur man går tillväga – Programmera i det lilla
kod skapas av en eller få programmerare. En enskild person kan ha överblick och vara insatt i alla delar av projektet.
Huvudproblem (mjukvara): designa och utveckla algoritmer
– Programmera i det stora mjukvaran tas fram av ett stort team. Vissa personer kan
specificera eller designa andra kan koda vissa komponenter, slutintegration/applikationen görs kanske av en tredje grupp, osv. Ingen person har möjlighet att sätta sig in alla delar av projektet.
Huvudproblem (mjukvara): hantera kommunikationen mellan olika delar av projektet.
![Page 18: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/18.jpg)
© Björn Eiderbäck 1999
- 18 -
Arbeta med scenarier
Identifiera viktiga delar av systemet
Beskriv dem med steg-för-steg beskrivningar i vanlig text– beskriver händelseförlopp– börjar och slutar på godtyckligt (/lämpligt) ställe– innefattar objekt, delsystem eller en blandning av dessa– används för att beskriva dynamiken hos systemet– används för att testa framtagna modeller– används för att konstruera modeller– kan användas vid verifiering av system– kan också utgöra basen för dokumentation av systemet
![Page 19: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/19.jpg)
© Björn Eiderbäck 1999
- 19 -
...
Ofta hittar man scenarier genom att utgå från hur användaren skall interagera med systemet– Senare kan man (kanske) hitta delscenarier och beskriva hur
objekten interagerar med varandra
Exempel (Pelle i Piteå skickar post till Olle i Umeå)– Pelle postar brevet i brevlådan i Piteå– Posten sorteras– Brevet transporteras till posten i Umeå– Posten sorteras– Brevet delas ut
![Page 20: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/20.jpg)
© Björn Eiderbäck 1999
- 20 -
Sekvensdiagram
Scenarier brukar beskrivas med sekvensdiagram och andra interaktionsdiagram
Pelle Piteåposten Umeåposten Olleposta
sortera
transporterasortera
dela ut
![Page 21: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/21.jpg)
© Björn Eiderbäck 1999
- 21 -
Dela upp på delkomponenter
Identifiera vad som skall göras och sedan vem som skall göra det
Då man börjar få någorlunda klart för sig vad man skall konstruera är det dags att identifiera komponenter
Komponenterna (systemen) delas sedan upp på delkomponenter (delsystem)
Detta är ofta en brainstormingliknande iterativ process
![Page 22: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/22.jpg)
© Björn Eiderbäck 1999
- 22 -
Tumregler
En komponent skall ha en liten mängd väldefinierat ansvar– Ändringar skall påverka så få som möjligt
En komponent skall interagera så lite som möjligt med andra komponenter– Att minska kopplingen (eng. coupling) mellan olika
komponenter ökar sannolikheten för att ändringar göras med minimal inverkan på andra komponenter
![Page 23: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/23.jpg)
© Björn Eiderbäck 1999
- 23 -
CRC-kort (Class-Responsibility-Collaborators)
Av Cunningham och Beck under mitten av 80-talet.– Togs fram för att lära ut objektorienterad programmering– För att ge komponenter fysisk presentation
Bra vid ”brainstorming”/spånande Process:
– Man skriver ner klasser på kort. Selektera inte nu utan skriv ner alla förslag
– Efter ett tag när man har ett (tillräckligt) antal klasser väljer man ut ”dom bästa”
– Sedan går man över till att identifiera ansvarsområden och beteende för varje klass
– Sedan identifieras samarbete klasser emellan– Man försöker också ordna klasserna hierarkiskt samt identifiera
abstrakta klasser
![Page 24: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/24.jpg)
© Björn Eiderbäck 1999
- 24 -
…
Ett blankt CRC-kort
KlassnamnKlassnamn
AnsvarAnsvar ”Samarbetspartners””Samarbetspartners”
![Page 25: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/25.jpg)
© Björn Eiderbäck 1999
- 25 -
CRC: Exempel
Grafiskt objekt som har en metod för att rita "sin" figur och ett delobjekt som också skall ritas ut
GrafisktObjektGrafisktObjekt
Håller grafisk beskrivning i form av en en metod som beskriver den aktuella presentationen
Skall kunna innehålla ett annat grafiskt objekt med samma API som det själv
Det skall gå att lägga in ett nytt eller ta bort det aktuella grafiska delobjektet
Vid utritning skall det grafiska objektet också se till att delobjektet ritas ut
GrafisktObjekt
![Page 26: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/26.jpg)
© Björn Eiderbäck 1999
- 26 -
PersonregisterPersonregisterHanterar ett register av personer Personer kan läggas in eller tas bortKan sortera registret efter namn, födelsenummer
respektive adress
Person
Hanterar information om en person: namn, adress, telefon, födelsenummer
Personsuperklasser: Objectsubklasser: Student
Personsuperklasser: Objectsubklasser: Student
Hanterar email och kursstatus
Studentsuperklasser: Personsubklasser:
Studentsuperklasser: Personsubklasser:
![Page 27: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/27.jpg)
© Björn Eiderbäck 1999
- 27 -
CRC: Publicist och prenumerant
PublicistPublicistHåller intressant
information/dataMeddelar prenumeranter om
informationen ändras
Prenumerant
PrenumerantPrenumerantPrenumererar på intressanta förändringar hos en
eller flera publicisterImplementerar en strategi för att ta hand om
meddelanden om förändringar från publicisten
Publicist
![Page 28: Objektorienterad Modellering Programmering och Analys](https://reader036.vdocuments.pub/reader036/viewer/2022062518/568141d3550346895dadab67/html5/thumbnails/28.jpg)
© Björn Eiderbäck 1999
- 28 -
"Klassiska" MVCVyVyVisualisera
modellenTransformera
koordinater
KontrollModell
ModellModell
Problemrelaterad informationSkicka ut meddelanden om
förändringar
KontrollKontrollTolka inmatning
från användarenFördela kontroll
VyModell