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

Relevanta dokument
Objektorienterad Programmering (TDDC77)

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

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

Objektorienterad Programmering (TDDC77)

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

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77)

Outline. Objektorienterad Programmering (TDDC77) Abstrakta klasser. Abstrakta metoder. Abstrakta klasser. Gränssnitt. Uppräkningar (enum) Ahmed Rezine

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

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

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

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

Objektorienterad Programmering (TDDC77)

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

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

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

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

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

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

Tentamen för TTIT71 Programmering kl Institutionen för datavetenskap Linköpings universitet. Uppgift 1. (2 p)

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

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

DAT043 - Föreläsning 7

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

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

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

OOP Objekt-orienterad programmering

Konstruktion av klasser med klasser

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

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

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

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

Föreläsning 13 Innehåll

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

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

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

Classes och Interfaces, Objects och References, Initialization

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

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

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

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

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

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

Objektorienterad Programmering (TDDC77)

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

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

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

Klasshierarkier. Klasser kan byggas på redan definierade klasser

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

Föreläsning 15: Repetition DVGA02

Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser

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

OOP Objekt-orienterad programmering

Arv. Objektorienterad och komponentbaserad programmering

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Objektorienterad Programmering (TDDC77)

TENTAMEN: Objektorienterad programmering. Läs detta! Börja varje hel uppgift på ett nytt blad. Skriv inte i tesen.

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

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

Lösningsförslag till tentamen

Kopiering av objekt i Java

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

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

Objektorienterad programmering Föreläsning 5

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

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

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

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

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

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

Repetition av OOP- och Javabegrepp

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Lösningar för tenta 2 DAT043,

Repetition av OOP- och Javabegrepp

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010

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

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

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

TENTAMEN OOP

Tentamen. DD2385 Programutvecklingsteknik vt 2015 Fredagen den 5 juni 2015 kl Hjälpmedel: penna, suddgummi, linjal

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

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

Laboration 1 - Grunderna för OOP i Java

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Lösningsförslag övning 2.

TDDC77 Objektorienterad Programmering

Modeller, Objekt och Klasser

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

Språkkonventioner och redigering av tal.

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

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

Föreläsnings 10 - Överlagring, Konstruerare, Arv, Mer Exceptions, Reguljära Uttryck

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

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

Transkript:

Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Klassen calculator Signatur Calculator memory: double result: double Calculator() Calculator(mem: double) add(a: double): double add(a: double, b: double): double store():void load():void class Calculator { private double result ; public Calculator (){ result = 0; public Calculator ( double mem ){ result = mem ; public double add ( double a){ result += a; return result ; public double add ( double a, double b){ result = a + b; return result ; public void reset (){ result = 0; public static int parseint ( String s) throws NumberFormatException I En konkret metod deklareras med hjälp av sex komponenter I Accessmodifierare såsom public och protected I Returtyp eller void I Metodens namn (identifierare) som ska börja med liten bokstav I Parameterlista med noll eller fler datatyper och identifierare I Eventuella checked exceptions som metoden kastar I Metodens kropp inom måsvingar I Metodens signatur betäms av metodens namns samt datatyper och ordning på parameterlistan

Överlagring I En metod överlagrar en annan om den har samma namn (identifierare) men olika signatur I Returtyp spelar ingen roll för överlagring vilket innebär att två metoder med olika returtyp men samma signatur inte är tillåtet (kompilatorn kan inte skilja på dem). Arv relationen (inheritance) Arv relationen (inheritance) class AnimalDriver { class Animal { public String name =""; public Animal ( String _name ){ name = _name ; public String speak () { return " hello... "; class Bird extends Animal { public Bird ( String birdname ){ super ( birdname ); public String iam (){ return " I am " + name + " the bird!"; public static void main ( String [] args ){ Animal djur = new Animal (" Smith "); Duck anka = new Duck (" Donald "); Bird få gel = new Bird (" Pipi "); System. out. println (" Djur :"); System. out. println ( djur. speak ()); System. out. println ("\ nanka :"); System. out. println ( anka. speak ()); System. out. println ( anka. iam ()); System. out. println ("\nfågel :"); System. out. println (få gel. speak ()); System. out. println (få gel. iam ());

Protected eller getters och setters Superklass Subklass I Vill man komma åt instansvariabler i basklassen så fungerar inte det om de är deklarerade som private. I Lösning: deklarera som protected : som private men synlig i subklasser I Bättre lösning: använd getters och setters Att prata om arv I Subklasser ärver tillstånd och tjänster från superklasser I Ett sätt att dela på gemensam kod I En subklass utöker eller specialiserar sin superklass I En subklass är en subtyp till superklassens datatyp I En superklass kan ha flera subklasser I Antag att klass B ärver från klass A. Detta illustreras genom att en icke ifylld pil ritas från B till A name: String studiemedel: Studiemedel Student isregistered(semester:semester): boolean register(semester:semester):void getname(): String ITare Dare Uare

Polymorfism via Animal name: String Animal(_name: String) getname(): String Dog Dog(_name: String) Animal hunden = new Dog (" bobby "); Animal katten = new Cat (" kitty "); Cat Cat(_name: String) System.out. println ( hunden. getname () + " says " + hunden.says ()); System.out. println ( katten. getname () + " says " + katten.says ()); Signatur Åsidosättning public static int parseint ( String s) throws NumberFormatException {... I En konkret metod deklareras med hjälp av sex komponenter I Accessmodifierare såsom public och protected I Returtyp eller void I Metodens namn (identifierare) som ska börja med liten bokstav I Parameterlista med noll eller fler datatyper och identifierare I Eventuella checked exceptions som metoden kastar I Metodens kropp inom måsvingar I En metod åsidosätter en annan om den har samma signatur, samma eller mer synlig accessmodifierare, och samma returtyp. Med samma returtyp menar man här ett av följände: I void I exakt samma returtyp (vid primitivtyp eller referenstyp) I en subtyp till returtypen (bara vid referenstyp) I Metodens signatur betäms av metodens namns samt datatyper och ordning på parameterlistan

Åsidosättning Åsidosättning class Student { private int points ; private Studiemedel studiemedel ; public int getpoints (){ return points ; class ITare extends Student { private int pointsdatavetenskap ; Superklass Subklass public int getpoints (){ return super. getpoints () + pointsdatavetenskap ; Åsidosättning Arv I Synliga metoder åsidosättningsbara i subklasser I this och super skapas automatiskt i alla instansmetoder I this refererar till det aktuella objektet I super refererar till superklassdelen av det aktuella objektet Dog Dog(_name: String) Animal name: String Animal hunden = new Dog (" bobby "); Animal katten = new Cat (" kitty "); Animal(_name: String) getname(): String Cat Cat(_name: String) System.out. println ( hunden. getname () + " says " + hunden.says ()); System.out. println ( katten. getname () + " says " + katten.says ());

Arv från Object I Alla objekt ärver automatiskt från java.lang.object I Några viktiga metoder som ärvs: I equals() I tostring() I hashcode() - senare I clone() - senare Abstrakta metoder I kan inte instansieras abstract class Person { private String name ; public Person ( String name ){ this. name = name ; public String getname (){ return name ; I Abstrakta metoder saknar kropp och måste åsidosättas i alla subklasser som inte är abstrakta I Bara tillåtet i abstrakta klasser abstract class Person { private String name = ""; public Person ( String name ){ this. name = name ; public String getname (){ return name ; public abstract void greet ();

Åsidosätta abstrakta metoder class Man extends Person { publlic greet (){ System. out. println ("Mr." + getname ()); Multiple arv? Gränsnitt (Interface) I Interface är lite som helt abstrakta klasser I I Java får man endast ärva från en klass I Arv från flera klasser kallas multiplelt arv, och är inte tillåtet I De definierar vilka metoder som ska finnas, men får inte innehålla definitioner av dessa I De kan också definiera konstanter I Man kan inte instansiera ett interface I En klass implementerar ett interface genom att definiera metoder för alla abstrakta metoder som finns i interfacet. I En klass kan implementera flera interface.

Interface UML Klassdiagram för Gränsnitt public interface Student { givehomework ( WorkUnit u); grade ( Grade g, Course c); public class ITStudent extends Person implements Student {... // Må ste implementera metoderna ovan... I Man brukar rita interface som klasser, men märka upp dem med «interface» ovanför klassnamnet I Implementering av interface ritas som arc, men med streckad linje <<interface>> Student givehomework(workunit u):void grade(grade g, Course c):void ITStudent ISYStudent Polymorfism via Interface interface Talker { String speak (); class Cat implements Talker { private String name ; public Cat ( String name ){ this. name = name ; public String speak () { return name + " says Miao!"; class Driver { public static void main ( String [] args ) { Talker [] assembly = new Talker [2]; assembly [0] = new Cat (" kitty "); assembly [1] = new Dog (" bobby "); for (int i =0; i< assembly. length ; i ++) System.out. println ( assembly [i]. speak ());