Föreläsning 15: Repetition DVGA02

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

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

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

Föreläsning 7. Grafiska användargränssnitt

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

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

Objektorienterad Programmering (TDDC77)

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

Introduktionsmöte Innehåll

Föreläsning 13. Träd

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

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

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

EDAA01 Programmeringsteknik - fördjupningskurs

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

Objektorienterad Programmering (TDDC77)

Inkapsling (encapsulation)

Objektorienterad programmering

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

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

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

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

Objektorienterad Programmering (TDDC77)

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

Tentamen i Objektorienterad modellering och design Helsingborg

Programmeringsteknik II

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

Länkade strukturer, parametriserade typer och undantag

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

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

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

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

Kursplanering Objektorienterad programmering

Föreläsning 12. Länkade listor

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

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

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

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

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

Objektorientering. Grunderna i OO

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

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

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

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

Föreläsning 14 Innehåll

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

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

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

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

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

Mål Förklaring av termer

Objektorienterad programmering. Grundläggande begrepp

Tentamen i Objektorienterad modellering och design Helsingborg

Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal

Mål Förklaring av termer

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

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

Tentamen i Objektorienterad modellering och design

Datastrukturer och algoritmer

Objektorienterad Programmering (TDDC77)

Imperativ programmering. Föreläsning 4

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

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

DAT043 - föreläsning 8

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Information. Computer

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

Länkade strukturer. (del 2)

Classes och Interfaces, Objects och References, Initialization

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

Föreläsnings 11 - GUI, Händelsestyrda program, MVC

Föreläsning 13 Innehåll

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

Objektorienterad Programmering DAT043. Föreläsning 5 29/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

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

Arv och polymorfism i Java

Objektorienterad analys och design

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

Programmering = modellering

Föreläsning 2 Datastrukturer (DAT037)

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

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

TDDC Terminologi Uppdaterad Fö #1

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

Objektorienterad programmering

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

Föreläsning 3 Datastrukturer (DAT037)

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

Tentamen. DD2385 Programutvecklingsteknik vt Fredagen den 5 juni 2009 kl Inga hjälpmedel utom penna, sudd och linjal

Objekt-orienterad programmering och design. DIT953 Niklas Broberg, 2018

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

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

Klasshierarkier - repetition

Lektion Händelsehanterare

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

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.

Föreläsning 1 Datastrukturer (DAT037)

Transkript:

Föreläsning 15: Repetition DVGA02

Vad handlar kursen om? Kursen kan i grova drag delas upp i tre delar: 1. Objekt-orienterad programmering 2. Grafiska användargränssnitt 3. Datastrukturer Dessutom genomsyras hela kursen av hur man i olika steg (som analys, design, implementering, testning och underhåll) utvecklar programvara, dvs hur man använder systematik när man utvecklar programvara. 2

Realistisk bild av vattenfallsprocessen (används vid programutveckling) Analys Design Implementering Testning Underhåll 3

Vattenfallsmodellen Specifikation: En beskrivning av problemet i text. Analys: Analysera problemet (tillsammans med potentiella användare) för att förstå problemet (vad ska göras?). Design: Tänk ut hur man ska gå till väga för att lösa problemet, hitta en plan (hur ska det göras?). Resultatet blir en översikt och beskrivning (i text) av komponenterna samt figurer (UML, skärmbilder, etc.). Implementering: Genomför planen genom att konstruera ett program i ett programmeringsspråk. Testning: Se tillbaka. Kontrollera att programmet fungerar som det ska. Underhåll: Rätta till, lägg till. 4

Objektorienterad programmering I kursen använder vi Java som är ett objektorienterat språk. Vad är ett objektorienterat program? Det är ett program som består av en samling delar (kallade objekt) som samarbetar för att genomföra en uppgift. Vad är då objektorienterad programmering? Det är processen att skriva en modell i ett objektorienterat språk genom att definiera de objekt den innehåller och relationerna mellan dem. 5

Hur gör man modeller? Objekt modellerar substantiv : - konkreta ting som buss, apa, bok, etc. - abstrakta ting som möte, kurs, etc. Objekt samarbetar genom att skicka varandra meddelanden om att genomföra viss operationer och genom att svara på sådana meddelanden från andra objekt (dessa motsvaras av verb ). 6

Hur gör man modeller? Sådant ett objekt kan göra kallas ett objekts förmågor (metoder). Dessa motsvaras ofta av verb. Sådant ett objekt känner till kallas dess egenskaper (instansvariabler). Tre typer: - attribut (ofta adjektiv som grön, lång, etc.) - komponenter (ett objekt innehåller eller är sammansatt av sina delar) - associationer till peer objekt (ett objekt känner till sina peer objekt) Vid modellering ska man abstrahera bort detaljer (förenkla). 7

Komplexitet Trots att vi abstraherar bort alla detaljer vi kan kan en modell bli ganska komplex. Objektorienterad programmering erbjuder flera tekniker för att hantera denna komplexitet: - inkapsling (man gömmer vissa saker hos ett objekt som andra objekt inte behöver veta om) - del-hierarkier (samlingen av ett objekt, dess delar, delarnas delar etc.) - arv (om vissa klasser har vissa egenskaper och förmågor som är gemensamma kan vi samla dessa i en klass) 8

Tänk på att: Klasser grupperar ihop liknande objekt. Arv grupperar ihop liknande klasser. Gränssnitt (interface) grupperar ihop klasser efter en viss roll de spelar, exempelvis att förflytta sig. 9

Laboration 1 - Komposition Syftet med laborationen var att: - göra klasser med komponenter (sammansatta objekt) - göra klasser med peer objekt 10

UML-diagram Bowl Iguana - _color: Color - _leftbackleg, rightbackleg: Leg - _fooddish: Bowl - _cage: Cage 2 Leg + Leg() + move(): void Cage + Iguana() + move(): void + eat(): void Klass-diagram för Leguan-klassen och relaterade klasser 11

Java-kod (Leguan-klassen) /** * This class is a very simple model of an iguana. */ public class Iguana { // first model the properties private Color _color; // attributes private Leg _leftbackleg, _rightbackleg; // components private Bowl _fooddish; // peer objects private Cage _cage; // put the constructor second public Iguana(Bowl abowl, Cage acage) { _color = GREEN; _leftbackleg = new Leg(); _rightbackleg = new Leg(); _fooddish = abowl; _cage = acage; } } // put the methods third, for example public void move() { _leftbackleg.move(); _rightbackleg.move(); } 12

Laboration 2 Arv, polymorfism, gränssnitt Syftet med laborationen var att: ge övning i att använda arv ge övning i att göra gränssnitt och klasser som implementerar gränssnitt illustrera polymorfism, dvs hur man definierar instansvariabler som fungerar polymorfiskt 13

Arvshierarki Animal Reptile Mammal Bird Iguana Monkey Penguin Figur 3.1 (s. 101) Swan - UML-notation, träddiagram - arv är en relation mellan två klasser där subklassen ärver alla egenskaper och förmågor av superklassen (och dess superklasser) - arv sparar arbete (jmf. s. 102) - arv är en är -relation (fågel är ett djur) - superclass (parent class, base class, överklass) - subclass (child class, derived class, underklass) - subklassen utvidgar (extends) och specialiserar superklassen - varje klass i Java har exakt en superklass (utom Object); Crow en klass kan ha godtyckligt många subklasser (single inheritance) 14

UML-diagram för gränssnitt <<interface>> Mover Namnval: -er, -able (engelska) Dog Bicycle Planet -are, -bar (svenska) Figur 4.1 (s. 130) 15

Arvspolymorfism För parametrar och variabler gäller att: aktuell typ = deklarerad typ eller någon subklass till den deklarerade typen Exempel: Person person = new Superhero(); SuperHero hero; Skyscraper skyscraper;... hero.leap(skyscraper); TallBuilding Skyscraper Person Superhero Shape Shape shape = new Ellipse(); Ellipse 16

Gränssnittspolymorfism Om den deklarerade typen (för parametrar och variabler) är ett gränssnitt gäller att: aktuell typ = en klass eller subklass till en klass som implementerar gränssnittet Exempel: Mover mover = new Meteor(); mover.move(); <<interface>> Mover Meteor 17

Laboration 3 GUI Syftet med laborationen var att: Ge övning i att göra grafiska användargränssnitt (GUI), dvs - hur man skapar komponenterna i ett GUI, - hur man arrangerar dem i ett fönster och - hur interaktionen med användaren sker. 18

För att göra grafiska användargränssnitt: Måste man veta hur man skapar komponenterna i ett GUI och vilka det finns. De mest grundläggande är JFrame, JPanel, JButton och JLabel. Måste man veta hur man arrangerar komponenterna i ett fönster. Man kan använda sig av Måste man veta hur interaktionen med användaren sker (koppla lyssnare till komponeneterna). 19

Laboration 4 ADT:er och datastrukturer Syftet med laborationen var att: ge övning i att använda abstrakta datatyper (ADT) ge övning i att använda olika datastrukturer ge övning i att använda kontrakt (för- och eftervillkor) ge övning i säker inmatning 20

ADT:er och datastrukturer Dessa två begrepp är kopplade till varandra men de står för olika saker. En ADT (abstrakt datatyp) är just abstrakt och är inte kopplad till något programmeringsspråk eller till implementering. En datastruktur är konkret och till de flesta programmeringsspråk finns en eller flera inbyggda datastrukturer. 21

ADT (abstrakt datatyp) En ADT är en programspråksoberoende beskrivning av en mängd data och operationer på denna data för att lagra, komma åt och manipulera den. Abstrakta datatyper är abstrakta i den meningen att det inte finns definierat hur datan och operationerna är implementerade. Primitiva datatyper som heltal och flyttal har värde och operationer (t.ex. plus, minus, multiplikation och division). Precis som primitiva datatyper har värde och operationer har också abstrakta datatyper det. I objektorienterade programmeringsspråk (som Java) implementeras ADT:er med klasser. 22

ADT (abstrakt datatyp) Exempel på vanliga abstrakta datatyper är: - mängd - sekvens (lista, kö, stack) - träd (binärt sökträd, AVL-träd, B-träd) - graf I lab 3 kom vi i kontakt med ADT:n Memory som är en beskrivning av den data och de operationer (på den datan) som behövs för en miniräknare. Många programmeringsspråk har inbyggda implementationer av vissa ADT:er. Exempelvis finns olika list-implementationer i Java. I Java finns också olika gränssnitt för att underlätta implementerandet av ADT:er. 23

Datastruktur En datastruktur är en samling data (sammanbundna på något sätt) med ett namn och en mängd operationer. Operationerna kan variera från datastruktur till datastruktur men inkluderar metoder för att ge åtkomst till datan. När man implementerar en ADT kan man behöva en datastruktur. En datastruktur kan modellera en abstrakt datatyp. I Java finns flera datastrukturer som modellerar en lista: - Vector (bygger på en array) - ArrayList (bygger på en array) - DefaultListModel (bygger på en Vector) - LinkedList (bygger på länkade noder) 24

Laboration 5 Länkad lista Syftet med laborationen var att: ge övning i att implementera en länkad lista och ge övning i testning _head 25

Laboration 6 Rekursion, datastrukturen träd och filhantering Syftet med laborationen var att: ge övning i att skriva rekursiva metoder ge övning i att implementera datastrukturen träd ge övning i filhantering ge övning i undantagshantering 26

För att använda rekursion krävs: Ett problem som innehåller ett eller flera delproblem som liknar problemet självt. Ett enkelt fall av problemet som är lätt att lösa (utan rekursion). Detta kallas basfallet. Ett sätt att förenkla problemet så att det kommer närmare basfallet. 27

Träd Ett träd är en datastruktur som tillåter oss att modellera sådant som vi inte kan modellera med linjära datastrukturer. Ett datavetenskapligt träd består av noder med pilar emellan. Ett datavetenskapligt träd ritas upp och ner med roten överst. Ett träd representerar både en samling noder och någon form av relation mellan dem. 28