TDDC Terminologi Uppdaterad Fö #1

Relevanta dokument
Teoretisk del. Facit Tentamen TDDC (6)

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

Teoretisk del. Facit Tentamen TDDC (6)

Facit Tentamen TDDC (7)

Facit Tentamen TDDC kl (6)

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

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

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 8 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

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

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

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

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

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

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

DAT043 - Föreläsning 7

Classes och Interfaces, Objects och References, Initialization

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

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

Föreläsning 9 Innehåll

Länkade strukturer, parametriserade typer och undantag

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

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

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

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

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

Sökning och sortering

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

Trädstrukturer och grafer

Objektorienterad Programmering (TDDC77)

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

Objektorienterad Programmering (TDDC77)

Seminarium 13 Innehåll

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

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

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

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.

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

Imperativ programmering. Föreläsning 4

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

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

Tentamen Datastrukturer (DAT037)

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Kort om klasser och objekt En introduktion till GUI-programmering i Java

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

Föreläsning 14 Innehåll

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

Tentamen, Algoritmer och datastrukturer

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Arv innebär att man skapar en ny klass (subklass) utifrån en redan existerande klass (superklass, basklass).

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Objektorienterad Programmering (TDDC77)

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

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

Föreläsning 13. Träd

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

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.'

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Föreläsning 15: Repetition DVGA02

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

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

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

Föreläsning 2 Datastrukturer (DAT037)

Objektorientering: Lagring och livstid

Föreläsning 2 Datastrukturer (DAT037)

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Vad har vi pratat om i kursen?

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

Ett generellt träd är. Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn

Algoritmer och datastrukturer 2012, fo rela sning 8

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

Objektorienterad programmering. Grundläggande begrepp

Föreläsning 4 Datastrukturer (DAT037)

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 Datastrukturer (DAT036)

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

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

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

Föreläsning 5-6 Innehåll

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

Sammansatta datatyper Generics: Parametrisk polymorfism

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

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

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

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper.

Föreläsning 13 Innehåll

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

Träd Hierarkiska strukturer

Transkript:

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 väl vald bok. Fö #1 Metod Motsvarigheten till en funktion eller procedur i Ada. Primitiv typ Enkla datatyper som int, float, boolean, de grundläggande byggstenarna till resten av programspråket. Undantag Engelska exception, ett sätt för programmet att hoppa över det vanliga programflödet för att signalera ett fel så att det kan hanteras. Paket En behållare som i Ada innehöll funktioner, procedurer och datastrukturer. I Java innehåller den klasser. Attribut En egenskap ett objekt har eller information om objektet, t.ex. en färg, vikt, storlek. Ofta en variabel innuti objektet. Klass En ritning eller mall över hur objekten som instansieras från denna klass kommer att se ut, vilka metoder och attribut de kommer ha. Objekt/instans En instans av en klass, något som har byggts enligt specifikationerna i klassen. Ligger någonstans i minnet och har sina egna attribut, skilda från andra objekt av samma klass som också ligger i minnet. Flera objekt av samma klass existerar generellt sett separat från varandra. Referens En variabel som pekar ut vart i datorns arbetsminne ett objekt ligger. Kan jämföras med en pekare i Ada. Flera referenser kan peka ut samma objekt i minnet, till skillnad från variabler av primitiva typer, där varje variabel innehåller sin egen kopia av värdet. För en referens innehåller istället variabeln sin egen kopia av adressen till objektet i datorns arbetsminne. Alla variabler av en klass-typ, ex. String t = ;, är referenser per automatik. Fö #2 null Ett särskilt referens-värde som betyder att inget objekt fanns här. Om programmet försöker använda objektet som en null-referens borde peka ut, kastas ett NullPointerException-undantag. Konstruktor En särskild metod som används för att skapa ett objekt av en klass. En konstruktor måste användas för att skapa objekt. Har man inte angivit en egen konstruktor för en klass får man automatiskt en default-konstruktor, som inte tar några parametrar och inte gör något särskilt. 1

static Ett nyckelord som 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(...);. Kan jämföras med globala variabler i Ada, förutom att de är globala bara för den klassen. 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. Klassmetod/klassvariabel En metod eller variabel som är markerad som static. Instansmetod/instansvariabel En metod eller variabel som inte är markerad som static, och därmed bara kan nås inuti enskilda objekt. Synlighet Metoder och variabler i en klass kan döljas undan för andra klasser. Dessa kan då inte använda dessa metoder eller variabler. Används ofta för att dölja undan hjälpmetoder och variabler från användaren av en klass, för att erbjuda ett tydligare, mindre förvirrande gränssnitt. Att dölja vissa saker låter också klassen göra antaganden om det egna tillståndet baserat bara på vad programmeraren av klassen har gjort, utan att behöva oroa sig för att användaren av klassen kan ha ändrat på t.ex. någon viktig variabel så den blev felaktig. Se public, protected, package private och private. Även hela klasser kan ha olika nivåer av synlighet. public En synlighet som innebär att alla andra klasser har tillgång till den här variabeln, metoden eller klassen. Den bredaste formen av synlighet. protected En synlighet som innebär att bara andra klasser i samma paket eller som ärver av denna klass har tillgång till den här variabeln, metoden eller klassen. package private En synlighet som innebär att bara andra klasser i samma paket har tillgång till den här variabeln, metoden eller klassen. För att något ska bli package private utelämnar man synlighetsangivelsen. Den blir då package private per automatik. private En synlighet som innebär att inga andra klasser tillgång till den här variabeln, metoden eller klassen. Den mest restriktiva formen av synlighet. Arv Att låta en klass B basera sig på en annan klass A. B får då alla attribut och metoder som A redan har, samt kan utöka med sina egna metoder och attribut. B kan även skriva över A's metoder med sina egna för att förändra funktionaliteten. extends Nyckelordet som anger vilken klass en annan klass ärver av. Basklass/superklass Klassen som ärvs ifrån i ett arv. Subklass Klassen som ärvde av en annan klass i ett arv. 2

Överskugga/override Att skriva över en metod i basklassen med en ny metod i subklassen. abstract Metoder och klasser kan vara abstrakta, vilket innebär att de inte är fullständiga. Klasser som är abstrakta saknar något och kan inte instansieras, och måste ärvas ifrån av en ickeabstrakt klass som då i sin tur kan instansieras. För att den ärvande klassen ska bli icke-abstrakt måste den då definiera, göra fullständigt, det som var abstrakt i basklassen. En abstrakt metod är beskriven med parametrar, returtyp, namn och Javadoc, men har ingen kropp med kod. En klass som innehåller minst en abstrakt metod måste vara en abstrakt klass, men en klass kan vara abstrakt även utan några abstrakta metoder. final Ett nyckelord som kan användas för att markera att något inte får förändras. Om det används för en klass får den inte ärvas från. Om det används för en metod får den metoden inte överlagras under ett arv. Om det används för en variabel, får denna variabel inte ändra värde. 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. Dock påverkas inte objektet i sig av detta, som fortfarande kan byta tillstånd i sina attribut. Object Den mest grundläggande klassen i Java, som alla andra klasser per automatik ärver av, om inget annat arv är angivet. UML Unified Modelling Language, ett standardiserat bildspråk för att modellera olika delar av mjukvaruutveckling. Polymorfism Förmågan att erbjuda ett gemensamt gränssnitt till något som sedan kan ha skiljande underliggande beteenden och implementationer. T.ex. lab 1 eller List-interfacet och de klasser som implementerar det i Javas standardbibliotek. Fö #3 ADT/Abstrakt DataTyp En datatyp där man bortser från implementationsspecifika egenskaper och istället uppmärksammar en eller några få egenskaper. T.ex. interfacet List, som beskriver ett gränssnitt med de operationer man kan göra på en lista. Det finns sedan många implementationer, som tillhandahåller de beskrivna operationerna, men med olika underliggande implementation. List är då en ADT. Iterator Ett interface som definierar ett gemensamt gränssnitt man kan använda för att besöka ett antal värden i en samling, utan att behöva veta specifika detaljer om samlingen. Se List och dess olika implementationer, alla tillhandahåller Iterator-gränssnittet för att besöka värdena oavsett implementation. Stack En datastruktur där data lagras och hämtas ut i LIFO-ordning, Last In First Out. Queue En datastruktur där data lagras och hämtas ut i FIFO-ordning, First In First Out. 3

Fö #4 Interface Ett alternativ till klass, som beskriver en ritning. Skillnaden är att en klass inte ärver av ett interface, en klass implementerar ett interface. En klass kan implementera flera interface samtidigt, till skillnad från arv som bara kan vara från en annan klass i Java. Vidare kan interface bara ha abstrakta metoder och konstanta variabler. Underlättar polymorfi och att skapa ADT'er. Generiska klasser En klass som vid skapande kan specialiseras för en viss annan klass. T.ex. ArrayList<String>, som då specialiseras för att innehålla just String. Cast Att omvandla en referens till ett objekt till en referens till en annan typ av objekt. T.ex. Animal test = new Dog(); Dog test2 = (Dog)test; Sådana konverteringar är alltid underförstådda och möjliga från en specifik klass till en annan klass som har ärvts ifrån eller ett interface som har implementerats. Att gå åt andra hållet, som i exemplet ovan, kräver att man är säker på att Animal-referensen verkligen innehåller en Dog, och inte t.ex. en Cat. Hade det varit en Cat så hade cast'en misslyckats och ett undantag kastats. Fö #5 Ordo Ett sätt att sätta en övre gräns på konsumtionen hos en algoritm i relation till storleken på indatan, för stora mängder indata. Användbart för att mäta t.ex. tids- och rymdskomplexitet. In-place sortering En sorteringsalgoritm är in-place om den bara konsumerar en mycket begränsad mängd minne utöver den givna indata-sekvensen som ska sorteras. Stabil sortering En stabil sorteringsalgoritm är en som inte byter inbördes ordning på element av samma storlek, innan och efter sortering. T.ex. 5 2 6 3 2 1 => 1 2 2 3 5 6, 2'orna byter inte inbördes ordning. Insertionsort En sorteringsalgoritm som stoppar in varje enskilt element på rätt plats inom den sorterade mängden. Värsta/Medel-fallet O(n 2 ). Graphics Den klass som bl.a. grafiska komponenter i Java använder för att rita upp sig själva till skärmen. Kan då ses som en pensel som man ibland får låna en stund av fönstret. Omega Likt Ordo, men beskriver en undre gräns. Fö #6 Theta Likt Ordo och Omega, men beskriver att en algoritms övre och undre gräns båda beskrivs av den givna funktionen. Tidskomplexitet Beskriver hur snabbt tidskonsumtionen för en given algoritm växer relativt till hur 4

storleken på indatan växer. Mäts oftast med Ordo. Rymdskomplexitet Likt tidskomplexitet, men beskriver hur snabbt minneskonsumtionen växer. Selectionsort En sorteringsalgoritm som väljer ut det rätta elementet som ska stoppas in härnäst i den sorterade mängden. Värsta/Medel-fallet O(n 2 ). Shellsort En generalisering av insertionsort som sorterar delmängder av den hela mängden med insertionsort. Delmängderna tas fram genom att välja ut var N'e element vid jämförelse, där N till en början är ett stort värde som sedan minskas. Värsta-fallet O(n 2 ), Medel-fallet O(n log n). Quicksort En sorteringsalgoritm som väljer ett element inom sekvensen och delar upp övriga värden i större och mindre kring detta pivot-element. Därefter upprepas proceduren på de två delmängder av tal som nu ligger kring pivot-elementet. Detta upprepas till delmängderna når en tillräckligt liten storlek för att effektivt sorteras med t.ex. insertionsort. När alla delmängder hanterats blir resultatet då en sorterad sekvens. Värsta-fallet O(n 2 ), Medel-fallet O(n log n). Layouthanterare Den del av Javas grafiska gränssnitt som hanterar hur olika grafiska komponenter ska ligga i relation till varandra, samt vilken storlek de ska ha. Fö #7 Bubblesort En sorteringsalgoritm som går igenom den osorterade mängden och byter plats på näraliggande par som ligger i fel inbördes ordning. Leder till att rätt värden bubblar fram till rätt plats i den sorterade mängden. Värsta/Medel-fallet O(n 2 ). Shakersort En sorteringsalgoritm likt bubblesort, men som byter riktning i vilken jämförelserna färdas färdas i slutet av varje pass, vilket leder till att värdena bubblas fram både fram och tillbaka. Värsta/Medel-fallet O(n 2 ). Mergesort En sorteringsalgoritm som delar upp den osorterade sekvensen i mindre och mindre delmängder, och sedan sätter ihop dessa, mergar dem, till sorterade, något större sekvenser. Detta ihopsättande fortsätter tills alla delsekvenser återigen är en enda stor, nu sorterad, sekvens. Värsta/Medel-fallet O(n log n). Binär fil En fil i vilken data lagras i binär form, dvs. på liknande sätt det skulle sparas i minnet. Motsatsen till i textformat. finally Ett nyckelord som kan användas för att lägga till ett kodstycke i slutet av en try-catch. Detta kodstycke körs alltid när try-catchen lämnas, oavsett om den lämnas pga. att körningen lyckades som den skulle, eller pga. att ett undantag kastades och hanterades. Serialisering Att spara ett objekt från minnet i binär form till en ström av något slag. Klassen måste 5

då implementera interfacet Serializable. Lyssnare En typ av interface som definierar en metod som anropas när vissa händelser sker. Objekt som implementerar detta interface kan sedan läggas till andra objekt för att lyssna efter denna typ av händelse i det objektet. T.ex. ett ActionListener-objekt som läggs till i ett knapp-objekt, som då kan reagera när någon klickar på den knappen. Fö #8 Träd En datastruktur som är en riktad, acyklisk graf. Kan ses som ett träd vänt upp och ner. Varje nod i trädet kan ha två eller flera ytterligare noder under sig. Binärt träd Ett träd där varje nod kan ha som mest 2 barn. Binärt sökträd Ett binärt träd där noderna är arrangerade enligt en given algoritm för att underlätta sökning. För varje nod gäller vanligtvis att noder av ett värde mindre än den nuvarande noden ligger till vänster om den nuvarande, och noder av ett värde större än den nuvarande noden ligger till höger. Föräldranod En nod som har minst ett barn. Syskon-noder Noder med samma förälder. Rotnod En nod utan förälder, den översta noden i ett träd. Lövnod En nod utan barn. Gren/delträd En samling noder som alla baseras i samma nod. Bas-noden är inte nödvändigtvis en rotnod, utan kan vara en nod i ett större träd. Grad, för nod Antalet barn noden har. Djup, för nod Antalet steg från rotnoden till denna nod. Höjd, för nod Antalet steg från denna nod till den lövnod som är längst bort, nedåt. Preorder-traversering En besöksordning genom ett träd som besöker den nuvarande noden först, och sedan fortsätter rekursivt till vänster barn och höger barn. Postorder-traversering En besöksordning genom ett träd som rekursivt besöker vänster och höger barn först, och sedan den nuvarande noden. Inorder-traversering En besöksordning genom ett träd som rekursivt besöker först vänster barn, sedan den nuvarande noden och till sist höger barn. Levelorder-traversering En besöksordning genom ett träd som besöker alla noder i trädet, en nivå i taget, uppifrån och ned. 6

Fullt binärt träd Ett binärt träd där samtliga noder har noll eller två barn. Perfekt träd Ett fullt träd där alla löv ligger på samma nivå. Fullständigt binärt träd Ett perfekt träd, där det dock får saknas lövnoder längst ned om och endast om de som saknas bara är de högraste. Väl balanserat träd Ett binärt träd där höjden av det högra och vänstra barnet skiljer sig med som mest 1 nod, och det högra och vänstra delträdet i sin tur är väl balanserade träd. 7