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

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

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77)

Outline. Objektorienterad Programmering (TDDC77) Abstrakta klasser. Abstrakta metoder. Abstrakta klasser. Gränssnitt. Uppräkningar (enum) 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)

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

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

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)

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

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

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

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

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

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

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

DAT043 - Föreläsning 7

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

OOP Objekt-orienterad programmering

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

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

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

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

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

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

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

Arv. Objektorienterad och komponentbaserad programmering

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

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

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

Föreläsning 13 Innehåll

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

Objektorienterad Programmering (TDDC77)

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

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

Klasshierarkier - repetition

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

Konstruktion av klasser med klasser

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

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.

Föreläsning 15: Repetition DVGA02

Classes och Interfaces, Objects och References, Initialization

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

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

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

OOP Objekt-orienterad programmering

Datatyper. Programmering. Att definiera datatyper i Java. Laddade partiklar. (x,y) (Rx,Ry) hh.se/db2004

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

Repetition av OOP- och Javabegrepp

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

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

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

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

TENTAMEN OOP

Repetition av OOP- och Javabegrepp

Objektorienterad Programmering (TDDC77)

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

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

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

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

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

OOP Tenta

Laboration 1 - Grunderna för OOP i Java

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

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

Tentamen Programmering fortsättningskurs DIT950

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

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

Kopiering av objekt i Java

TENTAMEN OOP

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

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).

Objektorienterad Programmering (TDDC77)

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

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

Lösningsförslag övning 2.

Repetition av viktiga begrepp inom objektorienterad programmering

Objektorienterad programmering Föreläsning 5

Modeller, Objekt och Klasser

Objektorienterad programmering

TDDC77 Objektorienterad Programmering

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

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

Lösningsförslag till tentamen

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Transkript:

Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 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 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

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

En enkel uppräkningar (enum) Uppräkningar enum Seasons { winter (" vinter "), spring ("vår"), summer (" sommar "), autumn ("höst"); private String name ; public enum Color { red, blue, green String skrivut ( Color c){ if(c == Color. red ) return "röd"; if(c == Color. green ) return "grön"; return "blå"; Seasons ( String name ){ public String getname () { return name ; class SeasonsDriver { public static void main ( String [] args ) { Seasons [] values = Seasons. values (); for (int i =0; i < values. length ; i ++){ if( values [i ]== Seasons. autumn ) System.out. println ( values [i] + " : " + values [i]. getname ()); Klass Hierarky Person personnumber: PersonNumber name: String sex: Sex getpersonnumber(): PersonNumber getname(): String setpersonnumber(personnumber: PersonNumber): void setname(name: String): void getsex(): Sex pointstaken: int Student getpointstaken(): int setpointstaken(points: int): void gettotalpoints(): int ITStudent CStudent I Identifiera alla arv I Identifiera alla inkapsling I Identifiera alla åsidosatta metoder I Identifiera alla överlagrade metoder I Skriv kod för att skapa de olika klasserna I Person kapslar in personnummer, detta kan ritas annorlunda i UML, hur? gettotalpoints():int gettotalpoints():int

Klass Hierarki Interface Animal Athlete Reptile Bird Mammal Runner Swimmer Biker Triathlete Turtle Crocodile Eagle Dog Bat class Triathlete implements Runner, Swimmer, Biker {...