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

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

TDP005 Projekt: objektorienterade system

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

Objektorientering. Grunderna i OO

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

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

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

Objektorienterad analys och design

Introduktion. Byggstenar TDBA

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

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

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

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

Objektorientering Användning

Objektorientering Klasser

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

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

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

Objektorienterad programutveckling i ett nötskal

Föreläsning 15: Repetition DVGA02

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

Inkapsling (encapsulation)

Objektorienterad analys och design

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

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

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

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

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

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

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

Programutvecklingsmetodik

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

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

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

Objektorienterad programmering. Grundläggande begrepp

Objektorienterad konstruktion

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

Unified Modeling Language UML

Begreppsmodellering i UML

Begreppsmodellering i UML

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

OOMPA 2D1359 Föreläsning 2

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

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

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

Objektorienterad programmering, allmänt

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

Objektorienterad Programmering DAT043. Föreläsning 10 13/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

Imperativ programmering. Föreläsning 4

Projektkaos. Chaos-rapporten. 34% av projekten avslutades i tid och enligt budget % misslyckades!

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

RUP - Rational Unified Process

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

Klasshierarkier - repetition

Unified Modeling Language UML

Objektorienterad Systemutveckling 1 (7,5 hp)

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

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

TDDD78 Objektorientering i Java, del 2

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

Introduktion till arv

Konceptuell modellering. Formalisering, automatisering och effektivisering

Symptom på problemen vid programvaruutveckling

Objektorienterad Programmering (TDDC77)

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

Arv. Objektorienterad och komponentbaserad programmering

Objektorienterad Programmering (TDDC77)

Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts.

Objektorienterad programmering

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

Konstruktion av klasser med klasser

Programmering = modellering

Tentamen i Objektorienterad modellering och diskreta strukturer

Föreläsning 9: Arv och UML

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

Föreläsning 8 2EMHNWRULHQWHUDG5HDOWLGVSURJUDPPHULQJ UML O2P 2000

Objektorienterad systemutveckling i ett nötskal

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

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Utvecklingsmetoder och processer. UML och OCTUPUS en kort introduktion

RUP Rational Unified Process. 17 november 2004

Arv (Inheritance) Multipelt arv finns i verkligheten. Överskuggning, metodbindning. Läsanvisning: ! Arv! Object, instanceof! Relationer!

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

(Data)Modellering. nikos dimitrakas rum 2423

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

Objektorienterad Programmering (TDDC77)

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

Arkitektur Michael Åhs

Konceptuell modellering

Laboration 1 - Grunderna för OOP i Java

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Tentamen i Objektorienterad modellering och diskreta strukturer

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

HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN)

UML: konceptuell modell. 2203$' ' ) UHOlVQLQJ. Innehåll UML. Strukturella saker UML. Olika typer av diagram Att läsa.

Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... }

Transkript:

Översikt Introduktion UML Objektorienterad programutveckling Analys Design UML Klassdiagram Aktivitetsdiagram

Modellering Modellering är ett medel för att hantera komplexitet Bygger en abstraktion av verkligheten Abstraktioner är förenklingar: Ignorera irrelevanta detaljer Representera relevanta detaljer Vad som är relevant eller inte beror på syftet med modellen

UML Unified Modeling Language Tre objektorienterade notationer som konvergerar mot en Grady Booch (Booch) Ivar Jacobson (OOSE) James Rumbaugh (OMT)

UML Ett verktyg för att uttrycka idéer Nyutvecklare, Framtida utvecklare/underhåll, Kunden, Användarna Kommunicera och utvärdera design Kan tänka på design innan kodning Ger högnivådokumentation En notation, inte en metod Har blivit världsstandard Stöds av flera metoder/verktyg Rational ROSE (kommersiell från Rational/IBM) Together/J (kommersiell från TogetherSoft/Borland) Object Plant (Shareware för Mac) ArgoUML (Open Source från USC)

UML Baserat på objektorienterade principer och begrepp Uttrycker objektorienterade designer visuellt Klasser och objekt Inkapsling och abstraktion Programspråksoberoende Kombinerar flera visuella specifikationstekniker Semi-formellt Definierad syntax men ingen formell semantik

UML 2.0 Strukturdiagram Klassdiagram Component diagrams Component structure diagrams Deployment diagrams Object diagrams Interaktionsdiagram Sekvensdiagram Communication diagrams Interaction overview diagram Timing diagrams Package diagrams Beteendediagram Aktivitetsdiagram Användningsfalls-diagr am State machine diagrams

Vanliga diagram Användningsfall (Use case) Beskriver det funktionella beteendet sett ur ett användarperspektiv En funktion som är synlig för användaren Uppnår ett distinkt mål för användaren Klassdiagram Beskriver den statiska strukturen hos systemet: Objekt, attribut, associationer och subtypning Associationer representerar relationer mellan instanser av klasser Subtyper representerar specialiseringar och generaliseringar Sekvensdiagram Beskriver det dynamiska beteendet mellan aktörer och systemet och mellan systemets objekt Aktivitetsdiagram Beskriver hur arbetsgång, dataflöde och logik hänger ihop

Användningsfall (Use case) Paket Enkel klocka Aktör Läsa tiden Klockanvändare Ställa tiden Klockreparatör Användningsfall Byta batteri

Klassdiagram Klass Association SimpleWatch 1 1 1 1 Multiplicitet 2 1 2 1 PushButton LCDDisplay Battery Time push() release() Operationer isblinking : bool blinkseconds() blinkminutes() blinkhours() stopblinking() refresh() charge : float load() Attribut now()

Sekvensdiagram Objekt Klockanvändare : SimpleWatch : LCDDisplay : Time pressbutton1() pressbutton1() blinkhours() blinkminutes() pressbutton1() pressbutton1&2() incrementminutes() refresh() commitnewtime() stopblinking() Aktivering Meddelande

Aktivitetsdiagram Start Ställ klocka [för sakta] [för fort] Öka Minska slå ihop Slut

Objektorienterad programutveckling Objektorienterad analys Användningsfall Klassdiagram, interaktionsdiagram Objektorienterad design Utnyttjar diagrammen från den objektorienterade analysen Förfinar och modifierar klasserna. Ev. nya klasser Detaljerade beskrivningar av systemet Iterativ process Analysen modellerar Designen konstruerar

Objektdesign, repetition Problemet och lösningen organiseras som en samling av diskreta objekt, inkluderande både datastruktur och beteende Karaktäristika Identitet hos enskilda objekt Abstraktion för att förstå problemet Klassificering av grupper av objekt med gemensamma attribut och beteende Inkapsling för att dölja implementationsdetaljer Arv som tillåter att attribut delas mellan snarlika objekt Polymorfism så att objekt kan ha olika beteende Persistens så att objektets namn, tillstånd och beteende består över tid och rum

Aktiviteter objektdesign 1. Finn objekten 2. Klassificera objekten 3. Beskriv relationer och händelser 4. Gruppera klasser Gruppera klasser i delsystem 1. Identifiera och beskriv användningsfall och utför scenarier för att verifiera (del)systemet Kan leda till att nya objekt/klasser, samarbetspartners och relationer upptäcks

1. Finn objekten Kravspecifikationen Talhandlingar Egen brainstorming Användningsfall Generell kunskap och intuition Leta bland vanliga objekttyper Entiteter Persistent information, saker och aktiviteter i världen, datastrukturer Gränsobjekt Interaktionen mellan användaren och systemet Kontrollobjekt Ett kontrollobjekt per användningsfall Ett kontrollobjekt per aktör

Talhandlingar Ordklass Modellkomponent Exempel Substantiv, best, egennamn Objekt Sven, min cykel, leksaken Substantiv, obest Klass Leksak, cykel, kunder Verb Metod Köpa, cykla Vara verb Arv Är en, en sorts Ha verb Aggregation Har en Modala verb Begränsning Måste vara Adjektiv Attribut Grön

2. Klassificera objekt Bestämma vilka klasser som objekten är instanser av Namn. Välj namn med omsorg Ansvar. Operationer som kan utföras på objekt från klassen Samarbetspartners. Vilka andra klasser som klassen samarbetar med Varifrån kommer informationen Till vem skall information levereras Kan vara variabel i objektet eller anrop av metoder i andra objekt

CRC-kort Ansvar Klass Samarbetspartners Class, Responsibilities, Collaborators Klass = namnet på klassen Ansvar = ansvar/syften med klassen Samarbetspartners = de andra klasser som klassen måste samarbeta med Komplement till diagram Enkla att flytta runt, gruppera och ordna Fokuserar på ansvar hos en klass En klass är ingen passiv databehållare

Exempel Enkel klocka Visa tid Ändra tid Byta batteri Användare, LCDDisplay Användare, Reparatör, LCDDisplay, pushbutton Battery, Reparatör

3. Beskriv relationer Finna grupper av klasser som hör ihop, samarbetar eller på annat sätt interagerar Statiska eller dynamiska Arv eller association

UML klassdiagram Tre perspektiv: Konceptuell Fokuserar på begreppen/koncepten i världen Ingen hänsyn till implementationen Specifikation Fokus på objekten som software-abstraktioner Inte bunden till någon specifik implementation Fokuserar på gränssnitten Modellera klassens gränssnitt snarare än implementationen Implementation Fokus på en specifik software-implementation Bundet till en viss teknologi och språk Visar relationen mellan klasser, arkitekturen

Klassdiagram, uppbyggnad Klassobjekt består av tre delar Namn Attribut Klassinformation som kan accessas och möjligen modifieras Operationer Metoder Grundläggande operationer (t.ex. getvalue, putvalue) kan uteslutas

Klassdiagram, exempel Klass PushButton Type Signatur PushButton State : bool push() : void release() : void PushButton State push() release() Operationer Attribut Instans Up : PushButton State = T

Attribut Kan markera vilken synlighet attributen har + public # protected - private ~ package

Relationer Generalisering En klass är subklass till en annan Realisering En klass implementerar ett gränssnitt Association En klass har attribut av annan klass eller tvärtom Inkapsling En klass är deklarerad i en annan (osynlig utåt) Beroende Annan relation som talar om att modifiering i en klass kan påverka den andra. Klassen kan till exempel vara parameter till en metod. (Bör undvikas)

Generalisering En klass ärver eller utvidgar en annan En ofylld triangel med spetsen mot superklassen Hierarkisk relation Subtypen är en specialisering av supertypen Subtypen kan substitueras för supertypen Subtypen ärver gränssnittet Subtypen ärver operationer och attribut

Generaliseringar, exempel Klocka Klocka Digitalklocka Digitalklocka Analog Klocka

Realisering och beroende Realisering: Streckad linje med ofylld triangel mot gränssnittet Beroende: Streckad linje med enkel pilspets. InputStream <<interface>> DataInput DataManipulering DataInputStream

Associationer Relationer mellan klasser En klass innehåller attribut av annan klass Varje association har två roller (en för varje riktning) Man kan ange riktning på en association m.h.a. pil(ar) Rollerna kan namnges Rollerna kan ha begränsade associationer Roller har multiplicitet Ett fixt värde, 1 Godtyckligt många * En mängd värden, 2,4,7 Värden i intervall, 1..5 Kombinationer, 1..*

Exempel roller Person 1 äger 0..* +ägare +ägt djur Husdjur Hund Katt

Aggregation och Composition Aggregation Specialiserad association för del-av (eller har) hierarkier Öppen diamant placerad vid heldelen inte vid delarna Composition Starkare form av aggregation Båda klasserna har normalt samma livscykel Fylld diamant placerad vid heldelen inte vid delarna

Association, aggregation, composition, exempel Fordon 4 1 Bil 1 1 1 Hjul 1 Motor lufttryck pumpa() Chassi

Rekursiv aggregering Program * * Block Sammansatta satser Enkla satser

SDL GameEngine

Aktivitetsdiagram Visar flödet mellan aktiviteter och handlingar kopplade till ett givet objekt i termer av En ingång En utgång Handlingar och aktivitetstillstånd, med iteration (*) Övergångar, kan ha skyddsvillkor (guard conditions) Grenar Sammanslagningar Delningar (Forks) Föreningar (Joins) Bra på parallella aktiviteter

Parallella aktiviteter Start Fork Ställ klocka Ställ minuter Ställ timmar Gren [för sakta] [för fort] [för sakta] [för fort] Öka Minska Öka Minska Sammanslagning Join Slut

Aktivitetsdiagram som visar vilken klass som har ansvar (swimlanes) Lager Start Kundtjänst Kassa Ta emot order Fyll i order Skicka räkning Leverera order Ta emot betalning Avsluta order Slut

Slutord Objektorienterad systemutveckling är en iterativ process Viktigt att identifiera objekten UML innehåller många olika diagram för olika syften Välj de som passar för varje enskilt projekt Använd UML-diagram som verktyg för design och implementation Förfina diagrammen succesivt

Kursplanering v. 47- Vecka 47 Kravspecifikation redan inlämnad, som PDF, via repository! Nu Komma igång! Projekt Nu kör vi! Handledning vid behov. Ni tar ansvar för att kontakta schemalagd assistent när ni behöver hjälp Kodgranskning Tor v. 49 Ni delas upp i grupper (postas på hemsidan) Granska koden för de andra grupperna, skriv rapport Slutdemo Ons v. 51 Spelbart projekt ska visas upp Obligatorisk närvaro, ska kunna svara på frågor Dokumentation Deadline Ons v. 51 (18/12) Reflektionsrapport Fre v. 51 (20/12)