F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

Relevanta dokument
F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Föreläsning 3-4 Innehåll

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

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

F4. programmeringsteknik och Matlab

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 2, vecka 8: Repetition

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

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

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Föreläsning 9 Innehåll

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

DAT043 Objektorienterad Programmering

Repetition av OOP- och Javabegrepp

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

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

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

Repetition av OOP- och Javabegrepp

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

TDDC77 Objektorienterad Programmering

Classes och Interfaces, Objects och References, Initialization

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

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

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

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Tentamen ID1004 Objektorienterad programmering April 7, 2015

Föreläsning 1 & 2 INTRODUKTION

OOP Objekt-orienterad programmering

Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Objektorienterad Programmering (TDDC77)

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

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

OOP Objekt-orienterad programmering

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

Objektorienterad Programmering (TDDC77)

Tentamen ID1004 Objektorienterad programmering December 15, 2012

Algoritmer. Två gränssnitt

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

Föreläsning REPETITION & EXTENTA

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

OOP Objekt-orienterad programmering

Del A (obligatorisk för alla)

Tentamen, EDAA10 Programmering i Java

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Föreläsning 4 Innehåll

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Typkonvertering. Java versus C

Tentamen, EDAA20/EDA501 Programmering

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

TENTAMEN OOP

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Concurrency Saker händer samtidigt. Process En instans av ett program

Föreläsning 2 Datastrukturer (DAT037)

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

OOP Objekt-orienterad programmering

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

Objektorienterad Programmering (OOP) Murach s: kap 12-16

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:

Föreläsning 8: Exempel och problemlösning

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Skillnader mellan Python och Java

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Föreläsning 1 & 2 INTRODUKTION

TENTAMEN OOP

Outline. Objektorienterad Programmering (TDDC77) Abstrakta klasser. Abstrakta metoder. Abstrakta klasser. Gränssnitt. Uppräkningar (enum) Ahmed Rezine

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

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

Del A (obligatorisk för alla)

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

Chapter 4: Writing Classes/ Att skriva egna klasser.

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

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

Tentamen FYTA11 Javaprogrammering

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Programmering A. Johan Eliasson

Objektorienterad Programmering (TDDC77)

Föreläsning 2. Länkad lista och iterator

Objektorienterad programmering. Grundläggande begrepp

Transkript:

F6 Objektorienterad design ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se

långa ord AKTIVITETER I PROGRAMVARUUTVECKLING

Iterativ utveckling Kravspecifikation Design Implementation Testning

Iterativ utveckling Kravspecifikation Vad ska programmet göra? Design Implementation Testning

Iterativ utveckling Kravspecifikation Vad ska programmet göra? Design Hur ska programmet göra det? Implementation Testning

Iterativ utveckling Kravspecifikation Vad ska programmet göra? Design Hur ska programmet göra det? Översätt design till programkod Implementation Testning

Iterativ utveckling Kravspecifikation Vad ska programmet göra? Design Hur ska programmet göra det? Översätt design till programkod Implementation Verifiera att kraven är uppfyllda Testning

Objektorienterad design Designfasen är den kreativa fasen Implementation är att bygga efter ritning Kravspecifikation Design Implementation Testning

Objektorienterad design Metodansats: substantiv i kravspecifikationen Användaren måste kunna ange produkt med hjälp av dess huvudsakliga egenskaper, inklusive dess namn och produktnummer. Om streckkoden inte stämmer med produkten ska ett fel genereras i meddelandefönstret och loggas i felloggen. Sammanfattningsrapporten över alla transaktioner ska vara strukturerad enligt spec 7.A.

Objektorienterad design Metodansats: substantiv i kravspecifikationen Användaren måste kunna ange produkt med hjälp av dess huvudsakliga egenskaper, inklusive dess namn och produktnummer. Om streckkoden inte stämmer med produkten ska ett fel genereras i meddelandefönstret och loggas i felloggen. Sammanfattningsrapporten över alla transaktioner ska vara strukturerad enligt spec 7.A.

Substantiven i kravspecifikationen användare produkt fel produktegenskaper fellogg namn produktnummer streckkod meddelandefönster transaktion transaktionslogg sammanfattningsrapport

Substantiven tentativa relationer användare produkt fel produktegenskaper fellogg namn produktnummer streckkod meddelandefönster transaktion transaktionslogg sammanfattningsrapport

Tänkbara klasser och attribut användare produkt fel produktegenskaper fellogg namn produktnummer streckkod meddelandefönster transaktion transaktionslogg sammanfattningsrapport

Tänkbara beteenden fel Presentera som text fellogg Ta emot och lagra fel meddelandefönster Visa fel

Tänkbara beteenden Ta emot transaktion Erbjuda sammanfattningsrapport Visa som text transaktion transaktionslogg Generera formaterad text sammanfattningsrapport

Tänkbara beteenden Presentera produkt Erbjuda namn, produktnummer och streckkod Jämföra produktnummer och streckkod produkt produktegenskaper namn produktnummer streckkod

Design beroenden mellan klasser Beroenden mellan objekt i samma klass str3 = str1.concat(str2) Beroenden mellan objekt i olika klasser TransactionLog.add(Transaction t) ErrorLog.add(Error e) String Transac tionlog Transac tion ErrorLog Error

Design - aggregering Aggregerade objekt byggs upp med hjälp av andra objekt Användare loginid namn adress Namn Förnamn Efternamn Address Gata Postnummer Postort

Design gemensamma egenskaper Felloggen och transaktionsloggen är båda loggar Båda lagrar information om sådant som hänt Hur mycket har de gemensamt? Logg Fellogg Transaktionslogg

Design gemensamma egenskaper Felloggen och transaktionsloggen är båda loggar Båda lagrar information om sådant som hänt Hur mycket har de gemensamt? tidpunkt Händelse Ta emot händelse Lagra händelse Logg Fel Transaktion Ta emot fel Fellogg Transaktionslogg Ta emot transaktion

mellantryne INTERFACE-KLASSER

Interface-klasser Interface-klasser innehåller konstanter abstrakta metoder Abstrakta metoder har signatur och returtyp, men ingen kod Ett interface specificerar ett beteende Signatur: en metods klass, namn, och ordningsföljden på parametertyperna

Interface - exempel package java.lang; public interface Runnable { public void run (); } public class MyClass implements Runnable { public void run() { } }

Interface-klasser public interface Comparable<T> { public int compareto (T o); } En klass som implementerar Comparable, lovar att den implementerar alla metoder i Comparable. public class Die implements Comparable<Die> {... public int compareto (Die otherdie) { return otherdie.getvalue() this.getvalue(); }... }

Interface-klasser public interface Iterator<E> { public boolean hasnext(); public E next(); public void remove(); }

Interface används ofta En klass kan implementera många interface En klass som implementerar ett interface utlovar ett väldefinierat beteende För att använda objektet behöver man bara känna till interfacet Interface löser problem som arv inte kan lösa

Interface-klasser (exempel) class House class Boat interface House class LivingSpace interface Boat extends class HouseBoat Java tillåter inte multipelt arv implements extends class HouseBoat implements

Interface-klasser (exempel) int nofrooms() float livingarea() interface House String propulsion() float weight() interface Boat implements implements int nofrooms() float livingarea() String propulsion() float weight() class HouseBoat implements House, Boat;

Interface-klasser (exempel) int nofrooms() float livingarea() float cost() interface House String propulsion() float weight() float cost() interface Boat implements implements int nofrooms() float livingarea() String propulsion() float weight() float cost() class HouseBoat implements House, Boat; Metoder som är identiska i två eller fler interface får endast en implementation.

Interface-klasser (exempel) int nofrooms() float livingarea() float cost() interface House String propulsion() float weight() float cost() interface Boat String anchoredat() implements extends interface HouseBoat extends House, Boat; Interface kan ärva från flera andra interface int nofrooms() float livingarea() String propulsion() float weight() float cost() String anchoredat() class Marin12 implements HouseBoat; Den implementerande klassen måste implementera alla metoder

Interface till sist Ett interface är också en datatyp: protected House huset; Variabeln huset kan referera till alla objekt som implementerar interface House. Metoder kan returnera datatypen: public House findhouse(string address)...

hjälp! HJÄLPMETODER

Metoder och hjälpmetoder Hjälpmetoder förenklar koden Undviker repetition och redundans Bryter ned i enklare delar

Metoder och hjälpmetoder int x, y, z; Scanner scan = new Scanner(System.in);... boolean argok = false; while (!argok) { System.out.print( Enter x : ); x = scan.nextint(); if ((X_MIN <= x) && (x < X_MAX)) { argok = true; } else { System.out.println( x is out of range ); } } // Repeat for y and z

Metoder och hjälpmetoder int x, y, z; Scanner scan = new Scanner(System.in);... boolean argok = false; while (!argok) { System.out.print( Enter x : ); // anmoda användaren x = scan.nextint(); // läs in värde if ((X_MIN <= x) && (x < X_MAX)) { argok = true; } else { System.out.println( x is out of range ); } } // Repeat for y and z // värdet är godkänt // felmeddelande

Metoder och hjälpmetoder private int getcoordinate(string name, Scanner scan, int min, int max) { while (true) { System.out.print( Enter + name + : ); int value = scan.nextint(); if ((min <= value) && (value < max)) return value; System.out.println(name + is out of range ); } } int x, y, z; Scanner scan = new Scanner(System.in);... x = getcoordinate( x, scan, X_MIN, X_MAX); y = getcoordinate( y, scan, Y_MIN, Y_MAX); z = getcoordinate( z, scan, Z_MIN, Z_MAX);

failure is always an option TESTNING

Testning Man testar för hitta fel Felfritt test == programmet klarar just det testet Det brukar alltid finnas några fel kvar Indata Program Utdata Lika? Testfall Förväntade utdata

Testning Ofta använder man flera olika tester Ibland leder en justering till nya fel Regression testing kör om hela testbatteriet efter varje justering Automatiserad testning underlättar Test 1 Test 2 Test 3 Test 4 Test 5...

Testning kodgenomgång Flera personer läser källkoden tillsammans Tar tid Kan ge mycket bra resultat Identifiera problemen inte lösa dem

Defekttestning Skapa test med syfte att hitta fel Black-box testing Programmet är en svart låda Känd input, förväntad output White-box (glass-box) testing Testet är utformat för att gå alla vägar genom koden

Testning ekvivalenta kategorier Indata delas in i mängder Varje element i en mängd antas ha lika stor chans att hitta ett visst fel Exempel: beräkna kvadratroten double sqrt(double u) Två mängder: positiva tal och negativa tal Testa med några positiva tal Testa med några negativa tal

Testning i praktiken Välj indata nära gränserna Indata i detta område ska utlösa fel Indata i detta område ska fungera

Testning i praktiken Välj indata nära gränserna Om en funktion är definierad f(m)...f(n), m<n f(m-1) : omfångsfel väntas f(m) : rätt svar väntas f((m+n)/2) : rätt svar väntas f(n) : rätt svar väntas f(n+1) : omfångsfel väntas

Testning i praktiken För ett enklare program Be någon som aldrig sett programmet köra det Varför kan man inte mata in noll här? Nä, det meddelandet såg jag inte Jag fattar inte vad jag ska göra

... SLUT PÅ BILDER

Testning i praktiken Specialfall bildar egna ekvivalensklasser x y : x 0, x y int power(int x, int y) { if (y == 0) { return 1; } else { return x * power(x, y-1); } }