Presentation laddar. Vänta.

Presentation laddar. Vänta.

Objektorientering.

Liknande presentationer


En presentation över ämnet: "Objektorientering."— Presentationens avskrift:

1 Objektorientering

2 Inledning Objektorienterad programmering är inte bara tillägg till programmeringsspråk, det är snarare ett nytt sätt att tänka Objektorienterad programmering ser på ett program som en grupp av agenter, kallade objekt. Varje objekt har ansvaret för en specifik uppgift. Ett objekt är en inkapsling av tillstånd (attribut) och beteenden (operationer), tillsammans kallade egenskaper. Beteendet för objekt bestäms av objektets klass. Ett objekt visar sitt beteende genom att utföra en metod (jfr med funktion eller procedur) som svar på ett meddelande. Objekt och klasser utvidgar tankarna kring ”abstrakta datatyper” (ADT), genom möjligheterna till arv.

3 Objektorientering En grundteknik Definition:
kan byggas på och anpassas kan appliceras på olika slags system kan användas vid olika teknikområden konsistent modellspråk i alla utvecklingsfaser Definition: Objektorientering är ett grundläggande sätt att betrakta systemutveckling som ändrar den tidigare uppdelningen i data och funktioner till en enhetlig modell i objekt (innehållande både data och funktioner), relationer mellan objekt och samarbete mellan objekt

4 En objektorienterad process
är iterativ analys, design, konstruktion och test upprepade gånger (analys och design bör ta minst 1/3 av tiden) högre och högre detaljeringsgrad för varje iteration är inkrementell någonting synligt levereras efter varje iteration en delfunktion/komponent utvecklas (iterativt) systemet byggs på vartefter med fler delfunktioner/komponenter

5 Iterativ och inkrementell utveckling
Design Utveckling Implementation Analys Förstudie Inkrement

6 Vattenfall eller iterationer
Planning Requirements Analysis Design Implementation Test Deployment Evaluation Programmering! Observera att programmeringen vanligvis blir mer ”integrerad” på detta sätt med den övriga systemutvecklingen när vi använder OO! Dvs, lite kodning i varje varv, för det som kommit fram i analys och design i varvet…

7 Analys och design Den viktigaste delen i objektorienterad systemutveckling är analys och design Analys undersökning av problem och behov ”do the right thing” Design Konceptuell lösning för att uppfylla behovet ”do the thing right” OBS! Lösningen är inte detsamma som lösningens implementation!

8 Analys och design Objektorienterad analys Objektorienterad design
Hitta och beskriv objekt, klasser och andra koncept Objektorienterad design Detaljutforma klasserna för systemet, samt scheman för hur deras objekt samverkar Därefter börjar kodningen…

9 En objektorienterad modell
Hela systemet består av ett antal objekt Objekten i modellen svarar mot konkreta företeelser i användarens värld fastighetsobjekt telefonobjekt skrivarobjekt bilobjekt

10 Ett objekt per förekomst

11 Klasser och objekt Ett objekt är en instans av en klass. Hur ett objekt tillhandahåller en specifik tjänst (operation) definieras av vilken klass objektet är en instans av. Samtliga instanser av en specifik klass har samma metod (kod) för en specifik tjänst (operation), men för sina egna data.

12 Meddelandesändning mellan objekt
a:ClassOne b:ClassTwo svar := beräknaSumma(a,b) : int [svar] Vad är summan av 2 plus 3? 5! class ClassTwo { int beräknaSumma(int a, int b) return a + b; }

13 Meddelandesändning mellan objekt
a:Person b:Person svar := FrågaNamn() : string [svar] Vad heter Du? Nisse! class Person { string namn; string FrågaNamn() return namn; }

14 Språkgenerationer 1950 1960 1970 1980 1990 2000 2010 Naturliga språk
4GL Objektorienterade språk Högnivåspråk Assembler Maskinkod 1950 1960 1970 1980 1990 2000 2010 FORTRAN RPG PROLOG VB VB ALGOL APL MODULA-2 VB.NET COBOL LOGO MODULA-3 LISP FORTH OBERON PILOT PASCAL EIFFEL BASIC C C++ JAVA C# ADA PL/1 SMALLTALK SIMULA

15 Objekt: data och metoder
Dataorienterad programmering Funktionsorienterad programmering Data Metoder Objekt Objektorienterad programmering Data Metoder

16 Vad är objekt? Data Metoder (algoritmer) Bil class Bil { string regnr;
float liter; float km; } static float förbrukning (Bil b2) { return b2.liter/b2.km*10; } Bil regnr liter km förbrukning()

17 Objektorientering En klass
class Bil { string regnr; float liter; float km; } En klass är en “ritning” eller en “mall” som beskriver objekten. Klassen reserverar inget minnesutrymme för data utan varje objekt har sitt eget datautrymme. float förbrukning () { return liter/km*10; } Ett objekt innehåller variabler och metoder. Värdet av variablerna definierar objektets tillstånd och metoderna definierar objektets beteende. ... Bil b2 = new Bil(); En klass beskrivs i programkoden medan objekten skapas och existerar under exekveringen av programmet.

18 Objektet Bil regnr:string liter:float km:float forbrukning():float
minBil:Bil Privat minne (för att lagra data) regnr = ”NHG 084” liter = 2977 km = 61267 Instruktioner (för att bearbeta data) float forbrukning () { return liter/km*10); } class BilTest { public static void Main (string[] args) { Bil minBil = new Bil(); minBil.regnr = ”NHG084”; minBil.liter = 2977; minBil.km = 61267; System.Console.WriteLine(minBil.forbrukning()); }

19 Varje objekt har en livscykel
Bil minBil = new Bil(“NHG084”); Vi instantierar ett objekt… Bil (string r) { regnr = r; } Konstruktorn körs… …och objektet är skapat. Därefter kan objektet förändras… …och tas bort… Bil minBil = null; …fast i Java eller C# tas objektet verkligen bort först när sopgubben (GC) varit framme (I C++ måste du själv agera sophanterare)…

20 Meddelanden i ett objektorienterat system
avsändare Nisse:Person mottagare meddelande argument minBil.kör (”fort”); ”Metoden” är den kod som exekveras när just ”minBil” får meddelandet ”kör” minBil:Bil operation kör(hastighet)

21 Meddelandesändning primärminnet NisseTest Person Bil Nisse:Person
class Person { Bil minBil = new Bil(); } primärminnet Main( :string[] ) NisseTest void åkTillJobbet () { minBil.kör(”fort”); } class Bil { } Person Bil void kör (string hastighet) { // wrooom... } åkTillJobbet() kör( :string ) class NisseTest { static void Main (string[] args) { Person Nisse = new Person(); } Nisse:Person minBil:Bil Nisse.åkTillJobbet();

22 Jag har dessa variabler
Objektet sett inifrån Varje metod är en sekvens av instruktioner som exekveras som svar på ett meddelande Det finns en metod för varje operation i protokollet Med ”objektets protokoll” avses den samling operationer ett objekt har Endast meddelanden i protokollet får sändas till ett objekt :Dokument Jag har dessa variabler attribut (privat minne) skrivUt() författare() status() Kod för skrivUt() operationer Kod för författare() Kod för status() metoder

23 Kom ihåg att… Börja i rätt ände! Liksom i strukturerad programmering, är det genom att ”lösa problemet” innan kodningen. Analys och Design! Den strukturerade programmeringen kommer igen även i objektorienterad programmering. Vad skall den enskilda metoden i en klass göra? Löses med: Selektion Iteration Sekvens (som kan vara ett meddelande till ett annat objekt)


Ladda ner ppt "Objektorientering."

Liknande presentationer


Google-annonser