Mål Förklaring av termer

Relevanta dokument
Mål Förklaring av termer

EDAA30 Programmering i Java - fortsättningskurs

Föreläsning 1 Innehåll

Föreläsning 1 Innehåll. EDAA01 Programmeringsteknik - fördjupningskurs. Detta ska du lära dig... Kursens mål. Detta kan du...

Introduktionsmöte Innehåll

EDAA01 Programmeringsteknik - fördjupningskurs

Föreläsning 13 Innehåll

Föreläsning 14 Innehåll

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll

Repetition av viktiga begrepp inom objektorienterad programmering

1 Repetition av viktiga begrepp inom objektorienterad programmering

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

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

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

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

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

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

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

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Programmeringsteknik II

Föreläsning 9 Innehåll

Föreläsning 4 Innehåll

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 9 Innehåll

Föreläsning 15: Repetition DVGA02

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

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

Inlämningsuppgiften. Föreläsning 9 Innehåll. Träd. Datastrukturer i kursen

Länkade strukturer. (del 2)

Seminarium 13 Innehåll

Föreläsning REPETITION & EXTENTA

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

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

Objektorienterad programmering (OOP) Föreläsning 15 & 16. Klasser för olika slags fordon. Klasser och objekt

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

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

Föreläsning 13 Innehåll

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

Datastrukturer. föreläsning 3. Stacks 1

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

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Datastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd

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

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

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

EDAA01 Programmeringsteknik - fördjupningskurs

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Exempel på användning av arv: Geometriska figurer

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

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 9-10 Innehåll

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

Föreläsning Innehåll. Checklista. Några metoder i klassen ArrayList<E> Exempel på vad du ska kunna

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

DAT043 - Föreläsning 7

Inlämningsuppgift och handledning

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

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

Föreläsning 1 Datastrukturer (DAT037)

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

13 Prioritetsköer, heapar

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

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Föreläsning 5 Innehåll

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

Diskutera. Hashfunktion

DAT043 - föreläsning 8

Föreläsning 3 Datastrukturer (DAT037)

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

Tentamen, Algoritmer och datastrukturer

Tentamen i Objektorienterad modellering och design Helsingborg

Föreläsning 11 Innehåll

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

Objektorienterad Programmering (TDDC77)

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Interfacen Set och Map, hashtabeller

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

Tentamen i Objektorienterad modellering och design Helsingborg

Föreläsning 10 Innehåll

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

Datastrukturer och algoritmer. Föreläsning 4 Test, Stack och Kö

Repetition av OOP- och Javabegrepp

Föreläsning 3. Stack

Föreläsning 3-4 Innehåll

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

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

Objektorienterad Programmering (TDDC77)

Föreläsning 1 & 2 INTRODUKTION

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

Föreläsning 1-2 Innehåll. EDAA01 Programmeringsteknik - fördjupningskurs. Detta kan du... Förkunskaper

Repetition av OOP- och Javabegrepp

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

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

Föreläsning 5 Innehåll. Val av algoritm och datastruktur. Analys av algoritmer. Tidsåtgång och problemets storlek

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

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Föreläsning 11 Innehåll. Sortering. Sortering i Java. Sortering i Java Comparable. Sortering. O(n 2 )-algoritmer: urvalssortering insättningssortering

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

Transkript:

Föreläsning 1 Innehåll Detta kan du Förkunskaper Introduktion Kursens mål och innehåll Undervisning Arv, abstrakta klasser och metoder (repetition) Abstrakta datatyper - lista, stack, FIFO-kö, mängd, map, prioritetskö en hel del om programmering och objektorientering begrepp som klass, objekt, attribut, metod, parameter skriva mindre program i programspråket Java skriva och debugga program i utvecklingsverktyget Eclipse använda vektorer, matriser och (delvis) klassen ArrayList enkla algoritmer som t.ex. linjärsökning, insättning i en redan sorterad vektor använda arv superklass, subklass, abstrakt metod Datavetenskap (LTH) Föreläsning 1 HT 2018 1 / 41 Detta ska du lära dig Kursens mål mer om programmering och objektorientering interface, exceptions, generik formulera och använda olika algoritmer för att effektivt lösa problem sökning, sortering, rekursiva algoritmer Känna till olika abstrakta datatyper viktigaste operationerna, användningsområden lista, stack, kö, mängd, map, prioritetskö använda olika datastrukturer vektorer, länkade listor, binära sökträd, hashtabeller, heapar dels genom att använda färdiga klassbibliotek och dels genom att göra egna implementeringar skriva program med grafiska användargränssnitt (JavaFX) testa klasser (junit) analysera och jämföra algoritmers tidsåtgång Datavetenskap (LTH) Föreläsning 1 HT 2018 3 / 41 Datavetenskap (LTH) Föreläsning 1 HT 2018 2 / 41 Mål Förklaring av termer Algoritm Beskrivning hur man stegvis löser ett problem. Ex: matrecept, linjärsökning Abstrakt datatyp En abstrakt modell tillsammans med de operationer man kan utföra på den. Ex: lista med operationer för att sätta in och ta bort element Datastruktur En samling variabler (ofta med samma datatyp) som hör ihop. Ex: vektor Klassbibliotek Färdiga klasser som är tänkta att användas i andra program. Fungerar som en utvidgning av programspråket. Ex: Java Collections Framework Datavetenskap (LTH) Föreläsning 1 HT 2018 4 / 41

Varför är detta viktigt att kunna? Exempel Till skillnad mot övningsprogram är riktiga program stora, skrivs av flera personer, har lång livstid, kräver underhåll.... Därför är följande viktigt: bra design läsbar kod att man kan välja lämpliga algoritmer, datastrukturer och färdiga byggstenar (klasser ur bibliotek) bra verktyg för programutveckling, felsökning och testning Skriv program för att hantera kontakter (namn, mobil nr ). Att fundera på: Ska vi använda en vektor eller finns det andra, bättre sätt att lagra posterna? Finns det färdiga klasser som kan användas? Hur sker kommunikationen med användaren (utskrifter i konsolfönstret eller snyggare grafiskt användargränssnitt)? Hur designar man programmet så att man lätt kan byta sätt? Hur söker man snabbt om antal poster är stort?... Datavetenskap (LTH) Föreläsning 1 HT 2018 5 / 41 Från problem till program Datavetenskap (LTH) Föreläsning 1 HT 2018 6 / 41 Kursmoment Specifikation av problemet Design Val av lösningsmetoder (algoritmer, datastrukturer) för delproblem Implementering (programskrivning) Testning Underhåll (korrigeringar och uppdateringar) Parallellt: dokumentation Behandlas i EDAF25, 2 OMD Behandlas i denna kurs Laborationer Kräver förberedelser. Ska lösas i grupper om två. Anmälan till önskad labbgrupp görs på kursens webbsida. Inlämningsuppgift Löses normalt i grupper om två. Finns på webbsidan. Det finns två alternativ att välja mellan. Jourtider för frågor i samband med inlämningsuppgiften kommer att finnas. Övningsuppgifter Viktigt komplement till laborationerna. Löses på egen hand. Datavetenskap (LTH) Föreläsning 1 HT 2018 7 / 41 Datavetenskap (LTH) Föreläsning 1 HT 2018 8 / 41

Examination Om att lära sig programmera Programmering är kul! Skriftlig tentamen Kursen inrapporteras i Ladok i två delar Obligatoriska moment (laborationer + inlämningsuppgift) 3 hp Tentamen 4.5 hp Programmering tar tid (fundera ut lösningar, hitta fel ). Man lär sig programmera genom att träna. Skriv program, testa, hitta på egna program, experimentera Men inte bara - glöm inte bort teorin. Starten är viktig. Häng med från början! Det man lär sig kommer att byggas på och användas genom hela kursen. De olika undervisningsmomenten (övningsuppgifter, labbar, föreläsningar ) finns av en anledning och kompletterar varandra. Datavetenskap (LTH) Föreläsning 1 HT 2018 9 / 41 Datavetenskap (LTH) Föreläsning 1 HT 2018 10 / 41 Arv repetition Exempel I ett program ska geometriska figurer (kvadrater och cirklar) hanteras. Figurerna ska kunna flyttas och ritas upp på skärmen. Kort repetition av arv, abstrakta klasser och abstrakta metoder i Java Deklarera interface Skriva klasser som implementerar interface Shape {abstract x y Shape(int, int) moveto(x, y) draw(simplewindow) Square side Square(int, int, int) Circle radius Circle(int, int, int) Datavetenskap (LTH) Föreläsning 1 HT 2018 11 / 41 Datavetenskap (LTH) Föreläsning 1 HT 2018 12 / 41

Arv Superklassen Shape Arv Subklassen Square public abstract class Shape { protected int x; protected int y; protected Shape(int x, int y) { this.x = x; this.y = y; public void move(int dx, int dy) { x = x + dx; y = y + dy; public abstract void draw(simplewindow w); public class Square extends Shape { private int side; public Square(int x, int y, int side) { super(x, y); this.side = side; public void draw(simplewindow w) { w.moveto(x, y); w.lineto(x + side, y); w.lineto(x + side, y + side); w.lineto(x, y + side); w.lineto(x, y); Arv Exempel Datavetenskap (LTH) Föreläsning 1 HT 2018 13 / 41 Datavetenskap (LTH) Föreläsning 1 HT 2018 14 / 41 Diskutera public class Main { public static void main(string[] args) { Shape[] theshapes = new Shape[3]; theshapes[0] = new Square(100, 300, 100); theshapes[1] = new Square(400, 200, 100); theshapes[2] = new Circle(400, 400, 50); SimpleWindow w = new SimpleWindow(600, 600, "Figurer"); for (int i = 0; i < theshapes.length; i++) { theshapes[i].move(10, 10); Klassen Shape har den abstrakta metoden draw. Vad är en abstrakt metod? Varför finns den abstrakta metoden draw i klassen Shape? for (int i = 0; i < theshapes.length; i++) { theshapes[i].draw(w); Datavetenskap (LTH) Föreläsning 1 HT 2018 15 / 41 Datavetenskap (LTH) Föreläsning 1 HT 2018 16 / 41

I ett helt annat program är man bara intresserad av att beräkna figurernas area. Metoderna draw och move behövs ej och då inte heller de gemensamma attributen x och y. Onödigt att använda arv! Lösning: Skriv ett interface Measurable med en abstrakt metod för att beräkna arean. Låt klasserna Square och Circle implementera interfacet. public interface Measurable { /** Returns the area. */ double area(); Square side Square(int, int, int) <<interface>> Measurable area() : double Circle radius Circle(int, int, int) Datavetenskap (LTH) Föreläsning 1 HT 2018 17 / 41 Implementera interface Klassen Square implementerar interfacet Measurable I en klass som implementerar ett interface måste alla abstrakta metoder i interfacet implementeras: public class Square implements Measurable { private int side; public Square(int side) { this.side = side; public double getside() { return side; public double area() { return side * side; Datavetenskap (LTH) Föreläsning 1 HT 2018 18 / 41 Datatyp Ett interface är en datatyp (precis som en klass). Exempel 1: Measurable m = new Square(50); System.out.println(m.area()); Exempel 2: public static double sumareas(measurable[] a) { int sum = 0; for (int i = 0; i < a.length; i++) { sum += a[i].area(); return sum; Exempel En variabel av typen Measurable kan referera till objekt av alla klasser som implementerar interfacet: public class Main { public static void main(string[] args) { Measurable[] theshapes = new Measurable[3]; theshapes[0] = new Square(100); theshapes[1] = new Square(100); theshapes[2] = new Circle(50); int sum = 0; for (int i = 0; i < theshapes.length; i++) { sum += theshapes[i].area(); System.out.println(sum); Datavetenskap (LTH) Föreläsning 1 HT 2018 19 / 41 Datavetenskap (LTH) Föreläsning 1 HT 2018 20 / 41

Deklarera interface Innehåller oftast en eller flera publika, abstrakta metoder. Metoderna är implicit publika och abstrakta, dvs. man behöver inte skriva public abstract. public interface Measurable { /** Returns the area. */ double area(); Deklarera interface, forts Från och med Java 8 kan interface innehålla abstrakta metoder konstanter statiska metoder default-metoder public interface Measurable { /** Returns the area. */ double area(); /** Returns a String representation of the area. */ public default String areaasstring() { return String.valueOf(area()); Datavetenskap (LTH) Föreläsning 1 HT 2018 21 / 41 Diskutera Datavetenskap (LTH) Föreläsning 1 HT 2018 22 / 41 Kontrakt Hitta likheter/skillnader mellan abstrakta klasser och interface? Har du träffat på interface tidigare? Ge exempel i så fall. betyder gränssnitt. t fungerar som kontrakt eller specifikation. En klass som implementerar interfacet måste implementera alla abstrakta metoder i interfacet. Annars går klassen inte att kompilera. Flera olika klasser kan implementera samma interface. Datavetenskap (LTH) Föreläsning 1 HT 2018 23 / 41 Datavetenskap (LTH) Föreläsning 1 HT 2018 24 / 41

Ger valmöjlighet Implementera flera interface Genom att använda interfacenamnet som typnamn kan man skjuta upp valet av implementering. lätt byta en implementerande klass mot en annan. Man kan använda alla metoder i ett interface innan de är implementerade. Det är bara när man skapar instanser som man behöver en implementerande klass. Exempel: eller List<Integer> list = new ArrayList<Integer>(); List<Integer>list = new LinkedList<Integer>(); En klass kan implementera flera interface men bara ärva från en klass. public class Square extends Shape implements Measurable, Cloneable { // implementering av alla abstrakta metoder i klassen Shape // och i interfacen Measurable och Cloneable List<E> är ett interface i java.util, medan ArrayList<E> och LinkedList<E> är konkreta klasser. Datavetenskap (LTH) Föreläsning 1 HT 2018 25 / 41 Exempel: Komplexa tal t ComplexNumber Datavetenskap (LTH) Föreläsning 1 HT 2018 26 / 41 Exempel: Komplexa tal Klass som implementerar interfacet public interface ComplexNumber { /** Returns real part. */ double getre(); /** Returns imaginary part. */ double getim(); /** Adds this number and rhs and returns result as a new complex number. */ ComplexNumber add(complexnumber rhs); public class RectangularComplexNumber implements ComplexNumber { private double re; private double im; public RectangularComplexNumber(double re, double im) { this.re = re; this.im = im; public double getre() { return re; public double getim() { return im; Datavetenskap (LTH) Föreläsning 1 HT 2018 27 / 41 Datavetenskap (LTH) Föreläsning 1 HT 2018 28 / 41

Exempel: Komplexa tal En annan klass som implementerar interfacet public class PolarComplexNumber implements ComplexNumber { private double r; private double theta; public PolarComplexNumber(double re, double im) { r = Math.sqrt(re*re + im*im); theta = Math.atan2(im, re); /** returns real part */ public double getre() { return r * Math.cos(theta); Abstrakta datatyper Vad är en abstrakt datatyp? Översikt över de abstrakta datatyperna som ingår i kursen /** returns imaginary part */ public double getim() { return r * Math.sin(theta); Datavetenskap (LTH) Föreläsning 1 HT 2018 29 / 41 Abstrakt datatyp (ADT) Datavetenskap (LTH) Föreläsning 1 HT 2018 30 / 41 Viktiga abstrakta datatyper Definition En abstrakt modell tillsammans med de operationer man kan utföra på den. Exempel: Abstrakt modell: komplexa tal Operationer på modellen: ta reda på realdelen ta reda på imaginärdelen addera med ett annat komplext tal... En ADT kan beskrivas av en specifikation eller av ett interface En klass är en implementering av en ADT Lista en samling element där positionering är möjlig (första, sista, element på plats i, ) Stack en följd av element där borttagning av ett element avser det element som senast satts in. FIFO-kö en följd av element där insättning gör sist och borttagning först i kön. Prioritetskö en kö där borttagning av element avser det viktigaste (minsta) elementet. Mängd (eng. Set) en samling element där dubbletter är förbjudna. Map en samling av nyckel-värde-par (jfr. lexikon) Datavetenskap (LTH) Föreläsning 1 HT 2018 31 / 41 Datavetenskap (LTH) Föreläsning 1 HT 2018 32 / 41

Abstrakt datatypen lista Abstrakta modell lista Verkliga problem 1:a elementet 2:a elementet 3:e elementet 4:e elementet Schema Abstrakt modell: lista Operationer på modellen: Lägga in element i listan (först, sist ) Ta bort ett element ur listan Undersöka om ett visst element finns i listan Ta reda på ett elementet i listan (första, sista ) Undersöka om listan tom Abstrakt modell Bokregister Lista Inköpslista Stack Datavetenskap (LTH) Föreläsning 1 HT 2018 33 / 41 Definition En stack är en följd av element där borttagning av ett element alltid avser det senast insatta elementet. Kallas även LIFO-lista, Last In First Out Operationer sker på toppen av stacken. Köer Datavetenskap (LTH) Föreläsning 1 HT 2018 34 / 41 I en FiFO-kö görs insättning sist i följden och borttagning avser första (äldsta) elementet. First In First Out push pop poll offer I en prioritetskö avser borttagning alltid det mest prioriterade (minsta) elementet. Det viktigaste först. Datavetenskap (LTH) Föreläsning 1 HT 2018 35 / 41 Datavetenskap (LTH) Föreläsning 1 HT 2018 36 / 41

Mängd Map I en map lagras nyckel-värde-par. Definition En mängd (eng. Set) är en en samling element där dubbletter är förbjudna. Operationer: sätta in ett element ta bort ett element undersöka om ett element finns i mängden Kan också kallas lexikon eller nyckel-värdetabell Nycklarna är unika. Man använder nyckeln för att söka tillhörande värde. Exempel: nyckel är månad, värde är antal dagar i månaden. nyckel är personnummer, värde är Person-objekt med namn, adress nycklar (unika) mars april maj värden (dubbletter ok) 31 30 31 Datavetenskap (LTH) Föreläsning 1 HT 2018 37 / 41 Diskutera Datavetenskap (LTH) Föreläsning 1 HT 2018 38 / 41 Abstrakta datatyper i kursen Välj den abstrakta datatyp (lista, stack, kö, prioritetskö, mängd, map) som passar bäst för att lösa respektive problem: Givet en samling element, tag reda på antal unika element. Hålla reda på ett antal arbetsuppgifter som ska utföras. Den arbetsuppgift som tar kortast tid ska utföras först. Räkna antal förekomster av ord i en text. Kontrollera att parenteser är korrekt nästlade { () () är ok, { ( ) är inte ok. Sortera element. I kursen kommer du att använda de olika abstrakta datatyperna för att lösa problem. Då måste du veta vad som utmärker de olika abstrakta datatyperna och vad man ska ha dem till. Du kommer att använda färdiga klasser från Javas klassbibliotek som implementerar dessa abstrakta datatyper. Men du kommer också att få se under huven hur de kan implementeras. Datavetenskap (LTH) Föreläsning 1 HT 2018 39 / 41 Datavetenskap (LTH) Föreläsning 1 HT 2018 40 / 41

Exempel på vad du ska kunna Förklara begreppet abstrakt metod Förklara begreppet interface och deklarera interface i Java Skriva klasser som implementerar interface Förklara begreppet abstrakt datatyp Ha kännedom om några viktiga abstrakta datatyper och vad som utmärker dem Lista Stack FIFO-kö Prioritetskö Mängd Map Datavetenskap (LTH) Föreläsning 1 HT 2018 41 / 41