Agenda. Objektorienterad programmering Föreläsning 13

Relevanta dokument
Objektorienterad programmering Föreläsning 12. Copyright Mahmud Al Hakim

Objektorienterad programmering Föreläsning 5

Objektorienterad programmering

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

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

JAVAUTVECKLING LEKTION 11

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

Objektorienterad programmering Föreläsning 11. Copyright Mahmud Al Hakim

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

Objektorienterad programmering Föreläsning 10. Copyright Mahmud Al Hakim Sorteringsalgoritmer

Objektorienterad programmering

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

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Objektorienterad programmering

Statistik över heltal

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

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

Klasshierarkier - repetition

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Static vs Dynamic binding Override vs Overload. Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018

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

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

Kopiering av objekt i Java

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

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

Övning 3. Datateknik A, Java I, 5 poäng

Kursplanering Objektorienterad programmering

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

Polymorfi. Objektorienterad och komponentbaserad programmering

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT / 42

Objektorienterad programmering

Lösningsförslag övning 2.

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

Objektorienterad programmering Föreläsning 6. Mer om klasser och typer Namnrymder Inkapsling Synlighet Statiska variabler Statiska metoder

OOP Objekt-orienterad programmering

CHALMERS TENTAMEN. 2018/2019, lp 1 DAT050. Uno Holmer

Objektorienterad programmering i Java

Agenda (obs! halvdag)

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

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

Objektorienterad programmering Föreläsning 15. Grafiska användargränssnitt (GUI Graphical User Interface)

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

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

Klasshierarkier. Klasser kan byggas på redan definierade klasser

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

kl Tentaupplägg

ID1004 Laboration 4, November 2012

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77)

DAT043 - Föreläsning 7

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

Modeller, Objekt och Klasser

Objektorienterad programmering Föreläsning 20

OOP Objekt-orienterad programmering

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

Objektorienterad programmering D2

TENTAMEN OOP

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

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

Grundläggande programmering. Grundläggande programmering. Idag. Kursinformation

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

Konstruktion av klasser med klasser

Objektorienterad programmering Föreläsning 2

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

TENTAMEN OOP

HI1024 Programmering, grundkurs TEN

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

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2

C++ Slumptalsfunktioner + switch-satsen

Objektorienterad programmering i Java I

Uppgift 1 ( Betyg 3 uppgift )

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

a. Vilka av följande påståenden är riktiga? Observera att felaktigt valda påståenden ger poängavdrag. (4p)

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

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

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

Laboration 1: Figurer i hierarki

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

Repetition av OOP- och Javabegrepp

Inledande programmering med C# (1DV402) Tärningarna ska kastas

TENTAMEN OOP

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

Java, klasser, objekt (Skansholm: Kapitel 2)

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

Repetition av OOP- och Javabegrepp

Föreläsning 13 Innehåll

TDDC77 Objektorienterad Programmering

public class BoundedCounter {

Arv och polymorfism i Java

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

Enkla variabler kontra referensvariabel

Programsystemkonstruktion med C++: Övning 2. Karl Palmskog september 2010

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

OOP Objekt-orienterad programmering

Klassen BST som definierar binära sökträd med tal som nycklar och enda data. Varje nyckel är unik dvs förekommer endast en

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

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Transkript:

Objektorienterad programmering Föreläsning 13 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webacademy.se Agenda Ett objektorienterat exempel Repetition Mer om arv Abstrakta klasser Abstrakta metoder Indexerare 1

Ett objektorienterat exempel Vi skall skriva ett program som låter användaren spela kortspelet Tjugoett med datorn. Kortspelet Tjugoett Spelet går till så att användaren får ett kort i taget och efter varje kort får avgöra om han vill ha ytterligare kort eller inte. Det gäller för användaren att försöka få summan av kortens valörer så nära 21 som möjligt utan att överstiga detta tal. Ess räknas som antingen 1 eller 14. Om användaren får över 21 förlorar man. Om användaren stannar under 21 får också datorn dra ett kort i taget. Om datorn får mer än 21 eller lägre poäng än användaren vinner användaren, annars vinner datorn. Datorn vinner på samma poäng. 2

Steg 1 Klassen Kort Klassen Kort beskriver spelkort. Vi behöver 2 uppräkningstyper (enum) som beskriver de fyra kortfärgerna (KLÖVER, RUTER, HJÄRTER, SPADER) och de olika valörerna (TVÅ, TRE, etc). Dessa uppräkningstyper deklareras utanför klassen. Vi kommer att behöva typerna i andra klasser senare. Uppräkningstyper Vi startar uppräkningen med 2 TRE blir 3 osv 3

Klassen Kort Instansvariabler och konstruktor Klassen Kort Egenskaper Värde ger kortets valör uttryckt som ett heltal 4

Klassen Kort ToString (version 1) Kom ihåg! Måste deklareras med ordet override eftersom den ärver en virtuell metod med samma namn från superklassen Object Ger en textversion av kortet t.ex. KLÖVER TVÅ Klassen Kort - Testprogram 5

Hur kan vi få bättre utskrifter? För att översätta ett korts färg och valör till lämplig textform använder vi två statiska fält (tabeller). Klassen Kort ToString (version 2) Exempel Om f är 0 så är färgtab[0] = Kl Exempel Om Värde är 2 (vi startar ju med 2) så är valörtab[2-2] = 2 (Fält indexeras alltid från 0) 6

Steg 2 Klassen Kortbunt En generisk lista av typen Kort Där kommer vi att spara alla kort En slumpgenerator behövs för att blanda korten Klassen Kortbunt Metoden NyKortlek() Metoden Clear från klassen List tar bort alla element från listan. Detta behövs om vill starta ett nytt spel Nästlade for-satser fyller lista med alla kombinationer av färger och valörer Metoden Add från klassen List lägger till ett nytt kort 7

Klassen Kortbunt Metoden ToString() Med hjälp av foreach löper vi igenom alla element i listan. Här anropas ToString från klassen Kort Klassen Kortbunt - Testprogram 8

Klassen Kortbunt Egenskaper Metoden Count från klassen List returnerar antal element i listan En indexerare behövs om man t.ex. vill skriva s += bunt[5] Där s är en variabel av typen string och bunt är ett objekt av klassen Kortbunt Indexeraren returnerar ett kort och metoden ToString i klassen Kort anropas automatiskt! Då kan man titta på ett kort utan att behöva ta bort kortet från listan. Klassen Kortbunt Egenskaper - Test Övning Visa sista kortet i bunten 9

Klassen Kortbunt Metoden Blanda() Metoden Count från klassen List returnerar antal element i listan Metoden byter plats på två slumpmässiga kort 100 gånger Metoden Next från klassen Random generera ett slumptal mellan 0 och max antal element i listan Klassen Kortbunt Test Metoden Blanda() 10

Klassen Kortbunt Flera användbara metoder Metoden Insert från klassen List infogar ett kort i den första positionen Metoden RemovAt(0) från klassen List tar bort ett kort från den första positionen Klassen Kortbunt Flera tester 11

Steg 3 Klassen Spelare En spelare kan antingen vara en människa eller en dator. Klassen Spelare kan därför vara en superklass. Vi vill inte skapa några objekt av klassen Spelare därför markerar vi klassen som abstrakt (abstract) Metoden Spela är en abstrakt metod (blir virtuell automatiskt). Abstrakta metoder har ingen implementering (semikolon istället för klamrar). Abstrakta metoder deklareras i subklasserna. Subklasser som inte har egna versioner av alla abstrakta metoder måste också vara abstrakta. Klassen Spelare Instansvariabler leken är en referens till den kortlek som används i spelet. Relationen är "känner-till. En spelare måste känna till den kortlek som används i spelet för att kunna dra kort från den. Fråga Vad händer om vi skriver Kortbunt leken = new Kortbunt(); Aktuell poäng hand är en kortbunt som beskriver de kort spelaren har på handen 12

Klassen Spelare Konstruktorer och egenskaper En ny spelare måste få en referens till den kortlek som används i spelet. Referensen kopieras vidare till spelarens instansvariabel leken Klassen Spelare Metoden NyttSpel() Poängen nollställs Metoden SlängKorten från klassen Kortbunt tar bort alla kort Metoden anropar i sin tur Clear från klassen List som tar bort alla element från listan (som finns i Kortbunt). 13

Klassen Spelare Metoden NyttKort() Del 1 Metoden tar bort det översta kortet från leken och lägger kortet överst i hand Kortet sparas och returneras Klassen Spelare Metoden NyttKort() Del 2 14

Klassen Spelare Metoden ToString Indexeraren används här! ToString från klassen Kort anropas automatiskt Steg 4 Klassen Människa Människa är en subklass till klassen Spelare En konstruktorinitierare läggs efter parameterlistan. : base anropar superklassens konstruktor. 15

Klassen Människa Metoden Spela() del 1 Spela är ju abstrakt (virtuell) i superklassen Vi måste åsidosätta (överskugga) metoden i subklassen med nyckelordet override Klassen Människa Metoden Spela() del 2 Metoderna NyttSpel och NyttKort finns i superklassen Spelare 16

Klassen Människa Metoden Spela() del 3 Steg 4 Klassen Dator Människa är en subklass till klassen Spelare Datorn måste känna till motspelaren. motspelare är en referens (Känner-Till-Relation) Konstruktorinitierare läggs efter parameterlistan. : base anropar superklassens konstruktor. 17

Klassen Dator Metoden Spela() Steg 4 Klassen Tjugoett 18

Klassen Tjugoett Main forts. 19