Objektorienterad Programmering (TDDC77)

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

TDDC77 Objektorienterad Programmering

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

Objektorienterad Programmering (TDDC77)

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

Objektorienterad Programmering (TDDC77)

Outline. Objektorienterad Programmering (TDDC77) Lösningen heter Collection. Collection gränsnittet. Collection. Iterable. Ahmed Rezine.

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.

Objektorienterad Programmering (TDDC77)

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

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

Objektorienterad Programmering (TDDC77)

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

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

Objektorienterad Programmering (TDDC77)

Länkade strukturer. (del 2)

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

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

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

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!

Objektorienterad Programkonstruktion. Föreläsning 9 30 nov 2016

Tentamen Programmering fortsättningskurs DIT950

Föreläsning 2. Länkad lista och iterator

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

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

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

Datastrukturer. Arrayer. Arrayer. Arrayer. Array av arrayer. Array av arrayer

Föreläsning 2. Länkad lista och iterator

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

Samlingar Collection classes

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2

Föreläsning 15: Repetition DVGA02

Föreläsning 2 Datastrukturer (DAT037)

Repetition av OOP- och Javabegrepp

Repetition av OOP- och Javabegrepp

DAT043 - föreläsning 8

Objektorienterad Programmering (TDDC77)

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

DAT043 Objektorienterad Programmering

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Objektorienterad Programmering (TDDC77)

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

TENTAMEN OOP

Objektorienterad Programmering DAT043. Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Seminarium 3 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.

OOP Tenta

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

Objektorienterad Programmering (TDDC77)

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

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

Föreläsning 10. ADT:er och datastrukturer

TENTAMEN OOP

Föreläsning 4 Innehåll

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

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

Seminarium 2 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2

Objektorienterad Programkonstruktion

Objektorienterad programmering i Java

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

Stackar, köer, iteratorer och paket

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Konstruktion av klasser med klasser

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

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

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

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

Listor. Koffman & Wolfgang kapitel 2, avsnitt , och 2.9

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

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

Generisk klass med typparameter Inre klass - ListIterator

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

Övning vecka 5. Denna vecka ska vi titta pa samlingar, generics och designmönstren Decorator, Singleton och Iterator.

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

Den som bara har en hammare tror att alla problem är spikar

Interfacen Set och Map, hashtabeller

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

Java Collections Framework. Föreläsning 2 Innehåll. Java Collections Framework interface hierarki. Java Collections Framework interface hierarki

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

LÖSNINGSFÖRSLAG

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

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

Programmering för språkteknologer II, HT2014. Rum

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

PROGRAMMERING-Java Omtentamina

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

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

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

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista

Samlingar Collection classes

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 2 Innehåll

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

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

Transkript:

Objektorienterad Programmering (TDDC77) Föreläsning XII: Interfaces, Enums, Generics, Collections Links for: interfaces, enums, generics, collections Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017

Outline Abstrakta klasser Gränssnitt Uppräkningar (enum) Hierarkier Generics Kollektioner Iterable

Outline Abstrakta klasser Gränssnitt Uppräkningar (enum) Hierarkier Generics Kollektioner Iterable

Abstrakta metoder I Metoder som krävs hos alla subklasser men som är meningslösa att implementera hos superklassen. class Animal { protected String name =" anonymous "; public Animal (){ public void setname ( String str ){ name = str ; public String speak (){ return " euhhh.." ; class Duck extends Animal { public String speak (){ return " couac! I am " + name ;

Abstrakta klasser I Abstrakta klasser kan inte instansieras abstract class Animal { protected String name =" anonymous "; public Animal (){ public void setname ( String str ){ name = str ; public abstract String speak (); class Duck extends Animal { public String speak (){ return " couac! I am " + 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 class Duck extends Animal { public String speak (){ return " couac! I am " + name ;

Outline Abstrakta klasser Gränssnitt Uppräkningar (enum) Hierarkier Generics Kollektioner Iterable

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

Outline Abstrakta klasser Gränssnitt Uppräkningar (enum) Hierarkier Generics Kollektioner Iterable

En enkel uppräkningar (enum) 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å";

Uppräkningar enum Seasons { winter (" vinter "), spring ("vår"), summer (" sommar "), autumn ("höst"); private String name ; Seasons ( String name ){ this. name = name ; public String tostring () { return name ; import java.util. Scanner ; class SeasonsDriver { public static void main ( String [] args ) { Seasons [] values = { Seasons.winter, Seasons.spring, Seasons.summer, Seasons. autumn System.out. println (" Choose among : "); for (int i =0; i < values. length ; i ++) System.out. println (i + ". " + values [i ]); Scanner scan = new Scanner ( System.in ); int i = scan. nextint (); System.out. println ("You chose : " + values [i ]);

Outline Abstrakta klasser Gränssnitt Uppräkningar (enum) Hierarkier Generics Kollektioner Iterable

Klass Hierarki Animal Reptile Bird Mammal Turtle Crocodile Eagle Dog Bat

Interface Hierarkier <<interface>> Athlete <<interface>> Runner <<interface>> Swimmer <<interface>> Biker Triathlete class Triathlete implements Runner, Swimmer, Biker {...

Outline Abstrakta klasser Gränssnitt Uppräkningar (enum) Hierarkier Generics Kollektioner Iterable

Generics En generic typ är en klass eller ett gränsnitt som är parameteriserad med en eller flera typer. class MyPair <T1, T2> { private T1 first ; private T2 second ; MyPair (T1 t1, T2 t2 ){ first = t1; second = t2; public String tostring (){ return "(" + first + ", " + second + ")"; class MyPairDriver { public static void main ( String [] args ) { MyPair <String,Integer > p1 = new MyPair <String,Integer >(" Monday ",1); System.out. println (p1 ); MyPair <Integer, Integer > p2 = new MyPair <Integer, Integer >(3,7); System.out. println (p2 );

Outline Abstrakta klasser Gränssnitt Uppräkningar (enum) Hierarkier Generics Kollektioner Iterable

Att lagra värden I En variabel: Data av en sort I Problem: om det blir många variabler I En array: En rad av data av samma sort I Problem: Måste veta storlek i förväg, även svårt att bearbeta data i arrayen (söka, sortera osv)

Kollektion (Collection, ibland Container) I är ett objekt som grupperar flera element i en enda enhet. I används för att lagra, hämta, manipulera, och kommunicera aggregerade data. I bildar en naturlig grupp, såsom en kort hand (en samling av kort), en post mapp (en samling av brev) eller en telefonkatalog (en kartläggning av namn till telefonnummer).

Lösningen heter Collection I Samling av klasser för effektiv och avancerad lagring av data I Finns i paketet java.util I Är uppdelade i Interface och implementationer I Sök efter Collection i API:et! I http://docs.oracle.com/javase/7/docs/api/ I Finns även bra tutorials, ex http: //docs.oracle.com/javase/tutorial/collections

Lösningen heter Collection

Set - Mängd I Oordnad mäng av data utan kopior I Interfacet heter Set I Implementationer exempelvis HashSet äpple päron melon

Set import java. util.*; /* The program FindDuplicates prints messages for each duplicated * argument it is passed. * example : java FindDuplicates i came i saw i left */ class FindDuplicates { public static void main ( String [] args ) { Set <String > minset = new HashSet <String >(); for (int i =0; i< args. length ; i ++) if ( minset.add (args [i]) == false ) System.out. println (" Duplicate detected : " + args [i ]); System.out. println ( minset.size () + " distinct words : " + minset ); // for ( String str : args )

List -Lista I Sekvens av data I Interfacet heter List I Implementationer exempelvis ArrayList och LinkedList äpple päron melon

List import java. util.*; class Panier { public static void main ( String [] args ) { List <String > panier = new ArrayList <String >(); panier. add (" melon "); panier. add (" banan "); panier.add (" hallon "); panier.add (" hallon "); System.out. println (" panier in order :"); // for (Iterator <String > it = panier. iterator (); // it. hasnext (); // ){ // String frukt = it. next (); // System.out. println (" contains : " + frukt ); // for ( String str : panier ) System.out. println (str ); // System.out. println (" panier contains :"); // for ( ListIterator <String > it = panier. listiterator ( panier.size ()); it. hasprevious () // String frukt = it. previous (); // System.out. println (" contains : " + frukt ); //

Map I Kopplade par av data I Interfacet heter Map I Implementationer exempelvis HashMap tomat äpple grönsak frukt melon frukt

Map import java. util.*; public class Freq { public static void main ( String [] args ) { Map < String, Integer > m = new HashMap < String, Integer >(); // Initialize frequency table from command line for ( String a : args ) { Integer freq = m. get ( a); m. put (a, ( freq == null )? 1 : freq + 1); System. out. println (m. size () + " distinct words :"); System. out. println (m); // java Freq if it is to be it is up to me to delegate

Hashing I Alla klasserna ovan som innehåller Hash i namnet använder något som heter hashing för att öka hastigheten på vissa operationer, exempelvis när man ska göra snabba sökningar i en lista I Det ingår inte i kursen att förstå exakt hur det fungerar, men ni måste förstå tillräckligt för att kunna använda hjälpligt

Hashing I Hashing går ut på att man för varje objekt beräknar ett så kallad hash (heltal) I Heltalet används sedan för att dela upp mängden i flera mindre mängder, vill man veta vilken del man ska leta i behöver man bara hasha värdet man letar efter I Hashfunktionen måste man alltid returnera samma värde för samma objekt, och för alla andra objekt där equals() returnerar sant I För er ordlistlaboration så räcker det bra att returnera värdet för textsrängens haschcode()

Klassen Collections I Klassen Collections har statiska metoder för att manipulera listor, mängder m.m. I frequency() I min(), max() I reverse() I sort(), shuffle() Collections. reverse (pl );

Outline Abstrakta klasser Gränssnitt Uppräkningar (enum) Hierarkier Generics Kollektioner Iterable

Iterable I Iterable är ett interface som uppfylls av alla klasser som man kan gå igenom element för element I Iterable innehåller bara en metod: iterator() som returnerar ett speciellt Iterator-objekt som man kan använda för att gå igenom mängden

Iterator I Iterator är ett interface med metoderna I hasnext() I next() I remove() //valfritt I Man får inte ändra på den underliggande samlingen medan iteratorn används, då blir det fel

Iterator I Använda en iterator Person person ; for ( Iterator < Person > iterator = pl. iterator (); iterator. hasnext (); person = iterator. next ()){ // Gör nå got

Iterator I Enklare med for-each for ( Person person : pl) { // Gör nå got