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

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

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

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

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

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

DAT043 - Föreläsning 7

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

"Ä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 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Lösningsförslag övning 2.

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

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

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

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

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

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

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

Classes och Interfaces, Objects och References, Initialization

Objektorienterad Programmering (TDDC77)

Enkla variabler kontra referensvariabel

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

Konstruktion av klasser med klasser

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

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

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

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

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Klasshierarkier. Klasser kan byggas på redan definierade klasser

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

Modeller, Objekt och Klasser

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

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

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

Laboration 1 - Grunderna för OOP i Java

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

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

public interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;

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

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

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Föreläsning 5-6 Innehåll

Objektorienterad Programmering DAT043

TDDD78 Viktiga begrepp, del 2

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

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

Objektorienterad Programkonstruktion. Föreläsning 7 24 nov 2015

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

TENTAMEN OOP

Objektorienterad Programkonstruktion. Föreläsning dec 2015

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

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

Klasshierarkier - repetition

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

Polymorfi. Objektorienterad och komponentbaserad programmering

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

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

Föreläsning 13 Innehåll

Föreläsning 4. Klasser och objekt

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

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

OOP Objekt-orienterad programmering

Java, klasser, objekt (Skansholm: Kapitel 2)

OOP Objekt-orienterad programmering

Övningar Dag 2 En första klass

Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering

LULEÅ TEKNISKA UNIVERSITET

Lösningsförslag. 1 Lösningsförslag. Uppgift 1

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

Dynamisk bindning och polymorfism

1 Egna klasser. 1.1 En punkt-klass

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

Introduktion till Java

Introduktion till Datalogi DD1339. Föreläsning 3 29 sept 2014

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

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

Objektorienterad programmering

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Objekt och klasser - Introduktion

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

Mutability och State. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018

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

Enkla variabler kontra referensvariabel

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

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

TDDD78 Objektorientering i Java, del 4. Hur vet man om två objekt är lika? Hur undviker man objekt och när?

Föreläsning 6. Mer om klasser och objekt. Enkla variabler kontra referensvariabel. Omslagsklassen Integer. Referensvariabler

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

public class BoundedCounter {

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )

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

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

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

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

Transkript:

Objektorienterad Programkonstruktion Föreläsning 2 2 nov 2016

Objekt - klass Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4

Objekt - klass

Objekt - klass

Objekt - klass +

Objekt - klass public class { +

Objekt - klass public class { private double height; private double width; +

Objekt - klass + public class { private double height; private double width; public void setheight(double h){ height = h;

Objekt - klass + public class { private double height; private double width; public void setheight(double h){ if(h >= 0){ height = h; else{ height = 0;

Objekt - klass + public class { private double height; private double width; public void setheight(double h){ height = h; public void setwidth(double w){ width = w;

Objekt - klass public class { private double height; private double width;... + public double getarea(){ return height*width;

Objekt - klass + public class { private double height; private double width;... public double getarea(){ double a; a = height*width; return a;

Objekt - klass public class { private double height; private double width;... + public (){ height = 1; width = 1;

Att skapa objekt Vi kan skapa nya objekt med nyckelordet new. Då anropas konstruktorn, och ett nytt objekt returneras. Ex: myrect; // Deklarerar en variabel // som kan lagra objekt // av typen myrect = new (); // Ett nytt objekt av // skapas och // och lagras i myrect

Terminologi Vi hänvisar till fält i ett objekt med punktnotation: Ex: myrect.height Metoder anropas på liknande vis, men tar (eventuellt tomma) argument också: Ex: myrect.setheight(10) Ett fält i ett objekt, kan i sig vara ett objekt, då kan vi skriva längre uttryck för att hänvisa till något. Ex: myrect.color.getblue(); // ger B värdet från färgens // RGB värde

Att referera sig själv Alla objekt kan explicit referera sig själva med hjälp av nyckelordet this. Ett metodanrop av typen this() blir ett anrop av den egna konstruktorn. Detta kan användas om man vill skriva en konstruktor som anropar en annan: public class Exempel{ private int a; private double b; public Exempel(int a, double b){ this.a = a; this.b = b; public Exempel(int a){ this(a, (double)a);

Arv +

Arv + Color -color +setcolor

Arv En klass B som ärver från en annan klass A får automatiskt samma fält och metoder som A, om man inte deklarerar om dessa i B. I B kan man lägga till ytterligare fält och metoder, eller definiera om de gamla, sk överskuggning Om man i B vill använda en metod så som den definierades i A, kan man ange detta explicit med hjälp av nyckelordet super Ex: super.dosomething() I B:s konstruktor(er) kommer automatiskt A:s argumentlösa konstruktor att anropas om man inte explicit anger något annat. Kom ihåg att om A har fält som är privata, så kommer B inte att kunna anropa dessa direkt!

Arv från Object Om inget annat deklareras ärver en klass från superklassen Object Om en klass explicit sägs ärva från en annan klass kommer denna andra klass att direkt eller indirekt ärva från Object (Det går inte att skapa cirkulära arvskedjor)

Arv från Object Object clone() - Creates and returns a copy of this object. boolean equals(object obj) - Indicates whether some other object is "equal to" this one. String tostring() - Returns a string representation of the object. protected void finalize() - Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. Class<?> getclass() - Returns the runtime class of this Object. int hashcode() - Returns a hash code value for the object. void notify() - Wakes up a single thread that is waiting on this object's monitor. void notifyall() - Wakes up all threads that are waiting on this object's monitor. void wait() - Causes the current thread to wait until another thread invokes the notify() method or the notifyall() - method for this object. void wait(long timeout) - Causes the current thread to wait until either another thread invokes the notify() method or the notifyall() method for this object, or a specified amount of time has elapsed. void wait(long timeout, int nanos) - Causes the current thread to wait until another thread invokes the notify() method or the notifyall() method for this object, or some other thread interrupts the current thread, or a certain amount of real time has elapsed.

Gränssnitt + Color -color +setcolor

Gränssnitt + Color -color +setcolor drawat(position)

Gränssnitt + <interface>drawable drawat(position) Color -color +setcolor drawat(position)

Gränssnitt + <interface>drawable +drawat(position) Color -color +setcolor +drawat(position)

Gränssnitt + <interface>drawable +drawat(position) Color -color private void DrawCentered(Drawable d){ d.drawat(centerposition); +setcolor +drawat(position)

Gränssnitt + <interface>drawable +drawat(position) Color -color +setcolor +drawat(position) private void DrawCentered(Drawable d){ d.drawat(centerposition); Color mycr; mycr = new Color(); DrawCentered(myCR);

Gränsnitt (Interface) Gränssnitt kan liknas vid en superklass som inte innehåller några konkreta metoder eller instansvariabler Gränsnitt kan ärva från flera andra gränsnitt Alla metoder i ett gränsnitt är automatiskt publika exempel (från Java Tutorial): public interface GroupedIntfce extends Intfce1,Intfce2,Intfce3 { // constant declarations public static final double E = 2.718282; // base of natural logarithms // method signatures public void dosomething (int i, double x); public int dosomethingelse(string s);

Exempel: Gränssnitt och Arv

Klass eller instans? Med hjälp av nyckelordet static kan vi bestämma att en metod eller ett fält ska tillhöra själva klassen i stället för en specifik instans av klassen (ett objekt) Instansmetoder kan komma åt instansvariabler och -metoder direkt Instansmetoder kan komma åt klassvariabler och -metoder direkt Klassmetoder kan komma åt klassvariabler och -metoder direkt men Klassmetoder kan inte komma åt instansvariabler och -metoder direkt

Klass/instans, exempel public class Exempel{ public class FelaktigtExempel{ private int a = 5; static int b = 3; public int geta(){ return a; public int getb(){ return b; // OBS! denna kod är // felaktig!! private int a = 5; static int b = 3; public static int geta(){ return a; public static int getstatb(){ return b; non-static variable a cannot be referenced from a static context

När bör man använda klassmetoder/-fält? Egenskaper som är gemensamma för alla objekt ex: räknare för antalet instanser Konstanter (kan deklareras static final för att förhindra att de ändras av misstag) ex: Math.PI, Math.E Metoder som utför operationer med primitiva variabler ex: Math.cos(double a), Math.round(double a) Metoder som fungerar oberoende av om objekt av en viss klass har skapats ex: Map.convertKmToMiles(double km)