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

Relevanta dokument
Objektorienterad Programkonstruktion

Samlingar Collection classes

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

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

TDDC77 Objektorienterad Programmering

Samlingar Collection classes

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

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

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

Tentamen Objekt-orienterad programmering med Java, 1DL100 Sommarkurs och distanskurs

Länkade strukturer. (del 2)

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

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

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

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

Interfacen Set och Map, hashtabeller

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

Collection Classes. bjectorienterad programmering Sida 1

Collection classes. Interface, första exempel. Interface (forts) Men först

Stackar, köer, iteratorer och paket

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

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

Föreläsning 4 Innehåll

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

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

Föreläsning 2 Datastrukturer (DAT037)

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

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

Föreläsning 10 Innehåll

Föreläsning 10 Innehåll. Diskutera. Hashtabeller. Hashfunktion. hashfunktion. hashkod (ett heltal)

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

Sammansatta datatyper Generics: Parametrisk polymorfism

Föreläsning 2 Datastrukturer (DAT037)

Tentamen TEN1 HI

Föreläsning 11 Innehåll

Objektorienterad Programmering (TDDC77)

Länkade strukturer, parametriserade typer och undantag

Diskutera. Hashfunktion

Föreläsning 4 Datastrukturer (DAT037)

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

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

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

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs

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

Föreläsning 8. Mängd, Avbildning, Hashtabell

Inlämningsuppgift och handledning

Trädstrukturer och grafer

TDDC30 Programmering i Java, datastrukturer och algoritmer

Föreläsning 14 Innehåll

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

Tommy Färnqvist, IDA, Linköpings universitet

Inlämningsuppgift och handledning. Föreläsning 11 Innehåll. Diskutera. Hashtabeller

Intro till standardbiblioteket. Eric Elfving

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

Objektorienterad Programkonstruktion. Föreläsning 7 24 nov 2015

Föreläsning 2 Innehåll

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

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

Föreläsning 8. Mängd, Avbildning, Hashtabell

Övningen vill visa på vikten av valet av datastruktur, trots att de ofta erbjuder samma funktionalitet genom sina gränssnitt.

ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition

Arrayer (fält)

Föreläsning 5 Datastrukturer (DAT037)

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

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs

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

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

Objektorienterad programmering

Föreläsning 2 Innehåll

F5: Debriefing OU2, repetition av listor, träd och hashtabeller. Carl Nettelblad

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

Föreläsning 3 Datastrukturer (DAT037)

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Laboration A Objektsamlingar

Programmering fortsättningskurs

Tentamen, EDAA30 Programmering i Java fortsättningskurs

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö

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

DAT043 - föreläsning 8

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

ADT Set, Map, Dictionary. Iteratorer TDDD86: DALGP. Tommy Färnqvist, IDA, Linköpings universitet

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs

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

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

Generiska programenheter. Generiska programenheter Samlingar

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

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper.

Föreläsning 9 Datastrukturer (DAT037)

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

Datastrukturer. föreläsning 6. Maps 1

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

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).

Föreläsning 3 Datastrukturer (DAT037)

Tentamen Datastrukturer (DAT037)

FÖRELÄSNING 11 DATALOGI I

Tentamen i Algoritmer & Datastrukturer i Java

Datastrukturer. föreläsning 3. Stacks 1

Algoritmer och datastrukturer

Transkript:

Objektorienterad Programkonstruktion Föreläsning 9 30 nov 2016

Collections Ett samlingsnamn på objekt som innehåller en samling av andra objekt Det finns många olika sorters Collections, t.ex listor, träd, mängder, mm I Java finns gränssnittet Collection, som definierar ett antal metoder som är gemensamma, bl.a add(element e) - garanterar att elementet e finns (valfri) addall(collection c) garanterar att alla element i c finns (valfri) contains(object o) - returnerar true om o finns containsall(collection c) - returnerar true om alla element i c finns clear() - tömmer samlingen size() - returnerar antalet element toarray() - returnerar en Array med alla element i iterator() - returnerar en Iterator

Collections Med Collection-gränsnittet behöver man inte veta hur den interna representationen ser ut, man kan ändå stoppa in och plocka ut element Sett åt andra hållet, om man själv skriver en klass som använder sig av gränsnittet, så kan man använda många inbyggda funktioner i Javabiblioteken, som tex for each MyCollection collection = new MyCollection();... for (Object o : collection){ System.out.println(o); }

Exempel på Collections i Java HashSet - Tillåter ett exemplar av varje element, använder hashtabeller för att ge snabba operationer. Har ingen specifik ordning. ArrayList - Tillåter flera exemplar av varje element, använder array:er internt för att lagra element. Har en väldefinierad ordning. LinkedList - Tillåter flera exemplar av varje element, använder en dubbellänkad lista för intern representation. Har en väldefinierad ordning. TreeSet - Tillåter bara ett exemplar av varje element, använder ett sorterat träd för sin interna representation, kräver att de lagrade elementen är Comparable, och har en väldefinierad ordning

Map En samling av nyckel-element-par Kan liknas vid en funktion: om man anger nyckeln så får man tillbaka det tillhörande elementet Samma element kan förekomma flera gånger, men en viss nyckel får bara finnas en gång När man skapar en Map, eller när man lägger till fler element måste man alltid förse varje element med en tillhörande nyckel När man vill plocka ut ett element anger man nyckeln och får det tillhörande elementet Exempel: Elementet är ett objekt som innehåller studieresultat,nyckeln är ett personnummer Elementet är en förklarande text, nyckeln är ett ord (ordlista)

Map i Java Map är ett gränsnitt Implementerande klasser är t.ex: HashMap, Hashtable, TreeMap Det definierar bl.a följande metoder put(key, value) get(key) remove(key) values() values() returnerar en Collection med samma innehåll, som man alltså kan ta sig igenom med en Iterator: for(object o: mymap.values()){... }

Iterator (GoF) Behaviorial Pattern Iteratorer är objekt som tillhandahåller ett sätt att stega sig igenom element i en Collection. Ett sätt att möjliggöra algoritmer som verkar på datastrukturer utan att man vet hur strukturen ser ut. Tillåter multipla åtkomster av samma underliggande struktur, med separata minnen av hur långt man har kommit

Iterator i Java Gränssnittet Iterator definierar tre metoder: hasnext() - returnerar true om det finns element kvar next() - returnerar nästa element remove() - plockar bort senast returnerat element (frivillig) Om en klass tillhandahåller en metod Iterator() som returnerar ett iteratorobjekt över klassen, kan den implementera gränssnittet Iterable, och användas i en for-each-loop Collection är ett exempel som ärver från Iterable Scanner är ett exempel på en Iterator över ett Stringobjekt

Composite (GoF) Structural Pattern Låter en behandla grupper av objekt på samma sätt som ett enskilt objekt Passar när man har en trädstruktur och vill göra exakt samma sak med en nod och alla dess barn Definiera en abstrakt Component-klass som rymmer alla de metoder man vill kunna anropa, en struktur för att rymma barnnoder, samt metoder för att lägga till barn och komma åt dessa Nu kan man definiera en Leaf-klass och en Composite-klass som ärver från Component Ett program som arbetar med dessa strukturer behandlar alla delar som om de vore Component-objekt, och ett anrop av någon metod utförs för samtliga Leaf-objekt nedanför i hierarkin

Composite (GoF)

Composite-exempel I grafik kan varje bild bestå av linjer Dessa linjer blir till olika polygoner Polygonerna blir till avancerade bilder Man vill kunna flytta en bild, då anropas flytta-metoden I alla polygoner den består av, som i sin tur anropar flytta-metoden i sina beståndsdelar linjerna. På samma sätt vill man kunna byta färg på en enskild linje, en enskild polygon, en grupp av polygoner eller hela föremålet

Composite-exempel

Composite-exempel Man kan representera filsystem som Composite Katalogerna är Composite-objekt, och filerna blir Leaf-objekt Det blir då enkelt att genomföra samma operation på alla underkataloger och filer, tex Byta ägare eller åtkomst Kopiera Beräkna storlek