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

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

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

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?

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Personal Objektorienterad programmeringsmetodik 5DV081 5DV109

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

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

Klass och metoddesign. Skapa en OO-design. Kodkonvention. Hur kan man jobba med kodkvalité? Implementation. Bra klasser är grunden

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

Föreläsning 15: Repetition DVGA02

Parameteröverföring. Exempel. Exempel. Metodkropp

F5 Kodkvalitet. Programutveckling sker i faser. Livscykel, vidareutveckling och återanvändning

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

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

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

OOMPA 2D1359 Föreläsning 2

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

Arv och polymorfism i Java

Inkapsling (encapsulation)

Objektorienterad programmering. Grundläggande begrepp

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

Classes och Interfaces, Objects och References, Initialization

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

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

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

Ett objekt... Exempel: Om ni tittar er runt i föreläsningssalen ser in många olika fysiska föremål:

Objektorientering. Grunderna i OO

Föreläsning 13 Innehåll

Föreläsning 5. Föreläsning 5

Java Sommarkurs. Institutionen för datavetenskap. Här sitter vi. Kursen kontaktpersoner utbildningsprogram

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

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

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

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

Objektorienterad programmering, allmänt

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

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

Objektorienterad analys och design

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

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

Objektorienterad programmering

Föreläsning 5. Föreläsning 5. Klasser och objekt. Klasser och objekt. Klasser och objekt

Laboration 1: Figurer i hierarki

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

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

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

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

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

Malmö högskola 2007/2008 Teknik och samhälle

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

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

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

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

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

Föreläsning 9: Arv och UML

Personal. Objektorienterad programmeringsmetodik 5DV133. Kursmål. Här sitter vi MIT-huset våning 4. Examination. Kursens uppläggning.

Modeller, Objekt och Klasser

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

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

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

Separation of Concern. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Johannes Åman Pohjola, 2017

Tentamen i Objektorienterad modellering och diskreta strukturer

Relationer mellan objekt

729G06 Föreläsning 1 Objektorienterad programmering

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Tentamen i Objektorienterad modellering och design

Laboration 2: Designmönster

Klassdeklaration. Metoddeklaration. Parameteröverföring

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

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

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

Separation of Concern. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018

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

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

Vad gör vi idag? F8 Uppsamling/Repetition. Tentamen. Detta har vi gått igenom. Detta kommer vi att gå igenom. Detta har vi gått igenom.

OOMPA 2D1359 Föreläsning 8

Imperativ programmering. Föreläsning 4

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

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

UML Objektdiagram. Objektorienterad modellering och design (EDAF25) Föreläsning 3. UML Sekvensdiagram. UML Objektdiagram. Agenda

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

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

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

Malmö högskola 2008/2009 CTS

Fel och felhantering. Undantag

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

TENTAMEN I DATAVETENSKAP

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Laboration 2: Designmönster

Programmering = modellering

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

Objektorienterad konstruktion

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

Tentamen i Objektorienterad modellering och design Helsingborg

Transkript:

Abstrakta Klasser 1 God klassdesign placerar gemensamma attribut och metoder så högt som möjligt i hierarkin men ibland kan dessa egenskaper inte definieras fullständigt Abstrakta klasser innehåller ofta abstrakta metoder En abstrakt metod har ingen implementation, bara en signatur Klasser med abstrakta metoder blir abstrakta Abstrakta klasser är ofta för allmänna för att vara direkt användbara En abstrakt klass kan inte instantieras 83 Abstrakta Klasser 2 /* * Draw the figure on screen. */ protected abstract void draw(); // Canvas canvas = Canvas.getCanvas(); // canvas.setforegroundcolour(color); // construct an appropriate Shape object // and call `canvas.fill() with this // `Shape object // canvas.wait(10); Bara metodhuvudet /* * Erase the figure on screen. */ protected abstract void erase(); // Canvas canvas = Canvas.getCanvas(); // construct an appropriate `Shape object and // call `canvas.erase() with this `Shape object 84 Abstrakta Klasser - deklaration public abstract class Classname attribut deklareras implementerade metoder abstrakta metodhuvuden 67% Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% 5% 7% 8% Analys Planering Design Kodning Testning Integration Underhåll 85 Programmen måste göras lättförståeliga och enkla att modifiera, rätta och bygga ut 86 Problemlösning Många projekt misslyckas, eftersom utvecklarna inte till fullo förstår problemet som ska lösas Alla antaganden måste klargöras Möjliga feltolkningar måste undanröjas När problem 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 så kallade objekt och klasser Java är ett objektorienterad språk 87 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. 88 1

OOA&D 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) 89 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 90 Skapa en design Implementation 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 91 Översättning av design till källkod Implementationen fokuserar på kod-detaljer Alla viktiga beslut tas vid analys och design 92 Testning och dokumentation Tester måste konstrueras för extremer, svagheter och gränsfall Med tester ska fel finnas och inte undvikas Testa tidigt och ofta Det är inte bara kod som kan testas Dokumentera fortlöpande ANALYS SYSTEM DESIGN PROGRAM DESIGN V modellen Validera kraven Verifiera designen KODNING SYSTEMTEST ENHETS- & INTE- GRATIONSTEST DRIFT & UNDERHÅLL ACCEPTANS- TEST 93 94 2

Vad kännetecknar en god klass En odelad, väldefinierad abstraktion Uppgiften kan beskrivas kort och tydlig Namnet är en substantiv eller adjektiv som beskriver abstraktionen på ett adekvat sätt Har ett koncist och sammanhörig gränssnitt Har tillstånd och beteende Representerar en mängd möjliga run-time objekt Problemet ska delas upp i lämpliga klasser Cohesion och Coupling (sammanhörighet och koppling) Metoderna i varje klass ska ha stark sammanhörighet Cohesion Varje metod ska vara ansvarig för bara en uppgift Cohesion mäter huruvida en metod uppfyller detta krav Ju mer en metod fokuserar på en enda uppgift, desto enklare är det att finna ett bra namn enklare och förståeligare blir koden Metoder med stark sammanhörighet kan lättare ändras utan att andra metoder påverkas Det ska vara möjligt att beskriva en metod med en enkel mening med ett verb och ett objekt Klasserna ska vara löst kopplade (oberoende av varann) 95 96 Exempel 1: Cohesion: Exempel 1 public void setnameandage (String name, int age); public void setname (String name); public void setage (int age); Exempel 2: /* Anropas en gång om året */ public void calculateholidays(); holidays += new Holidays(); age++; public void calculateholidays(); public void incrementage(); 97 Exempel 3: Cohesion: Exempel 2 public void setfirstname (String name) firstname = name; public void setlastname (String name) lastname = name; public void setfirstname (String name) firstname = name; public void setlastname (String name) lastname = name; 98 Kategorier av metoder Konstruktorer Skapa instanser Selektor (get-metod) Returnerar information om objektets tillstånd Mutator (set-metod) Ändra objektets tillstånd Iteratorer Gå igenom en kollektion elementvis Returnerar ett objekt och fortsätter till nästa Annat Gör någonting Coupling Klasserna ska vara så oberoende som möjligt av varandra Coupling mäter hur starkt klasserna är kopplade Ju lösare klasserna är kopplade, desto enklare är det att förstå en enstaka klass enklare och förståeligare blir systemet som helhet Klasserna med lös koppling kan lättare ändras utan att andra klasser påverkas Systemet blir lättare att ändra Mera flexibilitet PROBLEM: Arv skapar starka kopplingar En metod ska vara bara i en kategori 99 100 3

Ju starkare relation desto starkare koppling ( sämre) svag koppling Dependency Association Komposition Arv Klassrelationer igen <<beror på>> relation Grafisk notation - int height - int width - int xposition - int yposition - String color Triangle + Triangle ( ) + changecolor (String newcolor) + changesize (int newheight, int newwidth) + move ( ) + float getarea ( ) + boolean isequilateral ( ) // liksidigt?... stark koppling 101 102 Sekvensdiagram (UML) 103 104 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 105 CRC-kort Class-Responsibilities-Collaborators Klass-ansvar-sammarbetspartner Ett CRC-kort motsvarar en klassbeskrivning (alt. Objekt) Informellt verktyg för att ta fram och utvärdera olika alternativ 106 4

CRC Metoden Grupparbete(4-6 personer) Hitta kandidatobjekt m.h.a brainstorming Filtrera kandidatobjekten Skapa CRC-kort för kvarvarande kandidatobjekt Definiera scener för testning av modellen (testfall) Spela in scener m.h.a sekvensdiagram (testa) Uppdatera CRC-korten och scenerna Efter några senarion När CRC-korten är någorlunda stabila kan de göras om till mera formella klassdiagram Design 107 108 5