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