Objektorienterad Programkonstruktion



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

Objektorienterad Programkonstruktion. Föreläsning 8 30 nov 2015

Samlingar Collection classes

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

TDDC77 Objektorienterad Programmering

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

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

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

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

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

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

Tentamen TEN1 HI

Samlingar Collection classes

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

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

Länkade strukturer. (del 2)

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

Stackar, köer, iteratorer och paket

Interfacen Set och Map, hashtabeller

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 2 Datastrukturer (DAT037)

Föreläsning 2 Datastrukturer (DAT037)

Föreläsning 14 Innehåll

Tentamen Datastrukturer (DAT037)

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

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

Föreläsning 10 Innehåll

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

Föreläsning 4 Innehåll

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

Tentamen Datastrukturer (DAT036)

Länkade strukturer, parametriserade typer och undantag

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

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

Tentamen Datastrukturer, DAT037 (DAT036)

Föreläsning 11 Innehåll

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

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

Sammansatta datatyper Generics: Parametrisk polymorfism

Introduktionsmöte Innehåll

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Diskutera. Hashfunktion

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs

Collection Classes. bjectorienterad programmering Sida 1

Trädstrukturer och grafer

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

EDAA01 Programmeringsteknik - fördjupningskurs

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

Objektorienterad Programmering (TDDC77)

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

Föreläsning 5 Datastrukturer (DAT037)

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

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

Inlämningsuppgift och handledning

Datastrukturer. föreläsning 6. Maps 1

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen. DD2385 Programutvecklingsteknik vt Torsdagen den 27 maj 2010 kl Hjälpmedel: penna, suddgummi, linjal

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

Programmeringsteknik II

Föreläsning 1: Introduktion till kursen

Ö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

DAT043 - föreläsning 8

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

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

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Tentamen Datastrukturer, DAT037 (DAT036)

Arrayer (fält)

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

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

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

Föreläsning 1: Introduktion till kursen

Intro till standardbiblioteket. Eric Elfving

DAT043 Objektorienterad Programmering

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

Föreläsning 15: Repetition DVGA02

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

TDDC30 Programmering i Java, datastrukturer och algoritmer

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

Tentamen Datastrukturer (DAT036)

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

Laboration A Objektsamlingar

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

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

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

Lycka till! TENTAMEN: Objektorienterade applikationer. Läs detta! 1 (6) Tentamen

Tentamen i Algoritmer & Datastrukturer i Java

Föreläsning 2 Innehåll

Objektsamlingar i Java

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Föreläsning 3 Datastrukturer (DAT037)

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

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

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

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

Transkript:

Objektorienterad Programkonstruktion Föreläsning 9 Projektuppgift Collection, Iterator, Composite Christian Smith ccs@kth.se 1

Projektuppgift IM, skickar meddelanden mellan datorer En lite större labbuppgift, egen planering Basuppgift för E, välj till extrauppgifter för C, A Labbarbetet utförs parvis, båda ansvarar för resultatet Labbtid ca 2 h per vecka, för handledning Först redovisas struktur, kan ge 1 bonuspoäng på tentan om godkänt före 2:a februari kod + funktionalitet redovisas senast 9 mars för 1 bonuspoäng till tentan (Tenta: tisdag 13 mars 9:00-12:00) 2

Projektuppgift Projektplan (Bonus före 3 feb) Redovisas muntligt mha förberedda dokument Visa hur ert GUI kommer att se ut Ska innehålla en komplett UML-beskrivning av hur det färdiga programmet förväntas se ut. UML-diagrammet ska beskriva samtliga klasser som man har konstruerat själv, inklusive deras fält och metoder. Om det behövs för överskådlighet kan man göra flera UML-diagram - dels ett överskådligt som visar de stora sambanden men utelämnar detaljerna, och ett eller flera detaljerade som beskriver de olika delarna. 3

E - uppgift För betyg E på detta moment krävs att man: presenterat en godkänd projektplan (E1), presenterat ett program som uppfyller samtliga specifikationer (E2) Precis som i labbarna krävs att båda i gruppen kan redogöra för alla delarna av uppgiften, och förklara vad olika delar av koden gör och varför ni har valt att göra som ni gör. 4

Specifikationer för E Detaljer finns på kurshemsidan! Skriv ett program som kan agera antingen server eller klient En klient ska kunna koppla upp sig mot en server När uppkoppling är avklarad, ska man kunna skicka textmeddelanden till varandra, mellan två olika datorer Meddelandena kodas med XML, och innehåller information om vem som skickat meddelandet och hur det ska se ut (t.ex färg) Om man gjort allting rätt ska man kunna koppla upp sig mot program som andra grupper har gjort, och inte bara sitt eget! Måste följa stilkonventioner och kommentera väl! 5

Högre betyg Man får betyg C om man utöver kraven för E uppfyller kraven för en extrauppgift, A om man uppfyller kraven för alla Extrauppgifter: Koppla ihop upp till fyra (eller fler) program samtidigt Kryptera kommunikationen Skicka filer mellan två olika datorer Om man gjort rätt går det fortfarande att kommunicera med alla andra gruppers program! Detaljerade specifikationer finns på kurshemsidan 6

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) clear() - tömmer samlingen size() - returnerar antalet element toarray() - returnerar en Array med alla alement i iterator() - returnerar en Iterator 7

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); } 8

Exempel på Collection 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 9

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) 10

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()){ }... 11

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. I Java kan alla klasser som implementerar Collection returnera ett Iterator-objekt som man sedan kan använda för att stega sig igenom alla element. 12

Iteratorer 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 13

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 barn-noder, samt metoder för att lägga till barn och komma åt dessa Nu kan man definiera en Leaf-klass och en Compositeklass 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 14

Composite bild fr. "Design Patterns" av GoF 15

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 flyttametoden 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 16

Composite-exempel Stjärna triangel triangel linje linje linje linje linje linje 17