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