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

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

Problemlösning. Analys och design OOA&D. Programutveckling sker i faser OOA&D. Fastställa och analysera förutsättningarna/ kraven.

Klasser och objekt? Objekt och klasser. Analys och design. Objekt. Klass. Programmering?

Fel och felhantering. Undantag

Objektorientering. Grunderna i OO

Föreläsning 7. Programmeringsmetodik och programmering i ett objektorienterat språk, 5p

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

Föreläsning 15: Repetition DVGA02

Personal. Objektorienterad programmeringsmetodik 5DV133. Kursmål. Kursens uppläggning. Lärare. Handledare och gruppövningar.

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

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

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

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

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

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

Objektorientering Klasser

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Inkapsling (encapsulation)

Objektorienterad analys och design

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

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

Objektorienterad programmering

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

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

Introduktion. Byggstenar TDBA

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

SKOLFS. beslutade den XXX 2017.

Objektorienterad konstruktion

Objektorienterad programmering. Grundläggande begrepp

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

Objektorientering Användning

Objektorienterad programmering, allmänt

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

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

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

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

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

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

TDP005 Projekt: objektorienterade system

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

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

729G06 Föreläsning 1 Objektorienterad programmering

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

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

OOMPA 2D1359 Föreläsning 2

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

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 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU

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

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

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

Undervisningen i ämnet programmering ska ge eleverna förutsättningar att utveckla följande:

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Personal Objektorienterad programmeringsmetodik 5DV081 5DV109

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

Objektorienterad analys och design

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

Objektorienterad analys och design

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

Programutvecklingsmetodik

Kursplanering Objektorienterad programmering

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

1 Klasser och objektorientering Vad är objektorientering?

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Objektorienterad Systemutveckling 1 (7,5 hp)

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

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

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

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

SKOLFS. beslutade den -- maj 2015.

Programmeringsteknik II

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Introduktion till arv

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

Objektorienterad programutveckling i ett nötskal

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

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

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

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

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

Introduktionsmöte Innehåll

Lösningar till tentamen i EDAF25

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

Övning / handledning Användningsfall

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

Formell Verifiering. Hur vet man att ett system fungerar korrekt? Lisa Kaati

Relationer mellan objekt

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

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

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

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

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

Tentamen i Objektorienterad modellering och design Helsingborg

Föreläsning 5. När skall man använda implementationsarv? När skall man använda implementationsarv?

Problemlösning. Planering av program. Konstruktion. Programmeringsmetaforer. Problemlösning. Programmering = Problemlösning

Föreläsning 1, vecka 6: Abstraktion genom objektorientering

Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg

Objektorienterad Programmering (TDDC77)

Transkript:

Analys och design med hjälp av CRC 83 Klassdiagram Objekt Ett objekt är en individuellt identifierbar entitet som kan vara konkret eller abstrakt. Ett objekt har tillstånd, beteende och identitet. Reellt, gripbart, synligt ting (t ex en specifik person) Abstrakt ting (t ex en tid eller en anställd) Varje objekt har ett tillstånd, ett beteende och en identitet. Tillståndet beskriver objektets egenskaper (t ex adress och ålder hos en person) Beteendet beskriver vad objektet kan göra (t ex flytta). OBS! Detta kan innebära att tillståndet ändras Identiteten skiljer ett objekt från alla andra objekt 85 Klass En klass är en byggplan för objekt av samma sort. Alla objekt av en klass (instanser) har samma sorts egenskaper och beteenden En klass beskriver en mängd liknande objekt Datatyp namn ålder adress flytta... Person Namn på klassen egenskaper (attribut) beteende (metoder) Mark Visibility + Public # Protected - Private ~ Package 86

Klassdiagram Länk till mer om UML och dess pilar http://www.ibm.com/developerworks/rational/library/content/rationaledge/sep04/bell/ UML: Klassrelationer svag koppling stark koppling 88 UML: Klassrelationer Indicator Meaning 0..1 Zero or one 1 One only 0..* Zero or more * Zero or more Beroende A känner till B eller A använder objekt av typen B Ett kassaregister måste veta om vad pengar är men inte tvärt om Association A kan gå till objekt a typen B via någon annan klass Typ A lagrar objekt av type B i en Hashtabell Aggregering A har objekt av typen B A kan ha B och kan existera utan att B finns som objekt, en bil har hjul men är fortfarande en bil om det inte har hjul Komposition består av A består av B och kan inte existera utan B finns som objekt, hus består av väggar och tak, men existerar inte utan dom Generalisering arv arv A ärver (utökar, extends) B Realisering implementering implementering av interface A implementerar interface B 1..* One or more 3 Three only 0..5 Zero to Five 5..15 Five to Fifteen 89 Klassdiagram

Problemlösning Alla större projekt misslyckas, eftersom det är omöjligt för utvecklarna att till fullo förstå uppgiften som ska lösas och vilka alla problem som är inneboende i uppgiften. Antaganden måste klargöras Möjliga feltolkningar måste undanröjas När problem/uppgifterna blir större, måste lösningen delas in i hanterliga delar Denna teknik är fundamental för programvaruutveckling I objektorienterad utveckling delas lösningen in i objekt och klasser 91 Programutveckling sker i faser Här: starkt förenklat version Passar bara mindre projekt Fem delmoment: Fastställa och analysera förutsättningarna/kraven Skapa en design Implementera koden Testning Dokumentation OBS! Testning och dokumentation ska ske parallellt med de övriga momenten. 92 OOA&D Design Kräver förståelse för uppgiften/problemet Analys Kräver språk för att uttrycka designen i Kräver ett strukturerat arbetssätt Bygger på erfarenhet Syftar till att få fram en OO modell som går att implementera Design och analys hör ihop 93 OOA&D Modeller underlättar kommunikation Oberoende av programspråk Abstraherar från oväsentliga detaljer Underlättar testning i tidigt skede Några bra verktyg CRC-kort UML (ett modelleringsspråk) Designmönster (Fabrik,...) Interaktionen/flödet Scenarios Swim-lanes Skisser Mock-up:er 94

Fastställa och analysera förutsättningarna/ kraven Vad ska göras? Vilka begränsningar finns? Är alla oklarheter utredda? Gör modeller/utkast Undvik att tänka på implementationen 95 Skapa en OO-design Bestäm klasser, objekt och metoder som behövs Vad finns redan? Bestäm algoritmer för problemlösningen I princip oberoende av programmeringsspråk Diagram Pseudokod Designa för återanvändning? Det är svårare att göra generella lösningar Kan löna sig i framtiden Återanvändning har varit en stor anledning till OOboomen 96 OOA&D med CRC-kort Analys Förstå problemet/uppgiften Utveckla en OO modell av problemet Design Utveckla en OO modell av lösningen Modeller underlättar kommunikation Oberoende av programspråk Abstraherar från oväsentliga detaljer Underlättar testning i tidigt skede CRC-kort UML(ett modelleringsspråk för OO utveckling) Rollspelsdiagram 97 CRC Metoden Grupparbete(4-6 personer) Hitta kandidatobjekt Brainstorming Substantiv & adjektiv Filtrera kandidatobjekten Skapa CRC-kort för kvarvarande kandidatobjekt Definiera scener för testning av modellen (testfall) Spela in scener m.h.a rollspelsdiagram (testa) Uppdatera CRC-korten och scenerna 98

Brainstorming Fokuserat utforskande i grupp Okritiskt förhållningssätt i genereringsfasen Kräver bra förståelse och analys Substantiv & adjektiv i uppdragsbeskrivning Lätt metod Kräver en vettig och inte allt för ordig och lång beskrivning Filtrering Oavsett metod så måste man göra en bearbetning av kandidaterna Så att god klass-design uppnås Liknande kandidater slås ihop Skippa kandidater som: Inte går att benämna med ett substantiv eller adjektiv Beskriver imp. detaljer, egenskaper, utan direkt ansvar, modellerar GUI, systemklasser, utanför ramarna, 101 CRC-kort Class-Responsibilities-Collaborators Klass-ansvar-sammarbetspartner Ett CRC-kort motsvarar en klassbeskrivning Informellt verktyg för att ta fram och utvärdera olika alternativ 102

Scenarier Exempel på hur systemet används Hur gör man för att ta fram scenarier? Brainstorming, Vilka använder systemet, hur använder man systemet, vilka kommer i kontakt med systemet, Så heltäckande det går Kräver en gedigen förståelse och analys av uppgiften Börja med några väldigt enkla 103 RPD - skapa scenarior för att testa designen RPD spela rollspelet RPD -spela in rollspelet 106

Uppdatera CRC-korten 107 Efter några scenarion & iterationer När CRC-korten är någorlunda stabila kan de göras om till mera formella klassdiagram Design 108 Byggritningen (utan GUI)