Presentation laddar. Vänta.

Presentation laddar. Vänta.

Objektorienterad Modellering Programmering och Analys Objektorientering grunder  Vad är OO? – Programspråk?, paradigm?, gränssnitt?, struktur?, eller?

Liknande presentationer


En presentation över ämnet: "Objektorienterad Modellering Programmering och Analys Objektorientering grunder  Vad är OO? – Programspråk?, paradigm?, gränssnitt?, struktur?, eller?"— Presentationens avskrift:

1 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-1999 Föreläsning 2

2 - 2 - © Björn Eiderbäck 1999 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

3 - 3 - © Björn Eiderbäck  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.

4 - 4 - © Björn Eiderbäck 1999 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

5 - 5 - © Björn Eiderbäck 1999 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

6 - 6 - © Björn Eiderbäck 1999 Skicka meddelanden  Meddelandesändning –Vi aktiverar ett objekt genom att skicka meddelanden till det myAccount.balance(); yourAccount.balance(); x = 100; myAccount.withdraw(x ); yourAccount.deposit(x); yourAccount.deposit(500); myAccount.deposit(300) ; myAccount.transfer(100, yourAccount); Vissa meddelanden kan ha argument

7 - 7 - © Björn Eiderbäck 1999 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.

8 - 8 - © Björn Eiderbäck 1999 …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 FigurGrupp Figur rita *

9 - 9 - © Björn Eiderbäck 1999 …sammansatt objekt  Ett annat exempel är en bild som består av linjer, rektanglar eller andra bilder bild linjebildrektangel bild rektangel linje

10 © Björn Eiderbäck 1999 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

11 © Björn Eiderbäck 1999 Klasser ordnas i hierarkier superklass subklass superklass subklass superklass subklasserna ärver från sina superklasser

12 © Björn Eiderbäck 1999 Metodbindning  Metod söks först i mottagarens klass därefter i superklasser airplane = new Airplane(); airplane.start(); 1: sök i klassen 2: sök i superklassen 3: fortsätt i superklassens superklass Hittas ingen metod i rotklassen så genereras ett felavbrott!

13 © Björn Eiderbäck 1999 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')

14 © Björn Eiderbäck 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

15 © Björn Eiderbäck 1999 Subklasser kan skriva över metoder Försök att hitta klasser genom att abstrahera gemensamt beteende och ordna dem hierarkiskt genom att låta klasser “som är” (eng. is-a) av viss “underordnad” typ bli subklasser. Exempel: Kvadrat är-en rektangel. Cirkel är-en ellips.

16 © Björn Eiderbäck 1999 Polymorfi och överskrivning  Olika klasser kan ha metoder med samma namn, s.k. polymorfi r1 = new Rectangle(); // Instansiera klassen Rectangle c1 = 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! */

17 © Björn Eiderbäck 1999 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.

18 © Björn Eiderbäck 1999 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

19 © Björn Eiderbäck  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

20 © Björn Eiderbäck 1999 Sekvensdiagram  Scenarier brukar beskrivas med sekvensdiagram och andra interaktionsdiagram PellePiteåpostenUmeåpostenOlle posta sortera transportera sortera dela ut

21 © Björn Eiderbäck 1999 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

22 © Björn Eiderbäck 1999 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

23 © Björn Eiderbäck 1999 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

24 © Björn Eiderbäck 1999 …  Ett blankt CRC-kort Klassnamn Ansvar”Samarbetspartners”

25 © Björn Eiderbäck 1999 CRC: Exempel  Grafiskt objekt som har en metod för att rita "sin" figur och ett delobjekt som också skall ritas ut GrafisktObjekt 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

26 © Björn Eiderbäck 1999 Personregister Hanterar ett register av personer Personer kan läggas in eller tas bort Kan sortera registret efter namn, födelsenummer respektive adress Person Hanterar information om en person: namn, adress, telefon, födelsenummer Person superklasser: Object subklasser: Student Hanterar och kursstatus Student superklasser: Person subklasser:

27 © Björn Eiderbäck 1999 CRC: Publicist och prenumerant Publicist Håller intressant information/data Meddelar prenumeranter om informationen ändras Prenumerant Prenumererar på intressanta förändringar hos en eller flera publicister Implementerar en strategi för att ta hand om meddelanden om förändringar från publicisten Publicist

28 © Björn Eiderbäck 1999 "Klassiska" MVC Vy Visualisera modellen Transformera koordinater Kontroll Modell Problemrelaterad information Skicka ut meddelanden om förändringar Kontroll Tolka inmatning från användaren Fördela kontroll Vy Modell


Ladda ner ppt "Objektorienterad Modellering Programmering och Analys Objektorientering grunder  Vad är OO? – Programspråk?, paradigm?, gränssnitt?, struktur?, eller?"

Liknande presentationer


Google-annonser