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

Relevanta dokument
Länkade strukturer. (del 2)

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

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 4 Innehåll

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

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

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

Samlingar Collection classes

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

DAT043 - föreläsning 8

Repetition av OOP- och Javabegrepp

Föreläsning 9 Innehåll

Repetition av OOP- och Javabegrepp

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

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

Föreläsning 2 Datastrukturer (DAT037)

Begreppet subtyp/supertyp i Java. Mera om generik. Generik och arv. Generik och arv. Innehåll

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

Föreläsning 1. Abstrakta datatyper, listor och effektivitet

Föreläsning 2 Innehåll

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

Föreläsning 14 Innehåll

Samlingar Collection classes

Föreläsning 2 Innehåll

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

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

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

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

Datastrukturer. föreläsning 3. Stacks 1

Stackar, köer, iteratorer och paket

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

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

Föreläsning 2 Innehåll. Generiska klasser. Generik i Java. Varför generiska klasser Bakgrund

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

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

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

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

Föreläsning 3-4 Innehåll

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

Föreläsning 2 Datastrukturer (DAT037)

Generiska konstruktioner. Kursbokens kapitel 13

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

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

Arrayer. results

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

Föreläsning 3. Stack

Länkade strukturer, parametriserade typer och undantag

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

Interfacen Set och Map, hashtabeller

Collection Classes. bjectorienterad programmering Sida 1

Objektorienterad Programmering (TDDC77)

Tommy Färnqvist, IDA, Linköpings universitet

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

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs

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

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

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

Generisk klass med typparameter Inre klass - ListIterator

Föreläsning 10 Innehåll

Föreläsning 12. Länkade listor

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

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

Algoritmer och datastrukturer. HI1029 8,0 hp Föreläsning 1

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

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

Föreläsning 3. Stack

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

Föreläsning 3 Innehåll. Generiska klasser. Icke-generisk lista ArrayList, skiss av implementering. Icke-generisk lista Risk för fel

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

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

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

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

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar

Generiska datatyper. Parametrisk Polymorfism: Generics. Generisk lista. Utvikning: Typer

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

Föreläsning REPETITION & EXTENTA

Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna

Föreläsning 10 Innehåll. Diskutera. Inordertraversering av binära sökträd. Binära sökträd Definition

DAT043 Objektorienterad Programmering

OOP Objekt-orienterad programmering

Diskutera. Hashfunktion

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Föreläsning 10 Innehåll

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

Objektsamlingar i Java

Föreläsning 11 Innehåll. Diskutera. Binära sökträd Definition. Inordertraversering av binära sökträd

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

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

Klassen BST som definierar binära sökträd med tal som nycklar och enda data. Varje nyckel är unik dvs förekommer endast en

2. Palindrom. Exempel: 1,2,3,2,1 är ett palindrom, och även 0, men inte 1,2,3,1,2,3.

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

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

Mål Förklaring av termer

! Skall den vara generisk? ! Skall den vara självexpanderande? ! Skall vi ha en speciell klass för listnoder? ! osv

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 11 Innehåll

Föreläsning Datastrukturer (DAT036)

Mål Förklaring av termer

Transkript:

-Algoritmer och Datastrukturer- Abstrakt datatyp Datatyp för en variabel Betecknar i ett programmeringsspråk den mängd värden variabeln får anta. T ex kan en variabel av typ boolean anta värdena true och false. Abstrakt datatyp (ADT) Abstrakt modell tillsammans med operationer definierade på modellen. Finns inte i verkligheten men är abstraherad från verkligheten. Datastruktur Används för att representera ADT. Är samlingar av variabler av någon datatyp som hör ihop på något sätt. Datastrukturer skapas genom att man ger namn åt (deklarerar) samlingar. Enklaste mekanismen för detta i Java är fält (array). Länkade strukturer via referensvariabler är annan möjlighet. En del böcker använder beteckningen datastruktur som synonym med ADT. Däribland vår lärobok. List, Kö, Stack är exempel på ADT) 1

Ording och reda på datastrukturer i java med hjälp av olika interface En datastruktur är: data (representerad på olika sätt) Metoder Finns i java.util http://java.sun.com/j2se/1.5.0/ docs/api/ Collection- generell samling data List- ordnad samlig av data Set- ordnad samlig av data som inte får innehålla dubbleter Map- Samling av data i par ( objekt+ nyckel) Queue- samlig data som accesar efter en bestämd ordning Interface Collection Basen är ett interface Collection som representerar en samling element. Det innehåller följande metoder: boolean isempty(); boolean add(e x); boolean contains(object x); boolean remove(object x); void clear(); int size(); Iterator iterator(); 2

En SimpleDataStructure public class SimpleDataStructure implements Collection private int thesize; private Object [ ] theitems; public void add ( Object obj) theitems[thesize++]=obj; public boolean remove( Object obj ) boolean found=false; // hitta idx-index of objekt som skall bort if( idx!=-1) faund=true; for( int i = idx; i < size( ) - 1; i++ ) theitems[ i ] = theitems[ i + 1 ] thesize--; return found;... public class Program...main()... SimpleDataStructure bank=new SimpleDataStructure (); bank.add( new Customer()); bank.add( new Customer());... bank.add( new Donkey()); En SimpleDataStructure generic public class SimpleDataStructure <AnyType> implements Collection <AnyType> private int thesize; private AnyType [ ] theitems; public void add ( AnyType obj) theitems[thesize++]=obj; public boolean remove( AnyType obj) // idx- hitta index of objekt obj... for( int i = idx; i < size( ) - 1; i++ ) theitems[ i ] = theitems[ i + 1 ] thesize--; return found; public class Program...main()... SimpleDataStructure <Customer>bank=new SimpleDataStructure <Customer>(); bank.add( new Customer()); bank.add( new Customer());... bank.add( new Donkey()); // compile error 3

Generiska klasser i Java 5.0 Typparametrar anges inom tecknen < och > i klassrubriken: public class ArrayList<E>... Typparametern kan användas i klassen för att t ex deklarera attribut och parametrar och returtyper för metoder public class ArrayList<E> private E[] elements; public boolean add(e x)... // lägg in x sist public E get(int i)... //hämta element på plats i... Vi skapar instanser genom att ge parametern E ett värde ArrayList<Integer> intlist = new ArrayList<Integer>(); I intlist kan endast Integer-objekt läggas in Interface Comparable som generic I java biblioteket finns interfacen Comparable som används för att definiera objekt som kan jämföras och rangordnas public interface Comparable<AnyType> public int compareto( AnyType other); 4

En klass som implementear en generic interface AnyType ersäts med Person class Person implements Comparable<Person> // andra metoder för person public int compareto( Person other) if( name.compareto(other.getname())==0) /jämför namn if (adress...) // jämför adress else return name.compareto(other.getname())==0; En generic algoritm- findmax metoden public static <AnyType extends Comparable<? super AnyType>> AnyType findmax ( AnyType [ ] a ) int maxindex = 0; for( int i = 1; i < a.length; i++ ) if( a[ i ].compareto( a[ maxindex ] ) > 0 ) maxindex = i; return a[ maxindex ]; 5

Iteratorer * Iterator interface for Collections. */ public interface Iterator * Tests if there are more items in the collection. * @return true if there are more items in the collection. boolean hasnext( ); * Obtains the next item in the collection. * @return the next (as yet unseen) item in the collection. Object next( ); * Remove the last item returned by next. * Can only be called once after next. void remove( ); Interfacet List I java.util finns ett interface för listhantering som ärver interfacet Collection<E>: public interface List<E> extends Collection<E> void add(int idx, E element); boolean add(e element); E get(int idx); E set(int idx, E element); ListIterator<E> listiterator();...... 6

ListIterator ListIterator<E> är ett interface som ärver Iterator<E> och där man lagt till metoder för att röra sig även bakåt i listor samt för att sätta in och ta bort element: public interface ListIterator<E> extends Iterator<E> boolean hasprevious(); E previous(); void add(e x); void remove();... List-klasser i java Det finns två konkreta generiska klasser i Javas API för listhantering. Båda implementerar alltså interfacet List ArrayList som implementerats med vektor LinkedList, som använder länkad struktur i implementationen Man bör bara använda ArrayList om alla insättningar görs sist i listan. Insättningar i andra positioner orsakar flyttningar av element. De indexerade operationerna get(int idx) och set(int idx, E element) är däremot effektivare i denna implementation än i LinkedList 7

Paketet weiss.nonstandard i kursboken Paketet weiss.nonstandard innehåller interface och klasser för samlingar, som inte direkt motsvarar klasser i java.util. En del av klasserna utgör alternativa sätt att utforma vissa samlingar. T ex finns det en LinkedList och en tillhörande iterator-klass som har ett annat gränssnitt än sin motsvarighet i java.util resp. weiss.util. Det finns också klasser för hantering av prioritetsköer (BinaryHeap och PairingHeap) som inte har samma gränssnitt som javas prioritetsköklass. 8