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

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

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

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

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

OOP Objekt-orienterad programmering

Klasshierarkier - repetition

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

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

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

Arv innebär att man skapar en ny klass (subklass) utifrån en redan existerande klass (superklass, basklass).

Arv. Objektorienterad och komponentbaserad programmering

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

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

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

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

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

Föreläsning 13 Innehåll

JAVA Mer om klasser och objektorientering

Imperativ programmering. Föreläsning 4

Laboration 1 - Grunderna för OOP i Java

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

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

Objektorienterad Programmering (TDDC77)

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

DAT043 - Föreläsning 7

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

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

OOP Objekt-orienterad programmering

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

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

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

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

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

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

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

Introduktion till arv

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

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

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

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

Föreläsning 5-6 Innehåll

Repetition av viktiga begrepp inom objektorienterad programmering

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

Objektorienterad Programmering (TDDC77)

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

1 Repetition av viktiga begrepp inom objektorienterad programmering

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

OOP Objekt-orienterad programmering

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

Objektorienterad programmering i Java

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

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

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

Objektorienterad programmering (OOP) Föreläsning 15 & 16. Klasser för olika slags fordon. Klasser och objekt

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

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

TENTAMEN OOP

TENTAMEN OOP

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

Konstruktion av klasser med klasser

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

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

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

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

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

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

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Exempel på användning av arv: Geometriska figurer

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

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

TDDC76 - Programmering och Datastrukturer

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

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

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

Objektorienterad programmering. Grundläggande begrepp

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

Classes och Interfaces, Objects och References, Initialization

LÖSNINGSFÖRSLAG TILL TENTAMEN PROGRAMMERINGSMETODIK MOM2 - JAVA, 4P.

Instuderingsuppgifter läsvecka 2

Lösningar till tentamen i EDAF25

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

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

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

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

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

Polymorfi. Objektorienterad och komponentbaserad programmering

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

Transkript:

Objektorienterad programmering Vi började med att programmera i main, sedan gick vi vidare till flera metoder i en klass. Nu är det dags för flera klasser. Objektorienterad programmering Relationer mellan klasser Arv Polymorfism Association Aggregat Målen med OOSU Att få en direkt modell av verkligheten (utnyttja de objekt som finns i verkligheten) Inkapsling, modulariserade system=stabila system Förändringsbara system Återanvändbara system (helt eller delvis) Enhetligt tankesätt Enhetlig terminologi Objektorienterad programmering Startade i Norge på 60-talet Norsk Regnesentral Ett språk för att simulera verkliga förlopp (SIMULA) Programmets funktionalitet skapas genom en spegling av de objekt som beskriver förloppet i verkligheten Karlstads Universitet, Johan 1

Klass I ett program kan flera objekt ha gemensamma attribut och metoder. Gemensamma egenskaper beskrivs generellt i en klass En klass är en mall som beskriver hur objekt ur den klassen ser ut Objektorienterade begrepp Abstrakt klass Konkret klass Fig draw (x, y) Abstrakt metod, ingen implementering Attribut Rektangel height width draw (x, y) Circle radius draw (x, y) Konkret metod Inkapsling Principen att skydda (kapsla in) attribut och metoder i ett objekt så att de inte kan påverkas utifrån. Man skapar vissa väldefinierade in och utgångar för kommunikation En förmedlare objekt Kollar indata Ålder kan inte vara negativt Gör förändringar Räknar upp värde innan man returnerar Karlstads Universitet, Johan 2

Exempel/inkapsling public class Kvadrat { private int isida; public int area () { return isida*isida; public int omkrets () { return 4*isida; public int getsida () { return isida; public void setsida (int b) { if(b>0) isida = b; else isida=0; setsida getsida isida Kvadrat isida area omkrets getsida setsida area omkrets Konstruktormetoden Då ett Javaobjekt skapas görs det mha. nyckelordet new KlassNamn(); KlassNamn() är ett anrop till en metod med samma namn som klassen (kallas konstruktor) denna metod måste anropas vid tillverkning av objekt går att definiera en egen konstruktor, används isf. om ingen egendefinierad används en defaultkonstruktor Om en egendefinierad konstruktor finns måste den användas Konstruktoranrop Vid egendefinierad konstruktor i superklass i subklass måste ett anrop till superklassens konstruktor ske manuellt super(param..); Vid användande av defaultkonstruktor i superklass anrop kommer att ske automatiskt innan subklassens konstruktor körs Karlstads Universitet, Johan 3

Arv Objekt (instanser) skapas (instansieras) ur en klass. (datatyp-variabel) En klass kan ärva egenskaper från en annan klass (gen.-spec.) Bil Superklass Last bil Person bil Subklasser Arv i Java Finns bara enkelt arv Och det skall man vara glad för Vad får man om man ärver hus och båt? Skapas med nyckelordet extends det går bara att ärva public och protected deklarerade metoder och attribut Object-klassen Alla klasser har via superklass eller direkt ett arv från superklassen Object ger möjlighet till gemensam referens till alla objekt i ett system den mest generella referensen Karlstads Universitet, Johan 4

Exempel/ arv class SuperKlass { public void skrivut() { System.out.println("Nu körs superklassens skrivut"); public void skriv() { System.out.println("Nu körs skriv"); class SubKlass extends SuperKlass { public void skrivut() { super.skrivut(); System.out.println("Nu körs subklassens skrivut"); public static void main(string [] args) { SubKlass s=new SubKlass(); s.skrivut(); s.skriv(); Polymorfism Förmågan att låta objekt skapade ur olika klasser hantera samma meddelande men på olika sätt. Det är mottagaren och inte den som frågar som avgör hur meddelandet ska behandlas. Polymorfism symb 0 1 2 3 4 5 Symbol Symbol Symbol Symbol Symbol Symbol draw void ritaalla (Symbol [] symb) { for (int i = 0; i < symb.length; i++) { symb[i].draw(); Karlstads Universitet, Johan 5

Exempel polymorfism (1/2) class Triangel extends Figur{ public void skriv(){ System.out.println("Triangel"); class Kvadrat extends Figur{ public void skriv(){ super.skriv(); /* OBS! Raden ovan har ej med exemplet att göra. Jag ville bara visa att super alltid funkar vid arv. */ System.out.println("Kvadrat"); Exempel polymorfism (2/2) class Figur{ public void skriv(){ System.out.println("Figur"); public void skriv2(){ System.out.println("skriv 2: Figur"); public static void main(string [] args) { Figur f=new Triangel(); f.skriv(); f=new Kvadrat(); f.skriv2(); f.skriv(); Aggregat Ett objekt som består av andra objekt har en aggregatsrelation Blir attribut i övergripande objekt Bil Däck Karlstads Universitet, Johan 6

Aggregat i Java class Aggregat{ private Tal t; public class Tal{ private int tal; public Aggregat(){ t=new Tal(); public void sett(){ t.settal(47); public int gett(){ return t.gettal(); public static void main(string [] args){ Aggregat a=new Aggregat(); a.sett(); System.out.println(a.getT()); public void settal(int t){ tal=t; public int gettal(){ return tal; Association Finns en statisk koppling mellan klasser dock används den dynamiskt mellan objekt Ett objekt känner annat objekt Per:Förare körbil TYG 133:Bil Association i Java public class Association { private Tal t; public Association(Tal tin){ t=tin; public void sett(){ t.settal(42); public int gett(){ return t.gettal(); public class Tal{ private int tal; public static void main(string [] args){ Tal t=new Tal(); Association a=new Association(t); a.sett(); System.out.println(a.getT()); public void settal(int t){ tal=t; public int gettal(){ return tal; Karlstads Universitet, Johan 7

Åtkomstmodifierare till fält och metoder private inkapsling, åtkomst enbart i objektet protected inkapsling, åtkomst enbart i objektet, kan ärvas public ej inkapsling, åtkomst överallt Paket åtkomst Metodmodifierare (1/2) final Metoden går inte att omdefiniera i subklasser synchronized Metoden innehåller synkroniseringslås, används vid flertrådade applikationer native Metoden är implementerad i annat programmeringsspråk Metodmodifierare (2/2) abstract Metoden saknar implementation, måste implementeras i subklasss static Metoden är en klassmetod som kan anropas direkt via klassnamnet, har endast tillgång till static deklarerade metoder och attribut (existerar fristående av objekt) public, private och protected inkapslingskontroll Karlstads Universitet, Johan 8