Objektorienterad Programmering (TDDC77)

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

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

Objektorienterad Programmering (TDDC77)

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

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

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

Objektorienterad Programmering (TDDC77)

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

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 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)

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

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

DAT043 - Föreläsning 7

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, 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

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

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

OOP Objekt-orienterad programmering

Konstruktion av klasser med klasser

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

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

Objektorienterad Programmering (TDDC77)

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

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

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

Föreläsning 13 Innehåll

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

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

Objektorienterad Programmering (TDDC77)

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

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

Classes och Interfaces, Objects och References, Initialization

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.

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

Klasshierarkier - repetition

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

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

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)

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

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

Föreläsning 15: Repetition DVGA02

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

Klasshierarkier. Klasser kan byggas på redan definierade klasser

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

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

OOP Objekt-orienterad programmering

Arv. Objektorienterad och komponentbaserad programmering

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

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

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

Instuderingsuppgifter läsvecka 2

Lösningsförslag till tentamen

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

Kopiering av objekt i Java

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

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

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

Objektorienterad programmering Föreläsning 5

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.

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

Repetition av OOP- och Javabegrepp

TDDD78 Viktiga begrepp, del 2

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

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

TDDC77 Objektorienterad Programmering

Lösningar för tenta 2 DAT043,

Föreläsning 9: Arv och UML

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Repetition av OOP- och Javabegrepp

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

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

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

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

Laboration 1: Figurer i hierarki

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;

Static vs Dynamic binding Override vs Overload. Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016

Laboration 1 - Grunderna för OOP i Java

Transkript:

Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017

Outline Överlagring (overloading) Arv (inheritance) Åsidosättning (overriding) Abstrakta klasser Gränssnitt

Outline Överlagring (overloading) Arv (inheritance) Åsidosättning (overriding) Abstrakta klasser Gränssnitt

Klassen calculator class Calculator { private double result ; Calculator memory: double result: double Calculator() Calculator(mem: double) add(a: double): double add(a: double, b: double): double store():void load():void 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;

Signatur 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).

Outline Överlagring (overloading) Arv (inheritance) Åsidosättning (overriding) Abstrakta klasser Gränssnitt

Arv relationen (inheritance) 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!";

Arv relationen (inheritance) class AnimalDriver { 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 ());

Arv (inheritance) Superklass Subklass

Protected eller getters och setters 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

Arv (inheritance) 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 Arv (inheritance) Animal name: String Animal(_name: String) getname(): String says(): String Dog Dog(_name: String) says(): String Cat Cat(_name: String) says(): String Animal hunden = new Dog (" bobby "); Animal katten = new Cat (" kitty "); System.out. println ( hunden. getname () + " says " + hunden.says ()); System.out. println ( katten. getname () + " says " + katten.says ());

Outline Överlagring (overloading) Arv (inheritance) Åsidosättning (overriding) Abstrakta klasser Gränssnitt

Signatur 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

Åsidosättning 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)

Åsidosättning class Student { private int points ; private Studiemedel studiemedel ; public int getpoints (){ return points ; class ITare extends Student { private int pointsdatavetenskap ; public int getpoints (){ return super. getpoints () + pointsdatavetenskap ;

Åsidosättning Superklass Subklass

Åsidosättning 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

Arv Animal name: String Animal(_name: String) getname(): String says(): String Dog Dog(_name: String) says(): String Cat Cat(_name: String) says(): String Animal hunden = new Dog (" bobby "); Animal katten = new Cat (" kitty "); 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

Outline Överlagring (overloading) Arv (inheritance) Åsidosättning (overriding) Abstrakta klasser Gränssnitt

Abstrakta klasser I Abstrakta klasser kan inte instansieras abstract class Person { private String name ; public Person ( String name ){ this. name = name ; public String getname (){ return name ;

Abstrakta metoder 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 ());

Outline Överlagring (overloading) Arv (inheritance) Åsidosättning (overriding) Abstrakta klasser Gränssnitt

Multiple arv? 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

Gränsnitt (Interface) I Interface är lite som helt abstrakta klasser 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 public interface Student { givehomework ( WorkUnit u); grade ( Grade g, Course c); public class ITStudent extends Person implements Student {... // Må ste implementera metoderna ovan...

UML Klassdiagram för Gränsnitt 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 ());