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

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

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

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

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

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

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

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

TDDC Terminologi Uppdaterad Fö #1

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

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

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

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

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

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

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

TDDC30 Programmering i Java, datastrukturer och algoritmer

Facit Tentamen TDDC kl (6)

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

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

Teoretisk del. Facit Tentamen TDDC (6)

TDDC30 Programmering i Java, datastrukturer och algoritmer

Tentamen i Algoritmer & Datastrukturer i Java

Facit Tentamen TDDC (7)

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 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 14 Innehåll

Teoretisk del. Facit Tentamen TDDC (6)

Föreläsning 1 Datastrukturer (DAT037)

Föreläsning 9 Innehåll

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

Sökning och sortering

Föreläsning 2 Datastrukturer (DAT037)

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

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Föreläsning 9 Innehåll

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

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

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

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

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

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

Tentamen, Algoritmer och datastrukturer

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

Föreläsning 9. Sortering

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036)

Trädstrukturer och grafer

Datastrukturer. föreläsning 3. Stacks 1

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

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

Föreläsning Datastrukturer (DAT037)

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

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

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

Föreläsning 7. Träd och binära sökträd

Seminarium 13 Innehåll

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

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

Föreläsning 9 Datastrukturer (DAT037)

Föreläsning 3 Datastrukturer (DAT037)

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

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

Algoritmer och effektivitet. Föreläsning 5 Innehåll. Analys av algoritmer. Analys av algoritmer Tidskomplexitet. Algoritmer och effektivitet

TDDC76 Programmering och datastrukturer

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

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

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

Föreläsning 13 Innehåll

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Tentamen kl Uppgift 4. Uppgift 5

Exempeltenta GruDat 2002/2003

Lösningsförslag till exempeltenta 1

Imperativ programmering. Föreläsning 4

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

Vad har vi pratat om i kursen?

Föreläsning 15: Repetition DVGA02

DAI2 (TIDAL) + I2 (TKIEK)

Föreläsning 4 Datastrukturer (DAT037)

Tentamen Datastrukturer för D2 DAT 035

Tentamen Datastrukturer (DAT037)

Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5

13 Prioritetsköer, heapar

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

Algoritmer och datastrukturer 2012, föreläsning 6

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

Tentamen Datastrukturer D DAT 035/INN960

Tentamen Datastrukturer (DAT036)

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

Tentamen TEN1 HI

Föreläsning 2 Datastrukturer (DAT037)

Föreläsning 13 Datastrukturer (DAT037)

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

Transkript:

TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 12 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Repetition Om tentamen 1 FÖ1-2: Objektorientering Attribut (en. field) Information/egenskaper Metoder (en. method) Vad kan den göra Inkapsling Samarbete Gränssnitt 2 1

FÖ1-2:Klasser Beskriver en typ av objekt class PacManBaddie { int color; Point position; boolean isblue;... boolean trytoeatme() { if (isblue) { return true; else { return false; Beskrivs av Klass Objekt Instantierar 3 Hitta felet! public class Human { int age; public void printage(){ System.out.println("Jag är " + age + " år gammal"); public static void main(string args[]){ Human human; human.printage(); Ett objekt måste instantieras innan det kan användas. 2

Objekt vs referens public class TestClass { public static void nullify(cat c){ c = null; public static void main(string[] args) { Cat c = new Cat( Kurre ); c.sayhello(); TestClass.nullify(c); c.sayhello(); //NullPointerException! (or is it..) 5 Statiska metoder & attribut Hitta felet! public class Human { int age = 0; static int sum(int a, int b){ return a + b; static void increaseage(int addition){ age = age + addition; public static void main(string args[]){ Human human = new Human(); human.increaseage(1); Statiska metoder kommer inte åt instansvariabler. 3

Statiska metoder & attribut Instansmetoder kommer åt static både klass- och instansvariabler Klassmetoder kommer endast åt klassvariabler Klassmetoder Klassvariabler Klass En instansvariabel hör till en specifik instans En klassvariabel delas mellan alla instanser Dessutom: Beskrivs av Instansmetoder Objekt Instantierar Man behöver (bör) inte gå via en instans för att komma åt en klassmetod/klassvariabel Instansvariabler 7 Arv Möt tre studenter Gymnasiestudenten Anna Högskolestudenten Harry Impulsive Ivar Gillar att lösa problem med penna och papper Har just läst TDDC30 Gillar att lösa problem med en väl skriven programmeringsalgoritm Har just fyllt nio Gillar huvudbonader och att gå ut på rast 8 4

Polymorfism poly-morf (grek.) = många former public class PolyMorphExample{ public static void morphschool(student student) { student.study(); student.solveproblem("what is the matrix"); Kan vara vilken subklass som helst Dröjer tills körningsögonblicket innan det bestäms Endast det som är deklarerat i Student är tillgängligt public static void main(string args[]){ Student anna = new HighSchoolStudent(); morphschool(anna); 9 Arv(2) Alla studenter bör kunna studera och lösa uppgifter Men den perfekte studenten är ett abstrakt koncept.. public abstract class Student { public void study(){ System.out.println("I am studying very hard."); // this method has to be implemented by concrete // students public abstract String solveproblem(string problem); 10 5

Objektorientering Objekt skapas med en klass som mall Vid skapandet anropas en konstruktor Objekt vs referens till objekt == och equals null refererar till inget objekt this refererar till objektet själv Arv Överskuggning Polymorfism Explicit typkonvertering final Abstrakta klasser och metoder 11 UML Beskrivning av en klass + public - private # protected ~ package / derived understruken static Italic abstrakt Klassnamn Attribut Metoder 12 6

UML Beskrivning av relationer mellan klasser Association Har en referens till Aggregation - äger en OBS vag definition, undvik att använda Komposition A består av B Generalisering (arv) A ärver från B A kan användas som en B Realisering (interface)-a implementerar B A kan användas som en B Beroende Multiplicitet exempel: A har minst en referens till B 13 UML Exempel: UML-beskrivning av Studentklasserna 14 7

Abstrakta Datatyper (ADT) Sammanfattning: ADT:er säger vad som ska göras För att bestämma hur det ska göras Välj datastruktur Konstruera algoritmer för ADT:ns operationer Samma ADT kan implementeras med Olika datastrukturer Olika algoritmer Välj den lösning som är mest effektiv i just ditt fall 15 ADT:er & datastrukturer genomgågna i kursen Ordbok Lista Länkad Enkellänkad Dubbellänkad Array Cirkulär Stack Kö Träd Binära Sorterade Binärt sökträd Heap 8

Träd Definition: Ett träd är en riktad acyklisk graf Består av noder & bågar Finns enn väg till varje nod Representation som länkar eller med ett fält Parent(optional) data A B C D E F G H left right 17 Några fler termer Fullt binärt träd: Samtliga noder har noll eller två barn Perfekt träd: Ett fullt träd med alla löv på samma djup Fullständigt binärt träd: Ett perfekt träd med skillnaden att den får sakna några av de högraste löven 18 9

Traversering Traversering: ett systematiskt sätt att besöka alla noder i ett träd Djupet-först Preorder, inorder, postorder Bredden-först Levelorder 19 = Delträd Binärt sökträd För varje nod gäller följande: Alla element till vänster är mindre än nodens värde Alla element till höger är större än nodens värde insert remove - - + - - - - + - - + - + - Givet att trädet är väl balanserat (ej fallet ovan) blir söktiden O(logn) 20 10

Heap En heap är ett fullständigt binärt träd h = log(n) För varje nod har dess förälder lika eller mindre nyckel => Den minsta nyckeln finns alltid i roten Används ofta som impl. till prioritetskö Insättning Borttagning Skapa Representation Komplexitet 7 3 5 7 2 3 9 5 8 2 9 7 8 3 1 5 9 8 7 3 7 5 1 9 3 2 8 5 8 21 9 Sortering Allmänt Vi har studerat O(n 2 ) och O(nlog(n)) O(n 2 )-algoritmer kan vara bra i vissa fall Selectionsort Alltid O(n 2 ) alltid dålig Insertionsort Bästa fall O(n), värsta fall O(n 2 ) Bra på små arrayer (<50) eller där data är nästan sorterad Lätt att implementera 22 11

Sortering(2) Shellsort Utnyttjar insertionsorts bra sidor och försöker undvika de dåliga Tänjer på insertionsorts gränser Svår att analysera, beror på vald lucksekvens O(n 2 ), O(n 1.5 ), O(n 1.33 ), O(nlog(n)) Mergesort Optimal algoritm: O(nlog(n)) Kräver minne O(n) Ideal för sortering på externt minne färre diskåtkomster Quicksort I medelfallet snabbaste sorteringsalgoritmen O(nlog(n)) Vanlig i klassbibliotek (börjar dock ersättas av t ex Timsort) Dålig i värstafallet, använd ej i realtidsapplikationer 23 Sortering(3) Heapsort Mycket snabb - O(nlog(n)) I praktiken långsammare än quicksort i medelfallet Bäst i värstafallet Bra för realtidsapplikationer! Countsort, Bucketsort Ej jämförande algoritmer Bra om nyckelmängden är liten och kan avbildas på heltal Snabbare än Quicksort och Heapsort O(n) Radixsort Bra när nycklarna kan delas in i delnycklar I övrigt som Bucketsort 24 12

Quickselect Välj pivot Partionera i tre delar L element mindre än pivot E element lika med pivot G element större än pivot Partionera igen med enn av partitionerna beroende på m L (tredje minsta finns någonstans här) E G 25 Komplexitetsteori En algoritm ska fungerar för indata av godtycklig storlek Beräkna exekveringstiden som en funktion av storleken på indata T(n) Fokusera på värstafallet Ibland även bästafallet, medelfallet, amorterad komplexitet Ignorera konstanta faktorer Analysen ska vara maskinoberoende Kraftfulla maskiner ökar hastigheten med en konstant Studera skalbarheten (asymptotiska beteendet) för stora problemstorleka Fokusera på dominerande faktor Konstant, logaritmisk, kvadratisk, kubisk, exponentiell, faktoriell, polynomisk Rumskomplexitet 26 13

Komplexitetsteori(2) for(int i = 0; i < data.length/3; i++){ System.out.println(data[i]); for(int i = 0; i < mylist.size(); i++){ int j = i + mylist.get(i); mylist.set(i,j); //replace element with j Ordo övre gräns Omega undre gräns Theta övre och undre gräns 27 Tentamen 4 timmar En teoridel (penna och papper) En praktisk del (dator) Ej tillgång till internet, ni får relevant API som bilaga till tentamen Inga övriga hjälpmedel Javas bibliotek (förutom java.lang) får ej användas om ej explicit uttryckt i uppgiften Möjlighet att anhålla om svar på vissa deluppgifter för att kunna lösa annan deluppgift (praktiska delen) Fyll i motsvarande blankett och lämna till tentavakt Får ej poäng för den deluppgiften 28 14

Tentamen(2) Kopiera givna filer till ditt konto Skapa ett nytt projekt för varje uppgift Skicka frågor till examinator via studentklienten MEN Skicka inte in uppgifter, lämna kvar dessa på kontot när du är klar 29 15