Skillnad mellan versioner av "TDDC30 - Programmering i Java, datastrukturer och algoritmer"

Från Studieboken - Skapad av och för studenter
Hoppa till: navigering, sök
Rad 42: Rad 42:
  
 
Ett fullt UML-schema beskriver vilka relationer klasserna har till varandra. Vi kommer senare att gå igenom att klasser kan både ärva och implementera andra klasser. Detta är någonting som ett UML-schema visar. Schemat beskriver även om en klass använder, äger eller "har" en annan klass.
 
Ett fullt UML-schema beskriver vilka relationer klasserna har till varandra. Vi kommer senare att gå igenom att klasser kan både ärva och implementera andra klasser. Detta är någonting som ett UML-schema visar. Schemat beskriver även om en klass använder, äger eller "har" en annan klass.
 +
 +
 +
  
  

Versionen från 31 mars 2016 kl. 21.58

TDDC30 är en grundkurs i programspråket java, datastrukturer och algoritmer. Kursen omfattar 6 högskolepoäng och hålls undervisas både för Industriell ekonomi och för SystemvetenskapLinköpings universitet. Kursen är en påbyggnadskurs på TDDD11 - Programmering, grundkurs och förutsätter att studenten har grundläggande programmeringskunskaper gällande ett "programmeringstänk".

Kursen går igenom ett antal sorteringsalgoritmer, olika typer av datastrukturer, hur man skriver UML-diagram, hur man använder det grafiska Swingpaketet och allmänt hur man ska tänka för att programmera objektorienterat. Examinationsmomenten innefattar 5 stycken laborationer (0-4) och en tentamen. Tentan består av en teoretisk del och en praktisk programmeringsdel.

Java

Java är ett av världens mest använda programmeringsspråk, just för dess operativsystemsneutralitet. I programspråket ADA som kursen TDDD11 undervisas i så använder man en kompilator som tolkar den källkod som programmeraren skrivit och gör om den till maskinkod som datorn kan köra. I Java så finns det ett mellanlager som kallas för Java Virtual Machine (JVM). JVM gör det möjlig att köra samma javakod på alla operativsystem som har stöd för detta, vilket i stort sett gör språket plattformsoberoende, det går lika bra att köra javakod i en Androidtelefon som på en Mac.

Språket är uppbyggt på klasser som på olika sätt kommunicerar och interagerar med varandra.

UML

UML-diagram
Ett UML-schema beskriver relationen mellan klasser

Unified Modeling Language (UML) är ett objektorienterat sätt att modelera system som beskriver hur olika klasser hör ihop. Ett klassdiagram (som du ser till höger) är en beskrivning över en klass, vad klassen heter, vilka attribut/variabler klassen har och dess metoder. Det beskriver också vilken access varje attribut och metor har genom ett "prefix" innan attributet/metoder. Det beskriver dessutom vilket indata varje metod har, samt om metoden returnerar något data.

Access klassdiagram
Prefix Access Explanation
+ public Synlig för klassen, paketet, subklasser och värld.
- private Synlig enbart i klassen
# protected Synlig för klassen, paketet och subklasser.
understruken static Ett static attribut behöver inte instanseras för att användas.
italic abstract Klassen kan inte instanseras och innehåller metoder som måste implementeras.

Ett fullt UML-schema beskriver vilka relationer klasserna har till varandra. Vi kommer senare att gå igenom att klasser kan både ärva och implementera andra klasser. Detta är någonting som ett UML-schema visar. Schemat beskriver även om en klass använder, äger eller "har" en annan klass.





Datastrukturer

Träd

En trädstruktur bygger på en rotnod som är "grunden" i trädet. Det är i roten som all avsökning börjar och det är även i roten som man tar bort objekt ur trädet. Varje nod innehåller i sin tur det datat man vill lagra, det kan till exempel vara siffror, filmtitlar, personnummer osv. Noden har sedan en referens i sig som pekar på dess barn.
Ett träd har följande uppdelning:

Träd
  • Rot: Grundnoden
  • Förälder: Förälder till noden under sig
  • Barn: Barn till noden över sig
  • Syskon: Två noder som har samma förälder
  • Gren: Ett träd kan ha flera grenar. Varje gren har en toppnod och en egen trädstruktur
  • Löv: Nod som inte har några barn


Heap

Alla heaps bygger på en trädstruktur Maxheap
Minheap

Binärt sökträd

Kö (Queue)

Stack

Listor

Enkellänkad lista
Dubbellänkad lista
Cirkulärt dubbellänkad lista

Iterator

Traversering

Traversering innebär att man läser av alla noderna i ett träd i en speciell ordning. Det finns 4 olika sätt att traverseringar: Level-traversering, preorder-traversering, inorder-traversering och postorder-traversering.

Levelorder-Traversering
Preorder-Traversering
Inorder-Traversering
Postorder-Traversering

Sorteringsalgoritmer

En sorteringsalgoritm används för att sortera data. Olika algoritmer är olika effektiva beroende på förhållandena där den ska implementeras.

Bubble sort

Bubble sort-algoritmen är en relativt långsam algoritm med en medeltidskomplexitet på O(n2).

Algoritm
Minst till vänster, störst till höger.
1) Börja i någon av ändarna (detta fallet höger)
2) Jämför de två bredvidliggande objekten. Är vänster mindre än höger -> Byt plats
3) Hoppa ett steg till vänster. Upprepa steg 2. 4) När algortimen träffar vänsterkanden, upprepa steg 1. Upprepa detta tills datat är sorterat

Exempel
513426
513426
513246
512346
152346
125346
123546
123456