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

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

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

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

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)

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

Klasshierarkier - repetition

2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering

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

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

OOP Objekt-orienterad programmering

Föreläsning 13 Innehåll

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Konstruktion av klasser med klasser

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

Klasshierarkier. Klasser kan byggas på redan definierade klasser

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

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

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 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äsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

OOP Objekt-orienterad programmering

Objektorienterad Programmering (TDDC77)

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

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

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

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

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

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

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

JAVA Mer om klasser och objektorientering

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

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

Instuderingsuppgifter läsvecka 2

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

Laboration 1 - Grunderna för OOP i Java

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

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

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

Arv. Objektorienterad och komponentbaserad programmering

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

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

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

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

DAT043 - Föreläsning 7

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

Polymorfi. Objektorienterad och komponentbaserad programmering

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

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

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

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

Objektorienterad Programmering (TDDC77)

Föreläsning 5-6 Innehåll

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

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

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

Lösningsförslag övning 2.

Malmö högskola 2008/2009 CTS

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

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

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

TENTAMEN OOP

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

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.

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

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

JAVAUTVECKLING LEKTION 11

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

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

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Laboration 1: Figurer i hierarki

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

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

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

TENTAMEN OOP

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

DD1342 Programkonstruktion för F1,

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

Objektorienterad programmering i Java

Modeller, Objekt och Klasser

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

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

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

Imperativ programmering. Föreläsning 4

Malmö högskola 2007/2008 Teknik och samhälle

1 Egna klasser. 1.1 En punkt-klass

Repetition av viktiga begrepp inom objektorienterad programmering

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

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

1 Repetition av viktiga begrepp inom objektorienterad programmering

OOMPA 2D1359 Föreläsning 3

Introduktion till arv

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

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Malmö högskola 2007/2008 Teknik och samhälle

Arv (Inheritance) Multipelt arv finns i verkligheten. Överskuggning, metodbindning. Läsanvisning: ! Arv! Object, instanceof! Relationer!

Transkript:

2I1049 Föreläsning 5 Objektorienterad programmering i Java KTH-MI Peter Mozelius Objektorientering Världar uppbyggda av objekt Inte helt olikt vår egen värld Ett sätt att modularisera våra system Objekten delas in i klasser Klasserna kan ärva varandra En klass utökar/specialiserar en annan Ett antal klasser bildar en taxonomi Objektorientering Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning 1

Objektorientering En klass innehåller en specifikation som definierar beteenden och egenskaper hos de klassinstanser (objekt) som sedan skapas (instansieras) av klassen Av en klass Tax kan man sedan skapa en mängd olika taxar. I Java görs detta enligt: Tax t1 = new Tax(); Objektorientering Objektorientering i Java En enkel klass med en konstruktor: public class Katt { private String namn; public Katt(String s){ namn = s; //konstruktor //klassen Katt 2

Objektorientering i Java I en annan klass kan vi sedan instansiera ett valfritt antal kattobjekt: public class KattProgram { public static void main(string[] arg){ Katt k1 = new Katt( Jameson ); Katt k2 = new Katt( Schrödinger ); //main //KattProgram Är det något som saknas i klassen Katt? Inkapsling Att klasserna är enheter som innehåller både attribut och de operationer som bearbetar klassens attribut I Java innebär detta att klassens variabler ska hanteras av de metoder som finns definierade i samma klass Ett designmönster (design pattern) i UML: High cohesion - Low coupling Datagömning Att utöka idén om inkapsling och aktivt hindra andra klassers metoder från att komma åt klassens data Ger bättre säkerhet Minskar risken för namnkonflikter För att systemutvecklaren ska kunna välja olika grader av datagömning så finns det i Java olika modifierare 3

Javas modifierare För klasser, variabler och metoder finns det reserverade ord för åtkomstkontroll i Java De fyra modifierare som finns är: private protected public och om inte annat anges package/paketåtkomst Datagömning i Java Data deklareras så snålt som möjligt : private int x; Och åtkomsten sköts sedan med hjälp av åtkomstmetoder enligt: public int getx(){ return x; Datagömning i Java På samma sätt bygger man även metoder som kan ändra värdet på instansvariabler: public void setx(int i){ x = i; Accessmetoder Inspektorer Mutatorer Rast 15 min! 4

Överlagring Metoder och konstruktorer i en klass med samma namn MEN olika parameterlistor Exempel med konstruktorer: public Hund() { public Hund(String namn) { public Hund(String namn, String ras) { public Hund(String namn, String ras, boolean biterfolk) { Polymorfism polymorfism = mångformighet I en klasshierarki kan det i de olika klasserna finnas metoder med samma namn och samma argument/returtyp MEN med olika metodkroppar Objektorienterade språk har inbyggda mekanismer för dynamisk bindning Rätt metod körs automatiskt när programmet exekveras Polymorfism I en abstrakt basklass: public abstract class Figur Finns det en abstrakt metod: public abstract double visaarea(); I den ärvande klassen Rektangel: public class Rektangel extends Figur har metoden formats så att den passar för att räkna ut arean hos just en rektangel 5

Polymorfism I klassen Rektangel: public double visaarea() { return bredd * höjd; //visaarea i klassen Rektangel Medan den i klassen Cirkel överskuggas enligt: public double visaarea() { return PI * radie * radie; //visaarea i klassen Cirkel Överskuggning När en eller flera av superklassens instansmetoder omdefinieras i en eller flera subklasser Vid exekveringen så är det objektets klass som avgör vilken metod som anropas Olika objekt i en klasshierarki kan på detta sätt behandlas enhetligt utan att varje enskilt objekt måste klassbestämmas Att rätt metod automatiskt anropas under programkörningen kallas dynamisk bindning Dynamisk bindning i Java Om en instansmetod metod anropas via referensen ref enligt: ref.metod(); Så undersöker javainterpretatorn vilken klass objektet har som ref refererar till Om objektets klass har en passande metod() så körs denna Om inte, så letar javatolken vidare uppåt bland superklasserna tills en metod återfinns 6

Några reserverade ord Följande reserverade ord är bra att känna till: this syftar på den egna klassen super syftar på basklassen abstract förhindrar instansiering final förhindrar vidare arv static markerar klasstillhörighet (inte instanstillhörighet) Klassvariabler De flesta attribut är instansvariabler Alla objekt får då egna variabler Det finns dock undantagsfall då objekten i en klass behöver ha gemensamma klassvariabler I Java markeras detta med ordet static och en klassvariabel kan deklareras enligt: private static int klassvariabel; Klassvariabler En vanlig användning är när klassen behöver en räknare: public class Katt { private static int kattnummer; public Katt(){ ++kattnummer; 7

Klassen Object Alla klasser i Java har en gemensam grundläggande basklass: java.lang.object De metoder som finns i klassen Object ärvs därför av samtliga klasser och kan överskuggas Två metoder från klassen Object som ofta överskuggas är: public String tostring() public boolean equals(object obj) tostring() Bör överskuggas så att lämplig information ges vid utskrift av klassens instanser I en klass för att representera punkter: public class Punkt { private int x; private int y; så kan tostring() överskuggas enligt: tostring() public String tostring() { return [ + x +, + y + ] ; En utskrift av: Punkt punkt = new Punkt(3, 4); System.out.println(punkt); ger utskriften: [3,4] 8

Klasspecifikationer Specifikationer av Javas färdiga klasser: http://java.sun.com/j2se/1.5.0/docs/api/index.html API = Application Programmable Interface Två andra länkar med information om Java: http://www.javasoft.com http://www.javaworld.com Hemsida Laborationsdelens hemsida: http://www.dsv.su.se/~mio Tack för idag!! För er som vill så visar jag gärna: ArgoUML: http://argouml.tigris.org/ 9