SAMMANFATTNING TDDC30 Programmering i Java, datastrukturer och algoritmer
|
|
- Lars-Erik Ström
- för 8 år sedan
- Visningar:
Transkript
1 SAMMANFATTNING TDDC30 Programmering i Java, datastrukturer och algoritmer LÄST SOM EN DEL AV CIVILINGENJÖRSPROGRAMMET I INDUSTRIELL EKONOMI VID LITH, VT 2016 Senast reviderad: Författare: Viktor Cheng Tack till: Max Fischer, Björn Ström
2 Innehållsförteckning TEORI... 3 Synlighet... 3 Java... 3 Objektorientering... 4 Algoritmer... 6 SORTERINGSALGORITMER... 7 Insertion sort... 7 Shaker sort... 8 ABSTRAKTA DATATYPER (ADT) Stack Dubbellänkad lista Cirkulärt dubbellänkad lista DATASTRUKTURER Träd...11 Binärt sökträd Heap TRAVERSERING UML NYCKELORD I PRAKTIKEN Skicka med nödvändiga saker till superklass i subklassens konstruktor Vid överskuggning av metod, kan använda resultat från superklass och returnera något annat Göra interface generiska Ändra metod utan att göra förändringar i metodens interface Sida 2 av 14
3 TEORI Synlighet Vad är skillnaden mellan synligheterna public, private och protected? Public: synlig för alla Protected: synlig inom klassen, andra klasser inom samma paket, subklasser (klasser som ärver från klass) Private: endast synlig inom klassen Varför kan man tänkas vilja dölja metoder och variabler (i en klass) med private? Metoder: dölja hur implementationen ser ut för annan kod/användare som använder sig av klassen Variabler: den som använder objekt av den här klassen kan inte komma åt variablerna längre o Variablerna kan då bara läsas och ändras av klassens egna metoder Den som skriver klassen fritt kan ställa krav och förväntningar på variablernas innehåll Skyddar interna variabler från förändringar utifrån Java Varför anses program skrivna i Java vara plattformsoberoende? Programkod i Java kompileras till ett mellanläge mellan källkod och maskinkod som kallas bytecode Den representationen (bytecode) kan sedan tolkas av en Java Virtual Machine (JVM) (programvaran som behövs för att köra ett program) Samma bytecode kan tolkas av flera olika JVM:er på olika plattformar. Själva Java-programmet behöver ej ändras när en plattform byts, utan man installerar istället rätt JVM för just den plattformen och kör sedan Java-programmet med den. Vad är syftet med UML? Standardiserat grafiskt språk för att beskriva objektorienterade system Visualisera system och hur de olika komponenterna inom det hänger ihop Mjukvaruutveckling, programvarukonstruktion - Varför det är en god idé att följa en kodstandard, t.ex. Oracles kodkonventioner? En enhetlig standard ökar läsbarheten o Inte bara för programmeraren som har skrivit koden utan även för andra programmerare Det är viktigt i större sammanhang då många programmerare samarbetar kring en stor mängd kod Ge ett exempel på ett kodstycke som orsakar ett NullPointerException. Animal x = null; x.introduceyourself(); Klasser kan placeras i paket. Varför gör man det? Organisation: Samla relaterade klasser i en sammanhängande och logisk struktur. Synlighet: package private eller protected ger synlighet inom samma paket men ej för klasser i andra paket Vad är syftet med undantag/exceptions? Signalera när något har gått fel, vad som har gått fel, vad som har fått fel Hantera fel genom att skicka vidare ansvaret till rätt del av programmet Sida 3 av 14
4 Objektorientering Vad är syftet med en konstruktor? Konstruktor: en särskild metod som måste användas för att skapa ett objekt av en klass. Säkerställa att instanser av klasser byggs på rätt sätt, t.ex. att alla variabler initieras korrekt Kontrollera att alla värden som skickas in som parametrar till konstruktorn har korrekta värden Vad innebär polymorfi? En gemensam typ (Animal) kan representera flera olika undertyper (Cat, Dog) baserade på den gemensamma bastypen I undertyperna kan man definiera egna metoder (CatMeow) eller skriva över metoder (CatHello) från bastypen för att ändra beteende Vad är skillnaden mellan en klass och en instans? Klass: övergripande beskrivning av hur något ser ut och vilka metoder och variabler som finns Instans: ett konkret objekt av en sådan typ (klass) i minnet, där variablerna har fått specifika värden Vad innebär det att en metod är överlagrad? Den har skrivits över i en underklass: o Om Animal har metoden void introduceyourself() och o underklassen Cat har en egen void introduceyourself() Då har Cat-klassen överlagrat Animals introduceyourself-metod Vad skiljer en statisk metod från en icke-statisk? Statisk metod: associerad till klassen o Kan anropas utan en instans av klassen o Har endast tillgång till klassvariabler/metoder Icke-statisk metod: associerad med en viss instans av klassen o Kan bara anropas via en sådan instans o Har tillgång till klassvariabler/metoder och instansvariabler/metoder. Vad skiljer en statisk variabel (klassvariabel) från en icke-statisk (instansvariabel)? I en klass kan det finnas både instansvariabler och klassvariabler. Statisk variabel: associerad till klassen o Kan anropas utan en instans av klassen o Alla instanser av klassen delar på samma klassvariabel Icke-statisk variabel: associerad med en viss instans av klassen o Kan bara anropas via en sådan instans o En separat instansvariabel per instans av klassen I Car mycar = new Car() sker två separata saker. Vad innebär Car mycar och vad innebär new Car()? Car mycar skapar en variabel som är en referens till ett Car-objekt o Skapar dock inte det tillhörande Car-objektet. new Car() skapar ett Car-objekt o För att objektet ska få fortsätta existera måste det finnas en referens till den i någon variabel (vilket ju var det som skedde i Car mycar) Sida 4 av 14
5 Vad är skillnaden mellan en abstrakt klass, en vanlig klass och ett interface? Interface: kan bara innehålla metod-deklarationer Abstrakt klass: kan innehålla både rena metod-deklarationer och metod-implementationer Går ej att instantiera interface eller abstrakt klass, då metoder utan implementation är odefinierade Vanlig klass: kan bara innehålla metod-implementationer och kan därför instantieras Vad skiljer en abstrakt datatyp (ADT) från ett interface? ADT definierar en typ av datastruktur (ex. träd, lista) samt vilka operationer man kan genomföra på den här typen av datastruktur o Definierar inte hur datatypen och dess operationer ska implementeras o Definierar alltid en typ av datastruktur, en begränsning som ett interface inte har Interface definierar ett gränssnitt med utseendet på en eller flera antal metoder o Definierar inte hur dessa metoder implementeras o Kan användas för att definiera en ADT (men en ADT kan även vara t.ex. en abstrakt klass i Java) Vad är syftet med ett interface? Ange vilka metoder som ska finnas ( en ritning ) o utan att närmare behöva ange hur de ska vara implementerade Implementationen lämnas istället till den klass som implementerar interfacet En klass kan implementera flera interface samtidigt, till skillnad från arv som bara kan vara från en annan klass i Java. Vad är skillnaden mellan en abstrakt datatyp (ADT) och dess implementation? ADT beskriver vad som ska göras men inte hur det ska göras. Implementationen beskriver vad som ska göras och även hur det ska göras. Vad innebär det att en metod är abstract? Att en metod med exakt det utseendet ska finnas och måste definieras i någon underklass o En abstrakt metod är beskriven med parametrar, returtyp, namn och Javadoc, men har ingen kropp med kod. o Implementationen (dvs. själva koden) definieras i en subklass för att göra klassen komplett Klasser som är abstrakta kan inte instantieras utan måste ärvas ifrån av en icke-abstrakt klass som då i sin tur kan instantieras. Om Animal har den abstrakta metoden abstract void introduceyourself() o så måste Animal vara en abstrakt klass (eftersom den innehåller minst en abstrakt metod) o så måste t.ex. subklassen Cat definiera en void introduceyourself()-metod, komplett med implementation, för att bli en komplett klass (icke-abstrakt) som går att instantiera objekt från Vad innebär det att abstrahera i ett programmeringsperspektiv? Bortse från vissa detaljer för att istället fokusera på det övergripande, det som är viktigt. Målet är att få en bättre överblick utan att bli distraherad av oviktiga detaljer. Ett exempel är ADT:er, där man bortser från implementationsdetaljer och bara fokuserar på de operationer och den övergripande datastrukturen som ADT:n representerar. Sida 5 av 14
6 Algoritmer Varför kan man inte anse att en viss sorteringsalgoritm är bäst? Eftersom det ofta beror på situationen (hur data ser ut), exempelvis: Data som för det mesta ligger i rätt ordning: insertion sort > quicksort Random data: quicksort > insertion sort Vad innebär det att en algoritm har tidskomplexiteten O(n 2 ) och rymdskomplexitet O(n) i värsta fallet? Tidskomplexitet O(n 2 ): tiden som algoritmen tar att köra i värsta fallet är alltid beroende av mängden indata n med förhållandet n 2, för alla n över en viss storlek. (Algoritmen kommer alltså aldrig att vara långsammare än så, från och med det n:et) Rymdskomplexitet O(n): mängden minnesutrymme algoritmen tar upp är i värsta fall alltid beroende av mängden indata n med förhållandet n, för alla n över en viss storlek. (Algoritmen kommer alltså aldrig ta upp mer minnesutrymme än så från och med det n:et) Vad innebär det att en algoritm har tidskomplexitet Ω(n 2 ) och rymdskomplexitet Ω(n 3 ) i bästa fallet? Tidskomplexitet Ω(n 2 ): tiden algoritmen tar att köra i bästa fallet är alltid beroende av mängden indata n med förhållandet n 2, för alla n över en viss storlek. (Algoritmen kommer alltså aldrig vara snabbare än så från och med det n:et) Rymdskomplexitet Ω(n 3 ): mängden minnesutrymme algoritmen tar upp är i bästa fall alltid beroende av mängden indata n med förhållandet n 3, för alla n över en viss storlek. (Algoritmen kommer alltså aldrig ta upp mindre minnesutrymme än så från och med det n:et) Om en algoritm har tidskomplexiteten O(n) och en annan O(n 2 ), vad innebär det här för skillnad mellan algoritmerna? För stora n kommer den värsta möjliga tidsförbrukningen växa linjärt med n för O(n)-algoritmen, men O(n 2 )-algoritmen växer istället kvadratiskt. Om n blir dubbelt så stor så kommer den värsta tidsförbrukningen för O(n)-algoritmen också bli dubbelt så stor, till skillnad från O(n 2 )-algoritmen där tidsförbrukningen skulle bli fyra gånger så stor. Varför används ordo-notation för att jämföra tidskomplexitet hos algoritmer, istället för t.ex. jämföra tiden de olika algoritmerna tar att köra? Olika hårdvara gör att tidsmätningar blir opålitliga Svårt att förutspå hur tiden beror av storlek på indata (t.ex. dubbelt så mycket indata = tid? ) Ordo visar hur snabbt algoritmers tidskonsumtion växer (i värsta fall), beroende av storlek på indata Vad innebär det att en sorteringsalgoritm är stabil? Förändrar inte den inbördes ordningen mellan element av samma storlek /värde Sida 6 av 14
7 SORTERINGSALGORITMER Insertion sort Dela upp array i en sorterad och en osorterad del Ta ut det första elementet i den osorterade delen Swappa elementet nedåt så länge det är större än föregående for i = 0 to i < n j = i while j > 0 and A[j] < A[j-1] swap A[j] and A[j-1] j = j - 1 end while end for loop stegar igenom alla index/positioner i arrayen börjar jämföra på nuvarande position om nuvarande < föregående, så ska nuvarande nedåt byt plats (flytta nuvarande ett steg ned) fortsätt nedåt ett steg för att jämföra sluta loopa när man når början eller stöter på element som inte är större sluta loopa när alla index/positioner i arrayen är genomsökta Tidskomplexitet: O(n 2 ) Stabil: Ja Selection sort Dela upp array i en sorterad och en osorterad del Leta upp minsta elementet i osorterade delen Lägg in i slutet på sorterade delen for i = 0 to i < n-1 int min = i for j = i+1 to j < n if (A[j] < A[min]) min = j end if end for swap A[i] and A[min] end for loop stegar igenom alla index/positioner i arrayen anta att index för minsta elementet är index för nuvarande jämför mot resten av alla efterkommande element om något efterföljande element < nuvarande minsta element ändra min_index till det elementets index sluta loopa när stegat igenom alla efterkommande element byt ut nuvarande element mot minsta element sluta loopa när alla index/positioner i arrayen är genomsökta Tidskomplexitet: O(n 2 ) Stabil: Nej Bubble sort Börja från högsta index Jämför höger element med vänster element hela vägen ned Upprepa processen för nästa element till listan är genomsökt for i = 0 to i < n loop stegar igenom alla index/positioner i arrayen for j = n-1 to j > i; --j loopa igenom alla element från sista till nuvarande if (a[j] < a[j-1]) om vänster < nuvarande swap A[j] and A[j-1] byt ut nuvarande mot vänster end if ändra min_index till det elementets index end for sluta loopa när vi når nuvarande position end for sluta loopa när stegat igenom hela listan (alla positioner) Tidskomplexitet: O(n 2 ) Stabil: Ja Sida 7 av 14
8 Shaker sort Två-vägs bubble sort Kör bubble sort höger till vänster (små element bubblar ned) Kör bubble sort vänster till höger (stora element bubblar upp) Upprepa processen till listan är sorterad Tidskomplexitet: O(n 2 ) Stabil: Ja Shell sort Välj ett lucktal N och låt n = Markera vart N:te element från och med n Sortera dessa inbördes med insertion sort 2. Öka n med 1 och upprepa (1) och (2) till n = N 3. Minska N, låt n = 0 4. Upprepa (1) och (2) till n < 1 Börja med ett stort N, upp till size/2 Val av lucksekvens N: Hibbards {1, 3, 7,..., 2 k -1} Tidskomplexitet: Beror på lucksekvens. Ej sämre än O(n 2 ) Stabil: Nej Quicksort Välj ut ett pivotelement, p, och lägg åt sidan (först) Median av första, mellersta och sista elementet Längst till vänster Element < p till vänster och element > p till höger Pekare pivot, pekare vänster, pekare höger 1. Fortsätt med vänster så länge vänster p 2. Fortsätt med höger så länge höger > p 3. Swappa element på vänster och element på höger 4. Gå till steg 1 När vänster höger ( gått förbi ) Pivotelement p flyttas in (swappas mot höger) p är nu på rätt plats och avskiljer vänster och höger Upprepa quicksort rekursivt på vänster och höger del Tidskomplexitet: O(n 2 ) med medelfall O(n log n) Stabil: Nej Sida 8 av 14
9 Merge sort Då mängden består av 0 eller 1 element Redan sorterat! (Base case) Dela upp mängden i två lika stora delar Anropa merge sort på varje (rekursion) Ända till varje delmängd består av 2 element Jämför elementen, swappa minst till vänster Gör så för alla delmängder För varje sorterad delmängd: Jämför med delmängden bredvid Sortera ihop (merge) dessa ända till hela arrayen är sorterad Tidskomplexitet: O(n log n) Stabil: Ja Heap sort Skapa en minheap - O(n) Utför removemin för varje element i heap - O(log n) o Spara i ett fält Kan utföras in-place o Vänster del av array är en heap, höger del är ett osorterat fält Tidskomplexitet: O(n log n) Stabil: Nej Count sort Räkna hur många gånger varje tal förekommer Dimensionera count_array efter värdet på största element (exklusive 0) o Största element = 9 size(count_array)=10 o Sätt startvärde = 0 på varje index Gå igenom osorterad lista o För varje påträffat tal t, count_array[t] ökas med 1 Gå igenom count_array o För varje index j i count_array Lägg till A[j] stycken av j i sorted_array Tidskomplexitet: O(n) Stabil: Ja Bucket sort Skapa lika många hinkar som värdet på största element (+1 om 0 finns med) Lägg varje element i den hink vars index är samma som elementets värde Börja i hink 1 (index 0), ta ut alla element ur varje hink och placera efter varandra Tidskomplexitet: O(n) Stabil: Beror på. Sida 9 av 14
10 ABSTRAKTA DATATYPER (ADT) Stack void push(e value) Lägg till element på toppen av stacken this.first = new Node<E>(value, this.first) Skapar ny nod 1 med data och next = this.first Allra första gången är this.first = null Sedan sätts this.first = nya nod 1 First pekar nu inte på null utan på nod 1 (som pekar på null) Nästa gång kommer en ny nod 2 skapas, som pekar på nod 1 First kommer nu att peka på nod 2 osv E pop() Returnera och ta bort översta elementet på stacken E value = this.first.getdata() this.first = this.first.getnext() return value Hämta data och lagra i E Låt first peka på nästkommande nod 2 (som ju ska bli nya first) Utan någon referens kommer nu nod 1 att tas bort Returnera datat int size() Returnera antal element i stacken Skapa counter = 0 och temp = first while (temp!= null) ++counter och temp = temp.getnext Dubbellänkad lista remove(int index) Node temp = start; int currentindex = 0 while (currentindex < index) temp = temp.next ++currentindex if (temp.next == temp) start = null else temp.prev.next = temp.next temp.next.prev = temp.prev if (temp == start) start = temp.next Skapa temp-nod, peka den på startnoden Loopa till framme vid rätt index // was this the only node? Ta bort noden så finns ingen kvar, dvs. null // delink this node Prev pekar på nästa Nästa pekar på prev // was the node the start node? Startnod blir nu startnod+1 Cirkulärt dubbellänkad lista removelast(int index) Node<E> temp = start.prev if (temp.next == temp) start = null else temp.prev.next = temp.next temp.next.prev = temp.prev //cirkulärt länkad start.prev = last // was this the only node? Ta bort noden så finns ingen kvar, dvs. null // delink this node Prev pekar på nästa Nästa pekar på prev Sida 10 av 14
11 DATASTRUKTURER Träd Binärt träd Sökträd Fullt träd Perfekt träd Fullständigt träd Varje nod har max 2 barn Alla noder till vänster är mindre och alla noder till höger är större Samtliga noder har antingen inga eller maxantal barn Fullt träd där alla löv ligger på samma nivå Perfekt träd men med skillnaden att löven längst ned till höger får saknas Binärt sökträd void add(node start, Node newnode) if (newnode.key < start.key) if (start.left == null) start.left = newnode newnode.parent = start else add(start.left, newnode) else if (newnode.key > start.key) if (start.right == null) start.right = newnode newnode.parent = start else add(start.right, newnode) else start.data = newnode.data // Om det vi söker är mindre än nuvarande ligger till vänster Om inte finns någon till vänster nått slutet Lägg in newnode på slutet Sätt start (nuvarande slut) som newnodes förälder Rekursiv sökning på vänster delträd // Om det vi söker är större än nuvarande ligger till höger Om inte finns någon till höger nått slutet Lägg in newnode på slutet Sätt start (nuvarande slut) som newnodes förälder Rekursiv sökning på höger delträd // Base case // Om det vi söker inte är större/mindre ersätt nuvarande void printnode(node temp) Preorder-traversering (rot, vänster, höger) if (temp!= null) System.out.println(temp.data) printnode(temp.left) printnode(temp.right) // Om inte i slutet, printa nuvarande nod // anropa rekursivt på vänster, går ned längs hela vänster delträd // och går sedan upp längs anropskedjan och kör nedanstående // anropa rekursivt på höger, går ned längs hela höger delträd String removemin() Node temp = root while (temp.left!= null) temp = temp. left if (temp.parent == null) root = temp.right else temp.parent. left = temp.right if (temp.right!= null) temp.right.parent = temp.parent return temp.data String removemax() Node temp = root while (temp.right!= null) temp = temp.right if (temp.parent == null) root = temp.left else temp.parent.right = temp.left if (temp.left!= null) temp.left.parent = temp.parent return temp.data // find node containing the minimum / maximum value // remove the node // om första noden, finns ingen större till höger // länka samman förälder med syskon // länka samman syskon med förälder Sida 11 av 14
12 Heap int size() int size = size(heap) int depth = 0 while (size > 1) size = size/2 depth = depth + 1 return depth Fullständigt binärt träd o OBS: ej binärt sökträd Trädets grenar ska vara så jämna som möjligt i antal o Om det inte går fylls nedersta nivån från vänster Max heap: varje nods värde värdena i nodens barn (större -> mindre) Min heap: varje nods värde värdena i nodens barn (mindre -> större) Insättning i min-heap 1. Lägg in nod sist i heapen 2. Om nod < förälder swap Upprepa (2) till nod > förälder Borttagning ur min-heap Ta bort rot-noden ty minst Ersätt med sista noden o Sista noden blir ny rot-nod Jämför nya noden med dess barn o Swappa med minsta barnet Upprepa till nya noden är nere i botten Insättning i max-heap 1. Lägg in nod sist i heapen 2. Om nod > förälder swap Upprepa (2) till nod < förälder Borttagning ur max-heap Ta bort rot-noden ty störst Ersätt med sista noden o Sista noden blir ny rot-nod Jämför nya noden med dess barn o Swappa med största barnet Upprepa till nya noden är nere i botten TRAVERSERING Börja på vänster sida om startnoden, gå ner längs vänster delträd och följ ytterkanten hela vägen. Pre-order: Rot > vänster > höger In-order: Vänster > rot > höger Post-order: Vänster > höger > rot Level-order: Från vänster till höger: Rotnivå > Rotnivå-1 > > Bottennivå UML classname datatype attribute # String protectedattribute returntype method(indatatype variablename) boolean publicstaticmethod(int x) + public private # protected ~ package private (default) underline static italic abstract / derived Sida 12 av 14
13 NYCKELORD static Anger att något associeras direkt med klassen, inte de enskilda objekten som skapas från klassen. Kan användas för metoder eller variabler, som då kallas klassmetoder respektive klassvariabler. Dessa metoder kan då kommas åt direkt via klassen, t.ex. Math.cos(...). Alla instanser kan komma åt statiska metoder och variabler i sin egen klass, men de statiska metoderna i klassen kan inte komma åt instansvariabler och instansmetoder. public static void main(string args) extends Anger vilken super en klass ärver av o Får automatiskt alla metoder och variabler från super o Kan utöka med egna metoder och variabler samt skriva över super public void Cat extends Animal implements Comparable o Genom att passa superklassen som parameter kan en metod ta in alla subklasser till en superklass implements Anger vilket interface en annan klass implementerar public interface Dictionary{ o public boolean lookup(string key);} public class mydictionary implements Dictionary{ o public Boolean lookup(string key) {kod för implementation} abstract Om superklass har en abstrakt metod måste alla subklasser implementera koden i sin egen klass o Såvida inte subklassen själv är abstrakt Metod: o public abstract void paintstring() - superklass o public void paintstring() { implementation av abstrakt metod } - subklass Klass: o public abstract class abstractclassname() { } superklass = abstrakta metoder o public class implementationofabstractclass extends abstractclassname() { } subklass = implementationer av abstrakta metoder final Används för att markera att något inte får förändras. o final classname: klassen får inte ärvas från o final methodname: metoden får inte överlagras under ett arv o final variablename: variabeln får inte ändra värde o OBS: om variabeln som är final är en referens, påverkar detta endast referensen som då inte får byta vilket objekt den refererar till. Objektet i sig kan dock fortfarande byta tillstånd i sina attribut. Läggs lämpligast i deklarationer eller konstruktor (så att det endast sker en gång) Sida 13 av 14
14 I PRAKTIKEN Skicka med nödvändiga saker till superklass i subklassens konstruktor public class MilkProduct implements InterFaceName // superklass // class variables here public MilkProduct(dataType1 parameter1, datatype2 parameter2) // konstruktor (super) this.parameter1 = parameter1; this.parameter2 = parameter2; public class NewMilkProduct extends MilkProduct // subklass // class variables here public NewMilkProduct(dataType1 parameter1, datatype2 parameter2, datatype3 parameter3) super(datatype1 parameter1, datatype2 parameter2); // konstruktor (sub) this.parameter3 = parameter3; Vid överskuggning av metod, kan använda resultat från superklass och returnera något annat public int getdaysuntilexpiry() { // metod som hör till superklass return daysuntilexpiry; public int getdaysuntilexpiry() // metod som hör till subklass, överskuggar superklassens metod return super.getdaysuntilexpiry() / 2; Göra interface generiska public interface SortingAlgorithm public abstract void sort(); public abstract ArrayList<MilkProduct> getresult(); public abstract void setdata(arraylist<milkproduct> data); import MyComparable; public interface SortingAlgorithm<E extends MyComparable<E>> public abstract void sort(); public abstract ArrayList<E> getresult(); public abstract void setdata(arraylist<e> data); Ändra metod utan att göra förändringar i metodens interface I en klass: importera och implementera interface som tillhandahåller sorteringsmetoden. Överskugga sedan sorteringsmetoden i klassen. Innan: public class Cat extends Animal Efter: public class Cat extends Animal implements AnimalComparable public boolean betterthan(cat name) { } // metod från interface AnimalComparable som överskuggas ELLER Anropa hjälpmetod i metoden (hjälpmetoden får utformas på valfritt sätt) public ArrayList<Integer> getleaves() {... call helpmethod() } - interface helpmethod(param1, param2) Sida 14 av 14
Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.
Facit Tentamen TDDC30 2015-03-19 kl 08-12 1 (6) Teoretisk del 1. (6p) "Snabba frågor" Alla svar motiveras väl. a) Varför väljer man ofta synligheten private hellre än public för medlemsvariabler i en klass?
Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.
Facit Tentamen TDDC30 2015-08-28 kl 08-12 1 (6) Teoretisk del 1. (6p) "Snabba frågor" Alla svar motiveras väl. a) Vad är syftet med ett interface? (1p) Svar:Att ange vilka metoder som ska finnas, utan
TDDC Terminologi Uppdaterad Fö #1
Det här dokumentet ska inte ses som en uttömmande förklaring av varje term, utan snarare som en snabb påminnelse om vad varje enskild term betydde. För en mer noggrann beskrivning, se kursmaterialet eller
Teoretisk del. Facit Tentamen TDDC (6)
Facit Tentamen TDDC30 2014-08-29 1 (6) Teoretisk del 1. (6p) "Snabba frågor" Alla svar motiveras väl. a) Vad är skillnaden mellan synligheterna public, private och protected? (1p) Svar:public: Nåbar för
Facit Tentamen TDDC (7)
Facit Tentamen TDDC30 2014-03-18 1 (7) Teoretisk del 1. (3p) "Snabba frågor" a) Varför kan man tänkas vilja dölja metoder och variabler med private? (0.5p) Svar:För att skydda interna variabler från ändringar
Teoretisk del. Facit Tentamen TDDC (6)
Facit Tentamen TDDC30 2013-06-05 1 (6) Teoretisk del 1. (3p) "Snabba frågor" Alla svar motiveras väl. a) Vad skiljer en statisk metod från en icke-statisk? (0.5p) Svar:En statisk metod är associerad till
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 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 På denna föreläsning: Prioritetskö Heap Representation som
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 12 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Repetition Om tentamen 1 FÖ1-2: Objektorientering
Facit Tentamen TDDC kl (6)
Facit Tentamen TDDC30 2015-03-19 kl 14-18 1 (6) Teoretisk del 1. (6p) "Snabba frågor" Alla svar motiveras väl. a) Ge ett exempel på ett kodstycke som orsakar ett NullPointerException. (1p) Svar:Animal
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 12 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Repetition Om tentamen 1 FÖ1-2: Objektorientering
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 På denna föreläsning: Abstrakta datatyper Listor Stackar
Seminarium 13 Innehåll
Seminarium 13 Innehåll Prioritetsköer och heapar Prioritetsköer ADTn Klassen PriorityQueue i java.util Implementering med lista Heapar ADTn För implementering av prioritetskö För sortering Efter seminariet
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 Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util Implementering med lista ar Implementering av prioritetskö med heap Sortering
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta
Föreläsning 9 Innehåll
Föreläsning 9 Innehåll Binära sökträd algoritmer för sökning, insättning och borttagning, implementering effektivitet balanserade binära sökträd, AVL-träd Abstrakta datatyperna mängd (eng. Set) och lexikon
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 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Sortering Selectionsort, Bubblesort,
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 På denna föreläsning: Abstrakta datatyper Listor Stackar
ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar
Föreläsning 1 Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util Heapar Implementering av prioritetskö med heap Sortering med hjälp av heap
Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling
metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man
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 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Konstruktorer Statiska metoder & attribut
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Mer om Interface Generiska klasser Undantag Nästlade klasser 1
Försättsblad till skriftlig tentamen vid Linköpings Universitet
Försättsblad till skriftlig tentamen vid Linköpings Universitet Datum för tentamen 2013-03-27 Sal Tid 08:00 12:00 Kurskod Provkod Kursnamn/benämning Institution Antal uppgifter som ingår i tentamen Antal
ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar
Föreläsning 1 Innehåll ADT Prioritetskö Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util ar Implementering av prioritetskö med heap Sortering med hjälp
DAT043 - Föreläsning 7
DAT043 - Föreläsning 7 Model-View-Controller, mer om klasser och interface (arv, ) 2017-02-06 Designmönstret Observer avläser Observer Observable meddelar Observer avläser En eller flera objekt registrerar
Sökning och sortering
Sökning och sortering Programmering för språkteknologer 2 Sara Stymne 2013-09-16 Idag Sökning Analys av algoritmer komplexitet Sortering Vad är sökning? Sökning innebär att hitta ett värde i en samling
Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag
Programmering för språkteknologer II, HT2014. Rum
Programmering för språkteknologer II, HT2014 Avancerad programmering för språkteknologer, HT2014 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ 1 Idag - Parametriserade
Länkade strukturer, parametriserade typer och undantag
Länkade strukturer, parametriserade typer och undantag Programmering för språkteknologer 2 Sara Stymne 2013-09-18 Idag Parametriserade typer Listor och länkade strukturer Komplexitet i länkade strukturer
Träd Hierarkiska strukturer
Träd Hierarkiska strukturer a 1 a 2 a 3 a 4 a 2 a 5 a 6 a 7 Hierarki: Korta vägar till många Hur korta? Linjär lista: n 2 Träd: Antal element på avståndet m: g m a 1 a 3 a 8 a 12 m = log g n a 9 a 10 Väglängden
Försättsblad till skriftlig tentamen vid Linköpings Universitet
Försättsblad till skriftlig tentamen vid Linköpings Universitet Datum för tentamen 2014-03-18 Sal Tid 08:00 12:00 Kurskod Provkod Kursnamn/benämning Institution Antal uppgifter som ingår i tentamen Antal
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning Generiska klasser Undantag Interface Nästlade klasser 1 Problem:
Trädstrukturer och grafer
Översikt Trädstrukturer och grafer Trädstrukturer Grundbegrepp Binära träd Sökning i träd Grafer Sökning i grafer Programmering tillämpningar och datastrukturer Varför olika datastrukturer? Olika datastrukturer
Föreläsning 2 Datastrukturer (DAT037)
Föreläsning 2 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-02 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Tidskomplexitet
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag
Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor
Abstrakta datatyper 1 Primitiva vektorer Vektorer kan skapas av primitiva datatyper, objektreferenser eller andra vektorer. Vektorer indexeras liksom i C från 0. För att referera en vektor används hakparenteser.
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Träd Traversering Insättning, borttagning
Lösningsförslag till exempeltenta 1
Lösningsförslag till exempeltenta 1 1 1. Beskriv hur binärsökning fungerar. Beskriv dess pseudokod och förklara så klart som möjligt hur den fungerar. 2 Uppgift 1 - Lösning Huvudidé: - Titta på datan i
Föreläsning 9 Datastrukturer (DAT037)
Föreläsning Datastrukturer (DAT07) Fredrik Lindblad 27 november 207 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/20/course/dat07 Innehåll 2
Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.
Programmering för Språkteknologer II Markus Saers markus.saers@lingfil.uu.se Rum -040 stp.lingfil.uu.se/~markuss/ht0/pst Innehåll Associativa datastrukturer Hashtabeller Sökträd Implementationsdetaljer
2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning
2I1049 Föreläsning 5 Objektorienterad programmering i Java KTH-MI Peter Mozelius Objektorientering Världar uppbyggda av objekt Inte helt olikt vår egen värld Ett sätt att modularisera våra system Objekten
Programmering för språkteknologer II, HT2011. Rum
Programmering för språkteknologer II, HT2011 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv11/pst2/ Kursplan Mål Efter avslutad kurs skall studenten för att förtjäna betyget
Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14
Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 14 I torsdags & fredags: arrayer Deklaration, initiering, åtkomst Arrayer är referenser Arrayer som parametrar och returvärden Exempel
Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp
Föreläsning 4 Innehåll Abstrakta datatypen lista Definition Abstrakta datatypen lista egen implementering Datastrukturen enkellänkad lista Nästlade klasser statiska nästlade klasser inre klasser Listklasser
Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }
En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class
Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder
Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305 Klass Object, instans av klass public/private Klassvariabler och klassmetoder 1 Array och ArrayList Arrayer och ArrayList är till för att innehålla
Föreläsning REPETITION & EXTENTA
Föreläsning 18 19 REPETITION & EXTENTA Programmeringsteknik på 45 minuter Klasser och objekt Variabler: attribut, lokala variabler, parametrar Datastrukturer Algoritmer Dessa bilder är inte repetitionsbilder
Försättsblad till skriftlig tentamen vid Linköpings Universitet
Försättsblad till skriftlig tentamen vid Linköpings Universitet Datum för tentamen 2015-08-28 Sal Tid 08:00 12:00 Kurskod Provkod Kursnamn/benämning Institution Antal uppgifter som ingår i tentamen Antal
LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p
UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det
I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else
Förkunskaper från tidigare föreläsningar: Objektorienterad Programmering (TDDC77) Föreläsning IX: Klasser och Objekt, Instantiering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2015 I STONE I Variabler,
Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.
-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
Föreläsning 7. Träd och binära sökträd
Föreläsning 7 Träd och binära sökträd Föreläsning 7 Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning Det är extra mycket
Föreläsning 13 Innehåll
Föreläsning 13 Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Heapar Implementering av prioritetskö med heap Klassen PriorityQueue i java.util Programexempel LPT-algoritmen
Datastrukturer. föreläsning 3. Stacks 1
Datastrukturer föreläsning 3 Stacks 1 Abstrakta datatyper Stackar - stacks Köer - queues Dubbeländade köer - deques Vektorer vectors (array lists) All är listor men ger tillgång till olika operationer
F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander
F9 - Polymorfism ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Polymorfism - flerformighet Vi vet vad metoden heter (signaturen) Men vi vet inte vid anropet exakt vilken metod som faktiskt
Föreläsning Datastrukturer (DAT036)
Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-25 Idag Starkt sammanhängande komponenter Duggaresultat Sökträd Starkt sammanhängande komponenter Uppspännande skog Graf, och en möjlig
Föreläsning 4 Innehåll
Föreläsning 4 Innehåll Abstrakta datatypen lista Datastrukturen enkellänkad lista Nästlade klasser statiskt nästlade klasser inre klasser Listklasser i Java Implementera abstrakta datatyperna stack och
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 2 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Konstruktorer Statiska metoder & attribut
Föreläsning 11 Datastrukturer (DAT037)
Föreläsning 11 Datastrukturer (DAT037) Fredrik Lindblad 1 4 december 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037
Föreläsning 7. Träd och binära sökträd
Föreläsning 7 Träd och binära sökträd Föreläsning 7 Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning Läsanvisningar och
Föreläsning 9 Innehåll
Föreläsning 9 Innehåll Träd, speciellt binära träd egenskaper användningsområden implementering Datavetenskap (LTH) Föreläsning 9 HT 2017 1 / 31 Inlämningsuppgiften De föreläsningar som inlämningsuppgiften
TENTAMEN OOP
TENTAMEN OOP 2014-01-19 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli
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.
Tentamen Programmeringsteknik II 2014-0-27 Skrivtid: 0800 100 Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja alltid ny uppgift på nytt papper. Lägg
Classes och Interfaces, Objects och References, Initialization
Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class
Tentamen Datastrukturer, DAT037 (DAT036)
Tentamen Datastrukturer, DAT037 (DAT036) Datum, tid och plats för tentamen: 2017-08-17, 8:30 12:30, M. Ansvarig: Fredrik Lindblad. Nås på tel nr. 031-772 2038. Besöker tentamenssalarna ca 9:30 och ca 11:00.
Datastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd
Föreläsning 8 Innehåll Datastrukturer i kursen Träd, speciellt binära träd egenskaper användningsområden implementering Undervisningsmoment: föreläsning 8, övningsuppgifter 8, lab 4 Avsnitt i läroboken:
TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer
Tentamen i... TDDC30/725G63 Objektorienterad programmering i Java, datastrukturer och algoritmer Datum 2011-12-19 Tid 14-18 Provkod DAT1 Institution Institutionen för Datavetenskap (IDA) Jour Johan Janzén
Föreläsning 12. Länkade listor
Föreläsning 12 Länkade listor Jämför en array med en länkad lista m in n e t Array (med 5 element): + effektiv vid hämtning - ineffektiv vid insättning och borttagning Länkad lista (med 5 element): + effektiv
Lösningsförslag till exempeltenta 2
Lösningsförslag till exempeltenta 2 1 1. Beskriv hur man kan söka igenom en tvådimensionell array. Beskriv pseudokoden och förklara så klart som möjligt hur den fungerar. Lösning: Se laboration 3. - Beskriv
Magnus Nielsen, IDA, Linköpings universitet
Föreläsning 7 Introduktion till sortering TDDC91,TDDE22,725G97: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 24 september 2018 Magnus Nielsen, IDA, Linköpings universitet 7.1 1
Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes
Idag statiska metoder och variabler private/public/protected final, abstrakta klasser, gränssnitt, delegering wrapper classes ett lite större exempel Objectorienterad programmering Sida 1 Vad vi vet om
Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper.
Tentamen Programmeringsteknik II 2018-05-28 Skrivtid: 0800 1300 Tänk på följande Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper. Fyll i försättssidan
Föreläsning 12 Innehåll
Föreläsning 12 Innehåll Sortering O(n 2 )-algoritmer: urvalssortering insättningssortering O(n log n)-algoritmer: Mergesort Quicksort Datavetenskap (LTH) Föreläsning 12 HT 2017 1 / 38 Sortering Varför
Föreläsning 3 Datastrukturer (DAT037)
Föreläsning 3 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-07 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat037 Förra
Inlämningsuppgiften. Föreläsning 9 Innehåll. Träd. Datastrukturer i kursen
Föreläsning 9 Innehåll Inlämningsuppgiften De föreläsningar som inlämningsuppgiften bygger på är nu klara. Det är alltså dags att börja arbeta med inlämningsuppgiften. Träd, speciellt binära träd egenskaper
Lösningsförslag till tentamen Datastrukturer, DAT037,
Lösningsförslag till tentamen Datastrukturer, DAT037, 2018-04-05 1. q.dequeue() tar O(1) (eventuellt amorterat) s.contains(x) tar O(1) pq.add(x) tar O(log i) I värsta fall exekveras innehållet i if-satsen.
Tentamen i Algoritmer & Datastrukturer i Java
Tentamen i Algoritmer & Datastrukturer i Java Hjälpmedel: Skrivhjälpmedel, miniräknare. Ort / Datum: Halmstad / 2008-05-27 Skrivtid: 4 timmar Kontakt person: Nicolina Månsson, tel. 035-167487 Poäng / Betyg:
Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!
Tentamen Programmeringsteknik II 2014-01-09 Skrivtid: 0800-1300 Hjälpmedel: Java-bok (vilken som helst) Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja
UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.
Översikt UML Sekvensdiagram (dynamic structure) Informationsflöde genom programmet Användningsfall (use cases) Aktörers interaktion med systemet Paketdiagram Beroenden mellan paket abstrakta klasser Multipel
Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6
Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6? DAGENS AGENDA Komplexitet Ordobegreppet Komplexitetsklasser Loopar Datastrukturer Några nyttiga regler OBS! Idag jobbar
Föreläsning 2 Datastrukturer (DAT037)
Föreläsning 2 Datastrukturer (DAT037) Fredrik Lindblad 1 1 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037
Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?
Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312
Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar
Laboration 1 - Grunderna för OOP i Java
Uppdaterad: 2006-08-31 Laboration 1 - Grunderna för OOP i Java Inledning Laborationen går ut på att lära sig grunderna för objektorienterad programmering, samt motsvarande språkkonstruktioner i Java. Labben
Föreläsning 10 Innehåll. Diskutera. Inordertraversering av binära sökträd. Binära sökträd Definition
Föreläsning Innehåll Diskutera Binära sökträd algoritmer för sökning, insättning och borttagning implementering effektivitet balanserade binära sökträd, AVL-träd Jämföra objekt interfacet Comparable Interfacet
Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista
Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Abstrakt stack Abstrakt kö Länkade listor Abstrakta datatyper Det är ofta praktiskt att beskriva vilka operationer man vill kunna göra på sina
Sätt att skriva ut binärträd
Tilpro Övning 3 På programmet idag: Genomgång av Hemtalet samt rättning Begreppet Stabil sortering Hur man kodar olika sorteringsvilkor Inkapsling av data Länkade listor Användning av stackar och köer
Föreläsning 10. ADT:er och datastrukturer
Föreläsning 10 ADT:er och datastrukturer ADT:er och datastrukturer Dessa två begrepp är kopplade till varandra men de står för olika saker. En ADT (abstrakt datatyp) är just abstrakt och är inte kopplad
Föreläsning 10 Innehåll
Föreläsning 10 Innehåll Binära sökträd algoritmer för sökning, insättning och borttagning implementering effektivitet balanserade binära sökträd, AVL-träd Jämföra objekt interfacet Comparable Interfacet
Försättsblad till skriftlig tentamen vid Linköpings Universitet
Försättsblad till skriftlig tentamen vid Linköpings Universitet Datum för tentamen 2013-06-05 Sal Tid 08:00 12:00 Kurskod Provkod Kursnamn/benämning Institution Antal uppgifter som ingår i tentamen Antal
Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg
LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg 2013 12 19 1. a) En samling element där insättning och borttagning
Föreläsning 14 Innehåll
Föreläsning 14 Innehåll Abstrakta datatyper, datastrukturer Att jämföra objekt övriga moment i kursen Om tentamen Skriftlig tentamen både programmeringsuppgifter och teoriuppgifter Hitta fel i fingerade
TENTAMEN OOP
TENTAMEN OOP 2013-08-08 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli
Föreläsning 4 Datastrukturer (DAT037)
Föreläsning 4 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-10 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat037 Förra
Föreläsning 11 Innehåll. Diskutera. Binära sökträd Definition. Inordertraversering av binära sökträd
Föreläsning Innehåll Diskutera Binära sökträd algoritmer för sökning, insättning och borttagning implementering effektivitet balanserade binära sökträd, AVL-träd Jämföra objekt interfacet Comparable Interfacet
Tentamen i Algoritmer & Datastrukturer i Java
Tentamen i Algoritmer & Datastrukturer i Java Hjälpmedel: Skrivhjälpmedel, miniräknare. Ort / Datum: Halmstad / 2010-03-16 Skrivtid: 4 timmar Kontaktperson: Nicolina Månsson Poäng / Betyg: Max 44 poäng
Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010
Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010 interface, motivation och bakgrund Antag att vi gör en generell listklass: public class List { protected static class ListNode { public
Tentamen, Algoritmer och datastrukturer
UNDS TEKNISKA ÖGSKOA (6) Institutionen för datavetenskap Tentamen, Algoritmer och datastrukturer 23 8 29, 8. 3. Anvisningar: Denna tentamen består av fem uppgifter. Totalt är skrivningen på 36 poäng och
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Designmönster Adapter, Factory, Iterator,
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
Tentamen Programmeringsteknik II 2017-10-23 Skrivtid: 14:00 19:00 Inledning Skrivningen innehåller ett antal bilagor: Bilagan listsandtrees innehåller fyra klasser: Klassen List med några grundläggande
Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg
LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg 2013 12 19, 8.00 13.00 Anvisningar: Denna tentamen består av 4 uppgifter. Preliminärt