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

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

Objektorienterad programmering. Grundläggande begrepp

Inkapsling (encapsulation)

Föreläsning 15: Repetition DVGA02

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

Objektorienterad programmering

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

Objektorienterad programmering, allmänt

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

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.

Objektorientering. Grunderna i OO

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

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

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

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

Imperativ programmering. Föreläsning 4

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

Objektorienterad programmering

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

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

Arv och klassbibliotek

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

F2: Krav på objektorienterat språk

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

Objektorienterad analys och design

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

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

Objektorientering Användning

Länkade strukturer. (del 2)

Objekt-orienterad programmering och design. DIT953 Niklas Broberg, 2018

DAT043 - föreläsning 8

Objektorienterad Systemutveckling 1 (7,5 hp)

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

TDP005 Projekt: objektorienterade system

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

Föreläsning 10. ADT:er och datastrukturer

Kursplanering Objektorienterad programmering

Objekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016

" «Observable» DataGenerator" betyder att klassen DataGenerator ärver från den abstrakta klassen Observable.

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

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Tommy Färnqvist, IDA, Linköpings universitet

Tentamen i Objektorienterad modellering och design Helsingborg

TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS

Tillämpad Programmering (ID1218) :00-13:00

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

RUP - Rational Unified Process

Objektorienterad Systemutveckling (7,5 hp)

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016

Unified Modeling Language UML

Objektorienterad Programkonstruktion

Föreläsning 9 Innehåll

Objektorientering Klasser

Konstruktion av klasser med klasser

Repetition av OOP- och Javabegrepp

Objektorienterad Programkonstruktion. Föreläsning 9 30 nov 2016

Historik: OOP. Objektorientering. Historik: OOP (forts) En Dum Fråga

Repetition av OOP- och Javabegrepp

Classes och Interfaces, Objects och References, Initialization

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

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

Unified Modeling Language UML

Principles of subclasses. Objekt-orienterad programmering och design Alex Gerdes, 2018

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

Klasshierarkier - repetition

Introduktion till algoritmer - Lektion 3 Matematikgymnasiet, Läsåret Lektion 3

Föreläsning 2 Datastrukturer (DAT037)

Användning av modeller för system/produktutveckling

Datastrukturer och algoritmer

Laboration 2: Designmönster

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

Länkade strukturer, parametriserade typer och undantag

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

SKOLFS. beslutade den XXX 2017.

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

Föreläsning 3. Stack

Arkitektur Michael Åhs

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

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Föreläsning 11. ADT:er och datastrukturer

Objekt-orienterad Programmering och Design. TDA552 Alex Gerdes, HT-2018

Laboration 2: Designmönster

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

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

Föreläsning 3. Stack

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Introduktionsmöte Innehåll

Objektorienterad konstruktion

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Copyright Syntell AB 1

Generisk klass med typparameter Inre klass - ListIterator

EDAA01 Programmeringsteknik - fördjupningskurs

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

Tentamen i Objektorienterad modellering och design Helsingborg

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

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

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

Datastrukturer och algoritmer. Föreläsning 4 Test, Stack och Kö

Transkript:

Målet Mer OOP Mer om klasser Några exempel UML Modularitet Språkligt modulära enheter Få gränssnitt Små gränssnitt Tydliga gränssnitt Dold information Återanvändbarhet Variation i typer Variation i datastrukturer och algoritmer Flera relaterade operationer Operationer används utan kännedom om implementation Gemensamheter i grupper av implementationer Medlen repetition Variation i typ Objekt Klass Attribut Metod Meddelande Inkapsling Arv Polymorfism Statisk dynamisk bindning Överladdning Generiska komponenter Generiska klasser Gränssnitt - Interface Parametriserade klasser/metoder Endast meningfullt i typade språk Kan detta åstadkommas med arv? Kan arv ersättas med generiska klasser? Ada, Algol 68, Eiffel, ML Deklarerar attribut och metoder men implementerar dem inte. Klasser som implementerar ett interface måste implementera allt som deklarerats. Interfacet kan ses som ett kontrakt som garanterar att vissa saker finns i implementerande klasser. 1

Abstrakta klasser Abstrakt (deferred) klass = gränssnitt + del av implementation Gränssnitt statiska samband Implementation dynamiska samband Metoderna kan vara Abstrakta (deferred); eller Ge en standardimplementation Konkreta klasser Implementerar Alla abstrakta metoder Omdefinierar andra metoder där så önskas Kan använda alla metoder som ärvs från abstrakta superklasser Exempel 1: Länkad lista Exempel 1: lösningsförslag Vilka objekt behövs? Vilka operationer? Vad bör ingå i listans gränssnitt? LinkedList numelements insert delete empty search value Linkable getvalue changenext Exempel 2: Träd med multipelt arv Exempel 2: lösningsförslag Varje nod i ett träd är roten i ett träd Ett träd kan ses som en lista av subträd En nod i ett träd innehåller ett element LinkedList numelements insert value Linkable getvalue Tree 2

Abstraktionsnivå Exempel 3: Stack Vilka operationer behövs? Kan vi använda befintliga datastrukturer? Exempel 3: lösningsförslag FixedStack empty push pop Array Stack Implementerar stack-operationer i termer av arrayoperationer Återanvändning igen... Biggerstaff and Richter, 1989 - less than half of a typical system can be built of reusable software components, and that the only way to obtain more significant gains in productivity and quality is to raise the level of abstraction of the components. Analysprodukt, Specifikation Design Kod OO analys och design, fördelar Nödvändiga ändringar lokaliseras och oväntad interaktion med andra program är inte troligt Arv och polymorfism gör OO system mer utbyggbara vilket bidrar till snabbare utveckling Objektbaserad design lämpar sig väl för distribuerad, parallell eller sekvensiell implementation Objekt står i direkt motsvarighet till enheter i designerns och användarens konceptuella värld vilket leder till större sömlöshet och spårbarhet Delade datafält fångas upp vilket minskar risken för oväntade modifieringar och uppdateringsanomalier. Moment i OO analys och design Hitta alla sätt på vilka systemet interagerar med sin omgivning (use cases) Identifiera objekt och deras attribut och metoder Etablera relationer mellan objekt Etablera varje objekts gränssnitt och undantagshantering Implementera och testa objekten Bygga ihop och testa system Analys...... är att plocka isär problemet i sina beståndsdelar... specifikation av systemets struktur och funktion oberoende av implementation Traditionellt: top-down, functional decomposition + data analys Strategisk, business mål-driven analys separerad från systemanalys OO analys tillåter att systemet beskrivs i samma termer som verkliheten OO analys är analys med ett inslag av syntes 3

UML Internationell standardnotation för OO analys och design Definieras av Object Management Group, www.omg.org 13 typer av diagram Vad kan modelleras? Structure Diagrams Class Diagram, Object Diagram, Component Diagram, Composite Structure Diagram, Package Diagram, Deployment Diagram. Behavior Diagrams Use Case Diagram, Activity Diagram, State Machine Diagram. Interaction Diagrams Sequence Diagram, Communication Diagram, Timing Diagram, Interaction Overview Diagram. Klassdiagram Statisk struktur Klasser Klasser, exempel Objekt 4

Objekt, exempel Arv Arv, exempel Association Aggregation och komposition Dynamiskt beteende Sekvensdiagram Tillståndsdiagram 5

Sekvensdiagram Modellera krav Use cases och Use case diagram Beskriver observerbart beteende, interaktion mellan system och omvärld Externa enheter - Actors Use case diagram, exempel 6