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

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

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

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

Arv. Objektorienterad och komponentbaserad programmering

Laboration 1 - Grunderna för OOP i Java

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

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

OOP Objekt-orienterad programmering

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

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

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

Klasshierarkier - repetition

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

OOP Objekt-orienterad programmering

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

Modeller, Objekt och Klasser

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

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

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

JAVA Mer om klasser och objektorientering

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

PROGRAMMERINGSTEKNIK TIN212

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

Tentamen i Grundläggande programmering STS, åk 1 fredag

Objektorienterad Programmering (TDDC77)

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

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

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

OOP Objekt-orienterad programmering

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

Konstruktion av klasser med klasser

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

DAT043 - Föreläsning 7

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

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

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

TENTAMEN OOP

Föreläsning 5-6 Innehåll

JAVAUTVECKLING LEKTION 11

Tentamen. Lösningsförslag

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

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Objektorienterad Programmering (TDDC77)

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

TENTAMEN OOP

Tentamen i Grundläggande programmering STS, åk 1 lördag

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

Objektorienterad Programmering (TDDC77)

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

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

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

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

Imperativ programmering. Föreläsning 4

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Objekt och referenser

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

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

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

Repetition av viktiga begrepp inom objektorienterad programmering

Introduktion till arv

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

Föreläsning 8 - del 1: Objektorienterad programmering (forts.) - Exempel

Föreläsning 13 Innehåll

1 Repetition av viktiga begrepp inom objektorienterad programmering

Instuderingsuppgifter läsvecka 2

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

Tentamen i Grundläggande programmering STS, åk 1 fredag

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

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

Kopiering av objekt i Java

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

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

Föreläsning 9: Arv och UML

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

Lösningsförslag övning 2.

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

TENTAMEN OOP

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa

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

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

Objektorienterad programmering i Java

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

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

Objekt och klasser - Introduktion

Enkla variabler kontra referensvariabel

Klasser och objekt. Henrik Johansson. August 20, 2008

2 b) Följande finns definierat: public class Spel String titel = "Spel"; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice("Röd"); tärningar[1]

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

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

Dugga i Grundläggande programmering STS, åk

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

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

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

2 b) Bodega bodegan = new Bodega(); double moms = 0.235; String namn = "Vargtass"; System.out.println(namn + " " + moms + bodegan.ändra(moms, namn); S

Transkript:

Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 14 I torsdags & fredags: arrayer Deklaration, initiering, åtkomst Arrayer är referenser Arrayer som parametrar och returvärden Exempel Idag, eftermiddag: Mer arrayer! Flerdimensionella arrayer Dessutom: klasser som ingår i Java

Föreläsning 14 Idag, förmiddag: arv och avancerad OO Arv: exempel och teori Arv: vad det är bra för Imorn: Arv: Ett större exempel Kommer på labben!

Vad och hur Ett exempel Teori Ett till exempel Varför Dagens föreläsning: arv Återanvändning Relationer mellan klasser Polymorfism

Vad och hur Ett exempel Teori Ett till exempel Varför Dagens föreläsning: arv Återanvändning Relationer mellan klasser Polymorfism

Arv: ett exempel Vi minns Person-klassen från lektion 2: Klassen Person har: namn adress ålder Vi behöver skapa en klass Student Klassen Student ska ha: namn adress ålder poäng Dom är ju nästan lika!

Arv: ett exempel Vi kan återanvända Person-klassen när vi skapar Student-klassen class Student extends Person { Nu innehåller Student redan från början allt som Person innehåller Vi behöver bara fylla på med det som skiljer: poäng

Vad och hur Ett exempel Teori Ett till exempel Varför Dagens föreläsning: arv Återanvändning Relationer mellan klasser Polymorfism

Skapa en klass Hund som ärver från klass Djur: Arv-teori: Hur man ärver class Hund extends Djur {... Djur kallas superklass till Hund Hund kallas subklass till Djur I Java kan en klass bara ärva från en annan klass

Arv-teori: Vad innebär arv? Subklassen får alla publika metoder och variabler som superklassen har: public static void main(string[] args) { Student nora = new Student( Nora ); Std.out.println(nora.geNamn()); genamn definierades i Person Eftersom Student ärver från Person, finns genamn även i Student

Subklassen kan anropa superklassens konstruktor från sin konstruktor Görs m.h.a. super (nyckelord i Java) Måste vara första raden i konstruktorn class Person { public Person(String namn, int alder) {... class Student extends Person { public Student(String n, int a, int p) { Arv-teori: Konstruktorer super(n, a); poang = p; Anropar konstruktorn i superklassen Person

Arv-teori: Överskuggning Subklassen kan definiera metoder med samma namn och parametrar som superklassen Subklassens metod ersätter superklassens Kallas överskuggning class Person { public void skrivut() {... class Student extends Person { public void skrivut() {... Överskuggar (ersätter) den ärvda skrivut

Arv-teori: Komma åt överskuggad metod Den överskuggade metoden kan anropas från subklassen m.h.a. super super refererar till ett objekt av superklassens typ class Person { public void skrivut() {... class Student extends Person { public void skrivut() { super.skrivut();... Anropar den överskuggade skrivut i Person

Arv-teori: Hur det ser ut i minnet class Student extends Person {... Student s = new Student(); Objekt av klassen Student innehåller ett objekt av klassen Person super i Student refererar till det inbyggda Person-objektet s: Student Person super

Arv-teori: public, protected och private Subklassen kommer åt publika variabler och metoder, men inte privata protected ligger mellan private och public: Synlig i: private protected public klassen själv subklasser andra klasser ja nej nej ja ja nej ja ja ja

Vad och hur Ett exempel Teori Ett till exempel Varför Dagens föreläsning: arv Återanvändning Relationer mellan klasser Polymorfism

Arv-exempel: Bibblan Vi ska hjälpa biblioteket med ett program som håller reda på alla låntagare och lån Biblioteket har böcker och filmer Vårt program behöver följande klasser: Person Verk Lantagare Film Bok Pilarna anger arv: från subklass till superklass

Arv-exempel: Bibblan Person Verk Lantagare Film Bok Vi skapar klasserna Verk, Bok och Film Ett Verk har en titel och en lånestatus En Bok har dessutom en författare En Film har dessutom en längd Alla klasser kan skapas och skrivas ut. Instansvariablerna kan läsas av Alla Verk kan lånas och lämnas tillbaka

Vad och hur Ett exempel Teori Ett till exempel Varför Dagens föreläsning: arv Återanvändning Relationer mellan klasser Polymorfism

Återanvändning: Varför Varför återanvända kod? Programmeraren kan koncentrera sig på kärnan av sin uppgift, slipper återuppfinna hjulet Stora uppgifter kan bli överskådliga för programmeraren Spar tid & pengar Om något behöver ändras, räcker det att ändra på ett ställe

Återanvändning Mål: återanvänd kod Hur? Objektorienterat synsätt: Målet nås genom inkapsling och arv

Återanvändning: genom inkapsling Mål: återanvänd kod Hur? Idé 1: inkapsling Ett objekt sköter sig själv så mycket som möjligt Objektets inälvor skyddas trygghet Skilj på det som används internt och det som används av andra struktur, tydlighet För den som återanvänder: tydligt vilka metoder som är relevanta

Återanvändning: genom arv Mål: återanvänd kod Hur? Idé 1: inkapsling Idé 2: arv = befintlig klass utökas En hel klass återanvänds för att skapa en annan klass Exempel: Vi kan återanvända: Person Fordon Organism Djur Däggdjur när vi skapar: Student, Lärare Cykel, Bil, Båt Djur Däggdjur Gris

Vad och hur Ett exempel Teori Ett till exempel Varför Dagens föreläsning: arv Återanvändning Relationer mellan klasser Polymorfism

Relationer mellan klasser: överblick Har (kallas komposition) Anger beståndsdelar Exempel: En person har ett personnummer En bok har en titel Känner till Anger kännedom Exempel: En person känner till sin make/maka En låntagare känner till de böcker hon/han lånat Är (kallas arv) Anger utökning Exempel: En student är en sorts person En bok är en sorts verk

Relationer mellan klasser: Har (komposition) Anger beståndsdelar, inneslutning Exempel: En person har ett personnummer En bil har fyra hjul En Rektangel har två Horn I Java: instansvariabel class Person { private String namn; private String adress; private int alder; Person har dessa

Relationer mellan klasser: Känner till Anger kännedom Exempel: I skatteverkets register: En person känner till sin make/maka I bibliotekets register: En låntagare känner till sina böcker Författarregistret känner till varje författare I Java: instansvariabel som är referens class Person { private Person makemaka; Person känner till sin make/maka class Lantagare extends Person { private Bok[] bocker; Lantagare känner till sina böcker

Relationer mellan klasser: Är (arv) Anger utökning, d.v.s. arv Exempel: En student är en sorts person En STS-student är en sorts student En lärare är en sorts person Bildar en hierarki: Person Lärare Student STS-Student

Relationer mellan klasser: Är-relationen bildar en hierarki class Person { private String namn; public String genamn() { return namn;

Relationer mellan klasser: Är-relationen bildar en hierarki class Person { private String namn; public String genamn() { return namn; class Larare extends Person { private int rumsnr; public int gerumsnr() { return rumsnr;

Relationer mellan klasser: Är-relationen bildar en hierarki class Person { private String namn; public String genamn() { return namn; class Student extends Person { private int poang; public int gepoang() { return poang; class Larare extends Person { private int rumsnr; public int gerumsnr() { return rumsnr;

Relationer mellan klasser: Är-relationen bildar en hierarki class Person { private String namn; public String genamn() { return namn; class Student extends Person { private int poang; public int gepoang() { return poang; class Larare extends Person { private int rumsnr; public int gerumsnr() { return rumsnr; class STSStudent extends Student { private int labgrupp; public int gelabgrupp() { return labgrupp;

Vad och hur Ett exempel Teori Ett till exempel Varför Dagens föreläsning: arv Återanvändning Relationer mellan klasser Polymorfism

Polymorfism: Exempel Biblioteket behöver ett register över alla Verk Klasen VerkRegister kan spara alla Verk i en array. Ett fragment av klassen: class VerkRegister { private Verk[] register; private int antalverk; public void lagginverk(verk verk) { register[antalverk] = verk; antalverk++; Kan man lägga in böcker och filmer i registret?

Polymorfism: Exempel class VerkRegister { private Verk[] register; private int antalverk; public void lagginverk(verk verk) { register[antalverk] = verk; antalverk++; Man kan lägga in böcker och skivor i registret! Går eftersom de är subklasser till Verk Kallas polymorfism poly = många, morphos = form ett Verk kan ha många former

Polymorfism: Teori Regel: Antag att Hund är subklass till Djur Om en variabel är av typ Djur, kan den referera till objekt av typ Hund En hund är ett djur Andra hållet funkar inte: Om en variabel är av typ Hund, kan den INTE referera till objekt av typ Djur Ett djur är inte en hund Funkar för parametrar till metoder Till en metod som tar Djur som parameter kan vi skicka en Hund

Arv-teori: Klassen Object Alla klasser i Java ärver automatiskt Object förfader till alla klasser Har några generella metoder (som vi inte använder i denna kurs