Programmering = modellering

Relevanta dokument
Objektorienterad programmering

Metoder och top-down design

Laboration 2. returnerar true om det är omöjligt för roboten att göra move() utan att. exekveringsfel erhålls, annars returnera false.

Föreläsning 4. Föreläsning 4. Top-Down Design Metoder Parameteröverföring. Metoder Parameteröverföring. Programmering = modellering

Mer om metoder och abstraktioner

Föreläsning 6. Top-Down Design Parameteröverföring

Top-Down Design Parameteröverföring

Laboration 2. Objektorienterad programmering. Syfte

Föreläsning 4. Föreläsning 4

Föreläsning 4. Top-Down Design Metoder Parameteröverföring. Metoder Parameteröverföring

Objektorienterad programmering

Parameteröverföring. Exempel. Exempel. Metodkropp

Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)

Testning av program. Verklig modell för programutveckling

Java, klasser, objekt (Skansholm: Kapitel 2)

Objektorienterad programmering, allmänt

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

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

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

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

Föreläsning 15: Repetition DVGA02

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll

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

Imperativ programmering. Föreläsning 4

Objektorienterad programmering. Grundläggande begrepp

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

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

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

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

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

+Överskådlighet Normalt sätt blir ett program skrivet i det procedurella paradigmet överskådligt. Modifikationer på delproblem kan ske med lätthet.

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

Administrivia. hh.se/db Verónica Gaspes (Kursansvarig) 2 Mattias Enervall (Övningsassistent) Examination. 1 Skriftlig tentamen (betyg)

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Objektorienterad programmering

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

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

1 Klasser och objektorientering Vad är objektorientering?

Objektorienterad programmering D2

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

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

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

Metoder (funktioner) Murach s: kap Winstrand Development

Föreläsning 2, vecka 8: Repetition

Administrivia. hh.se/db Verónica Gaspes (Kursansvarig) 2 Daniel Petersson (Labassistent) Examination. 1 Skriftlig tentamen (betyg)

Tentamen ID1004 Objektorienterad programmering May 29, 2012

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

TDIU01 - Programmering i C++, grundkurs

Personal Objektorienterad programmeringsmetodik 5DV081 5DV109

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

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!

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

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

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl

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

Lab5 för prgmedcl04 Grafik

Problemlösning och funktioner Grundkurs i programmering med Python

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

Objektorienterad programmering i Java I

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Lösningsförslag: Instuderingsfrågor, del D

Inkapsling (encapsulation)

Översikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning

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

Objektorienterad Programkonstruktion. Föreläsning jan 2016

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

Objektorienterad konstruktion

Överlagring, static, testning, formella metoder och undantag! Förelasning 13!! TDA540 Objektorienterad Programmering!

OOP Objekt-orienterad programmering

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

Funktioner och programstruktur. Föreläsning 5

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

Tentamen, EDAA20/EDA501 Programmering

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

Enkla variabler kontra referensvariabel

Abstrakta datatyper Laboration 2 GruDat, DD1344

Programmering. hh.se/db2004. SuperKarel, Nedbrytning & Styrsatser. Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering

Exempel: Förel Rekursion III Nr 14. Uno Holmer, Chalmers,

Modeller, Objekt och Klasser

TDA550 Objektorienterad programmering, fortsättningskurs. Föreläsning 1. Introduktion Variabler och typer

6. Ge korta beskrivningar av följande begrepp a) texteditor b) kompilator c) länkare d) interpretator e) korskompilator f) formatterare ( pretty-print

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

Objektorienterad Programmering (TDDC77)

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Modulär design. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018

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

Introduktion till arv

Objektorienterad programmering

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

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

1 Comparator & Comparable

Föreläsning 3-4 Innehåll

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Tentamen i EDAF oktober Skrivtid: Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas.

2D1342 Programkonstruktion för F1, ht 2006

Transkript:

Programmering = modellering Ett datorprogram är en modell av en verklig eller tänkt värld. Ofta är det komplexa system som skall modelleras I objektorienterad programmering består denna värld av ett antal objekt som tillsammans löser den givna uppgiften. - De enskilda objekten har specifika ansvarsområden. - Objekten samarbetar genom att kommunicera med varandra via meddelanden. - Ett meddelande till ett objekt är en begäran från ett annat objekt att få något utfört. Att göra en bra modell av verkligheten, och därmed möjliggöra en bra design av programmet, är en utmaning. 2

Abstraktion För att lyckas utveckla ett större program måste man arbeta efter en metodik. En mycket viktig princip vid all problemlösning är att använda sig av abstraktioner. En abstraktion innebär att man bortser från vissa omständigheter och detaljer i det vi betraktar, för att bättre kunna uppmärksamma andra för tillfället mer väsentliga aspekter. Abstraktion är det viktigaste verktyget vi har för att hantera komplexitet och för att finna gemensamma drag hos problem och hitta generella lösningar. Betraktas alla detaljer ser man inte skogen för alla träden och två problem kan synas helt olika, medan de på en hög abstraktionsnivå är identiska. 3 Top-Down Design En problemlösningsmetodik som bygger på användning av abstraktioner är top-down design. Top-down design innebär att vi betraktar det ursprungliga problemet på en hög abstraktionsnivå och bryter ner det ursprungliga problemet i ett antal delproblem. Varje delproblem betraktas sedan som ett separat problem, varvid fler aspekter på problemet beaktas, dvs vi arbetar med problemet på en lägre abstraktionsnivå än vi gjorde med det ursprungliga problemet. Om nödvändigt bryts delproblemen ner i mindre och mer detaljerade delproblem. Denna process upprepas till man har delproblem som är enkla att överblicka och lösa. Top-down-design bygger på principen divide-and-conquer. 4

Top-Down Design ursprungligt problem problem som bryts ner i delproblem problem som är tillräckligt enkla för att lösa med inom en metod Med top-down design blir det möjligt att lösa det ursprungliga problemet steg för steg istället för att direkt göra en fullständig lösning. 5 Top-Down Design Allteftersom ett problem bryts ner i mindre delproblem, betraktar man allt fler detaljer. Vi går således från en abstrakt nivå mot allt mer detaljerade nivåer. Denna process brukar kallas för stegvis förfining. Exempel: Att ordna en tre-rätters middag enligt "top-down design" Middag Förrätt Huvudrätt Dessert Dryck Dryck Dryck Mat Mat Mat 6

Modulär Design Vid utveckling av Javaprogram är klasser och metoder (tillsammans med paket) de abstraktionsmekanismer som används för att dölja detaljer och därmed öka överblickbarhet och förståelse. Att utveckla ett Javaprogram med hjälp av top-down design innebär således att dela in programmet i lämpliga klasser och metoder, vilka i sin tur delas upp i nya klasser och metoder. Man skall eftersträva en modulär design modulär design där varje delproblem ( = klass eller metod) handhar en väl avgränsad uppgift och att varje delproblem är så oberoende av de andra delproblemen som möjligt. 7

Bottom-Up Design Ett alternativ till top-down design är bottom-up design. Bottom-up design innebär att man startar med att utveckla små och generellt användbara programenheter och sedan bygger ihop dessa till allt större och kraftfullare enheter. En viktig aspekt av objektorienterad programmering, som ligger i linje ned bottom-up design, är återanv eranvändning. Återanvändning innebär en strävan att skapa klasser som är så generella att de kan användas i många program. I Java finns ett standardbibliotek som innehåller ett stort antal sådana generella klasser. Standardbiblioteket kan således ses som en "komponentlåda" ur vilken man kan plocka komponenter till det programsystem man vill bygga. Vid utveckling av Javaprogram kombinerar man vanligtvis top-down design och bottom-up design. 16

Parameteröverföring Alla primitiva datatyper och alla existerande klasser kan ges i parameterlistan och/eller som resultattyp. Parameterlistan kan innehålla ett godtyckligt antal parametrar I Java sker alltid parameteröverföring via värdeanrop, vilket betyder att värdet av den aktuella parametern kopieras över till den formella parametern. När den aktuella parametern är en primitiv typ kommer därför den aktuella parametern och den formella parametern att ha access till fysiskt åtskilda objekt. När parametern är ett objekt (dvs en instans av en klass) är parametern en referensvariabel, varför den aktuella parametern och den formella parametern kommer att ha access till samma fysiska objekt. 22

Parameteröverföring Anropande metod Aktuella parametrar int tal 5 Anropad metod Formella parametrar int x 5 Värdet av den aktuella parametern tal kopieras till den formella parametern x. tal och x är åtskilda fysiska objekt. En förändring av värdet i variabeln x påverkar inte värdet i variabeln tal. SomeClass p 123456 SomeClass y 123456 Värdet av den aktuella parametern p kopieras till den formella parametern y. p och y kommer att referera till samma fysiska objekt. En förändring i objektet som refereras av variabeln y påverkar därför objektet som refereras av variabeln p, eftersom det är samma objekt 23 Laboration 2 I laboration 2 skall ni programmera en robot som modelleras av den givna klassen Robot. En robot vistas i en enkel värld, och kan utföra några enkla operationer: Följande operationer finns (samt några till): void move() förflyttar sig ett steg framåt. Om roboten hamnar utanför världen eller i en mur fås ett exekveringsfel. boolean frontisclear() returnerar true om det är möjligt för roboten att göra move() utan att ett exekveringsfel erhålls, annars returnera false void turnleft() void makelight() boolean ondark() int getdirection() vrider sig 90 åt vänster färgar rutan den står på till ljus. Om rutan redan är ljus fås ett exekveringsfel. returnerar true om roboten står på en mörk ruta, annars returneras false returnerar robotens riktning. Syftet med laborationen är att ni bryta ner de uppgifter som roboten skall utföra i delproblem och utveckla kraftfullare abstraktioner än de operationer som roboten tillhandahåller. Dessa abstraktioner implementeras som små meningsfulla och återanvända metoder med hjälpa av de operationer som roboten erbjuder. 24

Förvillkor och eftervillkor Metoden (abstraktionen) fungera utmärkt för det scenario vi utgick ifrån: Före: Efter: Men det finns flera scenarior där metoden inte fungerar, varav några framgår av bilderna nedan: 27

Förvillkor och eftervillkor För att en programmerare skall kunna använda sig av en metod på ett korrekt sätt måste han/hon känna till specifikationen för en metoden: metodens namn metodens parameterlista metodens returtyp vad metoden gör vilka förvillkor som måste gälla vilka eftervillkor (sidoeffekter) metoden har. För att kunna använda en metod behöver man däremot inte känna till hur metoden är implementerad. Det intressanta är vad metoden gör inte hur den gör det! Specifikationen är alltså viktig att dokumentera!! 30