Objektorienterad Modellering Programmering och Analys

Slides:



Advertisements
Liknande presentationer
Configured Edititon för Unicenter 3.0 Sättet att snabbt komma igång med Unicenter.
Advertisements

Att förstå anonymiteten (översättning från
Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Utveckla en applikation Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Avlusning Debugger (”avlusare”) Breakpoints Watch.
OOMPA 2000 Föreläsning 4 Utvecklingsprocessen en översikt. Lite om kravspecifikationer. CRC-kort. XP som exempel på lättviktigare process.
Objektorienterad Modellering Programmering och Analys
Relationsdatabasdesign
Föreläsning 7, Kapitel 7 Designa klasser Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
1 Windows programmering (2) Borland C++ Builder 4/5 Modsoft Ab Kent Westerholm.
Objektorienterad Modellering Programmering och Analys
Klasser och objekt.
Systemutvecklingsprocess, hitta objekt och lite Javakodning
5. Grafiska objekt Redan på övning fem av sex! Här handlar det om att rita själv, färglägga och att låta kreativiteten flöda. Något för dig? Ritverktyg.
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Klassarv och inkapsling
OOP Objekt-orienterad programmering
Föreläsning 1.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning.
Föreläsning 4 Python: mera om funktioner och parametrar
Arv.
Inkapsling.
Objektorienterad tänkande
Polymorfism.
Programmeringsteknik K och Media
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Programmering B PHP Lektion 2
Föreläsning 11 Arrayer.
Objektorienterad programmering i Java
Datasamlingar och generiska enheter
Vektorer (klassen Vector) Sortering
Räckvidd och synlighet. Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 22 Synlighet (meddelandesändning) Det.
Objektorienterad Modellering Programmering och Analys
Arv.
1 Joomla © 2009 Stefan Andersson 1. 2 MÅL 2 3 Begrepp Aktör: en användare som interagerar med webbplatsen. I diagrammet till höger finns två aktörer:
Känna till och ha provat metoder och verktyg för processledning
F. Drewes, Inst. f. datavetenskap1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning Singel mot multipelt.
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Högnivå objekt för trådprogrammering: - Trådgrupper (”Thread pools”)‏ - Exekverare (Executor.
1 Föreläsning 7 Repetition Instansvariabler och klassvariabler Klassmetoder och Instansmetoder.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
MV500B: Introduktion till interaktiv ljuddesign David Yanagisawa, Anders-Petter Andersson 4.5 högskolepoängLektion 3.
Jonny Karlsson GRUNDKURS I PROGRAMMERING MED JAVA Föreläsning 9 ( ) INNEHÅLL: -Tabeller av klassobjekt -Användning av Java API specifikationen.
Objektorientering.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
Next previous Innehåll Del 1-trådar Del 2-URLer Del 1: Trådar Föreläsning 8.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
1 Logging and monitoring of TCP traffic in SSH tunnels Masters thesis Anton Persson.
Föreläsning 8 Programmeringsteknik och Matlab DD1312 Klassmetoder Egen modul, Self Metoderna: __str__, __lt__,… Meddelande Arv, Överlagring av metoder,
Introduktion till klasser, objekt och BlueJ Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Föreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
Föreläsning 1. Innehåll Introduktion till objektorientering –OOP (objektorienterad programmering) –Objekt, instanser, klasser C++ –OO i C++ –Standardbibliotek.
Föreläsning 4 Klasser Och Objekt.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
BVForum - en genomgång för revisorer Sören Thuresson.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
Föreläsning 9 Arv kap 8.1 Interface kap 9.2 Grafiska användargränssnitt (GUI) kap 10.
1 Mjukvaru-utveckling av interaktiva system God utveckling av interaktiva system kräver abstrakt funktionell beskrivning noggrann utvecklingsmetod Slutanvändare.
1 Jan Lundström OV’s Hemsida Utbildning Ledare. 2 Jan Lundström OV’s Hemsida Standard Lagrum.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Programmeringsteknik
OOP - teori1 OOP del II– Föreläsning 5 vecka 6. OOP - teori2 Klasser Substantiv i singularis stavat med stor bokstav till exempel Human Dog Account Circle.
Föreläsning 1 Introduktion till kursen. Algoritmer
OOP&M - teori1 OOPM del II– Föreläsning vecka Mer om ärvning.. Abstrakta klasser/metoder Gränssnitt/Interface klasser.
Objektorienterad programmering sid. 1 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Objektorienterad programmering OOP = objektbaserad programmering.
Presentationens avskrift:

Objektorienterad Modellering Programmering och Analys 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 För att beskriva typiska och viktiga aktiviteter CRC-kort Teknik för att beskriva och ta fram objekt, klasser och relationer

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

... Objektorienterat språk Objektorienterad användargränssnitt 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. © 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 © Björn Eiderbäck 1999

Vad är ett objekt? Ett objekt metod Inkapsling Klass instans 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 metod Inkapsling Klass instans myAccount = new Account(); yourAccount = new Account(); © Björn Eiderbäck 1999

Skicka meddelanden Meddelandesändning 300 500 200 600 100 700 Vi aktiverar ett objekt genom att skicka meddelanden till det myAccount.balance(); yourAccount.balance(); Vissa meddelanden kan ha argument yourAccount.deposit(500); myAccount.deposit(300); 300 500 x = 100; myAccount.withdraw(x); yourAccount.deposit(x); 200 600 myAccount.transfer(100, yourAccount); 100 700 © 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. © 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 * © Björn Eiderbäck 1999

…sammansatt objekt Ett annat exempel är bild linje rektangel en bild som består av linjer, rektanglar eller andra bilder bild linje rektangel © 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 © Björn Eiderbäck 1999

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

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

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

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

Sekvensdiagram Scenarier brukar beskrivas med sekvensdiagram och andra interaktionsdiagram Pelle Piteåposten Umeåposten Olle posta sortera transportera sortera dela ut © 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 © 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 © 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 © Björn Eiderbäck 1999

… Ett blankt CRC-kort Klassnamn Ansvar ”Samarbetspartners” © 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 © Björn Eiderbäck 1999

Personregister Person Student Person 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 email och kursstatus Student superklasser: Person subklasser: © Björn Eiderbäck 1999

CRC: Publicist och prenumerant Håller intressant information/data Meddelar prenumeranter om informationen ändras Prenumerant 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 © Björn Eiderbäck 1999

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