Objektorienterad konstruktion

Relevanta dokument
Objektorientering. Grunderna i OO

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Objektorienterad analys och design

UML: Exempel. Ett modelleringsspråk. UML: Ansvar. UML: tre huvudanvändningar. Exempel: En klass position storlek. UML Unified Modelling Language

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Objektorientering Klasser

Objektorientering Användning

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Objektorienterad Systemutveckling 1 (7,5 hp)

Arv. Objektorienterad och komponentbaserad programmering

TDDE10 TDDE11, 725G91/2. Objektorienterad programmering i Java, Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Objektorienterad programmering. Grundläggande begrepp

Objektorienterad analys och design

Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.

Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

Föreläsning 15: Repetition DVGA02

Objektorienterad analys och design

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

TDDI82 - Projekt. Christoffer Holm. Institutionen för datavetenskap (IDA)

OOMPA 2D1359 Föreläsning 2

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

Objektorienterad programmering

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

Inkapsling (encapsulation)

Objektorienterad metodik. Programutvecklingsmetodik. Objektmodellen. Varje objekt har en unik identitet

Programutvecklingsmetodik

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Objektorientering Ett av de senaste inneorden i datavärlden. Man baserar uppbyggnaden av ett programsystem på de objekt som ingår i systemet istället

Programmering = modellering

TDP005. Föreläsning 3 - UML. Filip Strömbäck

Imperativ programmering. Föreläsning 4

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

Introduktion till arv

F2: Krav på objektorienterat språk

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

Objektorienterad programmering

Introduktion. Byggstenar TDBA

Mer OOP. Variation i typ. Medlen repetition. Generiska klasser. Gränssnitt - Interface. Mer om klasser Några exempel UML

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

Relationer mellan objekt

Föreläsning 16 Arv. Jan Lönnberg T Grundkurs i programmering

Översikt. Introduktion. Objektorienterad programutveckling UML UML. Analys Design. Klassdiagram Aktivitetsdiagram

Föreläsning om OO, OOA och UML

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

Kursplanering Objektorienterad programmering

Extentamen i 2D1359 Objektorinterad modellering programmering och analys Tisdag den 13 oktober 1998 kl

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Översikt. Introduktion. Objektorienterad programutveckling UML UML. Analys Design. Klassdiagram Aktivitetsdiagram

Konstruktion av klasser med klasser

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Introduktionsmöte Innehåll

Objektorienterad programutveckling i ett nötskal

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

5 Arv och dynamisk bindning FIGUR

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Geografisk information Representation av förändringar i datamängder

Kursens mål. Objektorienterad programmering. Kursupplägg. Tillgodoräknande. Kursbok. Labsalar

Objektorienterad programmering i Java I

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Klasshierarkier - repetition

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15

TDP005 Projekt: objektorienterade system

UML 1(5) Introduktion till Unified Modeling Language. 1 Bakgrund och historik

Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser

UML. Tomas Czarnecki Institutionen för Informationsbehandling Åbo Akademi,FIN Åbo, Finland url:

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets

Datastrukturer och algoritmer

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

DATALOGISK TÄNKANDE OCH PROGRAMMERING CETIS OKTOBER 2017

Föreläsning 8 Programmeringsteknik och Matlab DD1312. Klassmetod. Egen modul

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

OOMPA 2D1359 Föreläsning 8

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Introduktion. Lagom är bäst. OO eller ej? TDP004 Objektorienterad Programmering Fö 7 Objektorienterad design, tips och råd

Teoridel (svaren direkt på lydelsen)

Programmering för språkteknologer II, HT2014. Rum

Kurs-PM fo r HI1027, Objektorienterad programmering, period 1 HT15

Designmönster, introduktion. Vad är det? Varför skall man använda mönster?

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

OOP Objekt-orienterad programmering

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

+Överskådlighet Normalt sätt blir ett program skrivet i det procedurella paradigmet överskådligt. Modifikationer på delproblem kan ske med lätthet.

Transkript:

Analys - Objektorienterad konstruktion Vad är objektorientering?» Ett sätt att angripa programmeringsproblem» Ett sätt att tänka när man programmerar Vad innebär objektorientering?» Att uppmärksamheten riktas mot de objekt som förekommer i problemet Vad är alternativet till objektorientering?» Ofta ett procedur eller funktions-orienterat synsätt» Uppmärksamheten riktas mot vad som ska göras för att lösa problemet De två synsätten Analys - 2 Procedurorienterat Objektorienterat Data och funktioner Bankobjekt Kontoobjekt Kassaobjekt Köobjekt

Analys - 3 Fördelar med objektorientering Uppdelningen i objekt leder till snabbare och säkrare programutveckling. Möjligheterna till återanvändning av kod ökar. Enklare att underhålla och modifiera program. Enklare att bygga riktigt stora programsystem. Enklare att förstå programkoden. Lättare att samarbeta med experter inom problemets område. Den objektorienterad utvecklingens faser Analys - 4 Analys Design Programmering Uppmärksamheten koncentreras mot verkligheten, dvs problemet och dess omgivning. Inga Detaljer! Lösningen anpassas och utvecklas mot datorer och programvaror. Programkod skrivs och testas 2

Analys - 5 Iterativ, stegvis process Analys Analys Design Tid Analys Design Implementation Design Implementation Implementation Analys - 6 ObjektOrienterad Analys, OOA OOA beskriver vad systemet ska göra under idieala förhållanden. OOA bortser från programmeringsspråk, operativsystem osv. OOA är viktig! Kommer man snett i den så finns det risk att allt går fel. OOA får man upprepa flera gånger. 3

Analys - 7 OOA, metodik Kravanalys Domänanalys Klasser Relationer Operationer Attribut och arv Validering och iterering Kravanalys Analys - 8 Syfte, Att kartlägga vad systemet ska göra Resulterar i:» En systemavgränsning» Ett antal användningsfall Aktör Förare Användningsfall Tankar bilen Kör bilen Väljer väg Passagerare 4

Systemavgränsning Analys - 9 Beskriver systemets avgränsning mot sin omgivning Begränsar systemet Svarar ofta på vad systemet inte ska klara av Bör inte vara för detaljerad Exempel på en systemavgränsning» Systemet ska föra en bils körjournal» Systemet ska aktivt analysera bilens kondition under drift och larma vid fel» Systemet skall inte hantera några ekonomiska transaktioner» Systemet är en prototyp» Data ska sparas på fil Användningsfall Analys - 0 Andvändningsfallen beskriver systemet ur användarnas synpunkt Ett användningsfall är ett komplett händelseförlopp initierat av en aktör. Ett användningsfall specificerar interaktionen mellan aktör och system. Varje användningsfall bör genomlysa systemet med avseende på någon viktig aspekt. Så uttömmande och så få användningsfall som möjligt! Användningsfallen bör inte vara för detaljerade. Exempel några olika användningsfall» En förare tankar bilen» En förare kör bilen» En passagerare väljer väg» Körjournalen larmar om onormal bränsleförbrukning 5

Domänanalys Analys - Syftet med domänanalys är att skapa en modell av systemet genom att definiera de för systemet nödvändiga klasserna och deras: relationer till varandra operationer attribut generaliseringar De fem stegen Analys - 2 Välj lämpliga klasser Relationer mellan objekt Viktigare operationer Attribut och generaliseringar Validering och iterering 6

Välj lämpliga klasser Analys - 3 Hitta kandidater till klasser» Leta efter substantiv i problembeskrivningen!» Vilka fysiska objekt finns inom problemområdet?» Finns det några abstrakta begrepp inom problemområdet? Välja ut klasser, sortera bort:» Överflödiga klasser» Onödiga klasser» Otydliga klasser» Klasser som skulle fungera bättre som attribut» Klasser som skulle fungera bättre som operationer» Klasser som svarar mot en roll, dvs. bör vara objekt» Klasser som svarar mot implementeringsdetaljer Analys - 4 Specifikation av klasserna Klassnamn: Journal Beskrivning: Journal är ett register över körningar och underhåll Klassnamn: Bil Beskrivning: Beskriver en bil och de komponenter den består av Klassnamn: Körning Beskrivning: Beskriver en körning Klassnamn: Underhåll Beskrivning: Beskriver en underhållsåtgärd 7

Analys - 5 Relationer mellan klasser Association» En association mellan två klasser innebär en koppling mellan dessa klasser.» Klasserna känner till varandra.» Klasserna Bil och Journal känner till varandra. Generalisering» Beskriver förhållandet att en klass är en precisering av en annan mer generell klass» En klass är en precisering av en annan klass» Klassen Bil är en precisering av klassen Fordon Klassdiagram enligt UML Analys - 6 Generalisering Fordon Klass Kardinalitet Cykel Bil Journal 0..* Notering Klass Association 8

Viktigare operationer Analys - 7 Systemets objekt samarbetar för att utföra systemets uppgifter. Vid samarbetet anropar objekten varandras metoder. En metod är en operation som är specifik för objektet När objekt A anropar en av objekt B ;s metoder så säger man att A sänder ett meddelande till B. Genom att analysera ett användningsfall med hjälp av ett interaktionsdiagram så kan det vara möjligt att hitta viktigare operationer Interaktionsdiagram, enligt UML Analys - 8 listan:journal bilen:bil motorn:motor motorkondition() mätcykel(resultat) registrera(resultat) larma(bränsle) 9

Klasser som associerar till sig själva Analys - 9 Klassdiagram Interaktionsdiagram Gata Andersson:Granne Svensson:Granne lånargräsklipparen() klippergräset() 0 Granne -2 lämnartillbakaklipparen() -2 Viktigare Attribut Analys - 20 Ett attribut beskriver någon egenskap hos klassen Den egenskaper som beskrivs av attribut är sådana som inte motiverar nya klasser Ofta kan man finna attribut bland de ratade klasskandidaterna

Generalisering Analys - 2 En klass kan ärva både attribut och operationer från en annan klass Ett arv kan medföra både en specialisering och utökning av den ärvda klassen Den klass som ärver brukar kallas härledd klass eller subklass Den ärvda klassen brukar kallas basklass eller superklass Att gå uppåt i en arvshierarki innebär oftast ökad generalisering Olika typer av relationer Analys - 22 Beroende» Beroende beskriver ett beroende mellan två olika klasser. Beroendet beskriver att den ena klassen är beroende den andra klassen. En bil är beroende av vägytans jämnhet. Association» En association kan preciseras som en aggregation eller komposition» En aggregation beskriver att ett objekt av en klass har eller använder objekt från en annan klass. Skolan har många studenter.» En komposition beskriver att ett objekt av en klass består av objekt av en annan klass. Ett hus består av rum. Generalisering» Generalisering beskriver att en klass ärver operationer och attribut från en annan klass. En student är en person

Klassdiagram med attribut och operationer, enligt UML Analys - 23 Generalisering Fordon km getkm( ) setkm( ) Attribut Operationer Komposition Cykel Bil årsmodell motorkondition( )..* Journal registrera( ) Beroende Aggregation..* Vägyta Notering Validering och iterering Analys - 24 Kontrollera att samtliga andvändningsfall kan utföras Kontrollera att alla utdata kan genereras När är det klart ALDRIG, men så fort som ett eller flera användningsfall validerats så kan man gå vidare till design Några råd» Gör det enkelt, undvik onödigt komplicerade lösningar» Tillämpa den iterativa inkremetella arbetssättet, analys, design, programmering och börja om igen...

Sammanfattning Analys - 25 När Analysen är klar så har vi:» Identifierat klasser och relationer mellan dem» Identifierat de attribut och operationer som behövs för att klara systemets uppgift Följande dockument är producerade» Systemavgränsning» Användningsfall» Specifikation av klasser» Klassdiagram» Interaktionsdiagram för de mest komplicerade användningsfallen