TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

Relevanta dokument
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

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

Stackar, köer, iteratorer och paket

Datastrukturer. föreläsning 3. Stacks 1

Länkade strukturer. (del 2)

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

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

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

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

Föreläsning 2. Länkad lista och iterator

Föreläsning 2. Länkad lista och iterator

Objektorienterad programmering E. Back to Basics. En annan version av printtable. Ett enkelt exempel. Föreläsning 10

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

Föreläsning 4 Innehåll

Föreläsning Datastrukturer (DAT036)

Föreläsning 2 Datastrukturer (DAT037)

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

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 3. Stack

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

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

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2

Lösningsförslag till exempeltenta 2

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

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

Föreläsning 3. Stack

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

Seminarium 3 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.

Föreläsning 14 Innehåll

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

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

Seminarium 2 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.

Övning vecka 5. Denna vecka ska vi titta pa samlingar, generics och designmönstren Decorator, Singleton och Iterator.

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

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

Föreläsning 12. Länkade listor

Tentamen i Algoritmer & Datastrukturer i Java

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

DAT043 - föreläsning 8

Tentamen i Algoritmer & Datastrukturer i Java

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

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

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

Länkade strukturer, parametriserade typer och undantag

Föreläsning 3 Datastrukturer (DAT037)

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

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

Föreläsning 3 Datastrukturer (DAT037)

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

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

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 5

Objektorienterad Programmering DAT043. Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Arrayer. results

Tentamen Programmering fortsättningskurs DIT950

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

TDDC30 Programmering i Java, datastrukturer och algoritmer

Laboration A Objektsamlingar

BST implementering, huvudstruktur

Generisk klass med typparameter Inre klass - ListIterator

DAT043 Objektorienterad Programmering

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

Föreläsning 1. Abstrakta datatyper, listor och effektivitet

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

Föreläsning 8: Exempel och problemlösning

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

Repetition av OOP- och Javabegrepp

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

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

Repetition av OOP- och Javabegrepp

Objekt, Klasser, Paket m. m.

Listor. Koffman & Wolfgang kapitel 2, avsnitt , och 2.9

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Kurskod D0010E Datum Skrivtid 5tim

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

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

Abstrakta datastrukturer

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

Parallellism, återblick

Teoretisk del. Facit Tentamen TDDC (6)

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

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Java Collections Framework. Föreläsning 2 Innehåll. Java Collections Framework interface hierarki. Java Collections Framework interface hierarki

Objektsamlingar i Java

Föreläsning 2 Datastrukturer (DAT037)

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

Malmö högskola 2008/2009 CTS

Tommy Färnqvist, IDA, Linköpings universitet

ADS : STACK ADT: STACK. Stack och Kö -Implementering - Tilllämpningar. Oftast förekommande metoder i Stack. TopOfStack

TDDC30 Programmering i Java, datastrukturer och algoritmer

Objektorienterad Programmering (TDDC77)

Laboration 10 - Eclipse

Föreläsning 2 Innehåll

Tommy Färnqvist, IDA, Linköpings universitet

Tentamen i Algoritmer & Datastrukturer i Java

Transkript:

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2 Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket 1

Länkade listor Likadant som i Ada-kursen. 2

Stack MyStack MyStack<E> metoder public void push(e element) // Adds data public E pop() // Returns & removes topmost data public boolean isempty() // Checks if empty public int size() // Returns data count 3

Del 1: Dagens Uppgift I klassen Calculator, implementera en statisk metod product som beräknar produkten av en samling med heltal, som ges som inparameter. Uttrycket finns som en stack, med datatypen Integer. Resultatet ska returneras som en int. Rekursion får ej användas. 4

Kö MyQueue MyQueue<E> metoder public void enqueue(e element) // Adds data public E dequeue() // Returns & removes front data public boolean isempty() // Returns data count public int size() // Returns data count 5

MyList MyList Ska vara en enkellänkad lista" MyList<E> implements Iterable<E> metoder public void add(e element) // Adds element public E getrandomelement() // Gets element, doesn t remove public boolean isempty() // Checks if empty public int size() // Returns data count public Iterator<E> iterator() // Gets iterator for list 6

Iterator Iteratorer används för att effektivt löpa igenom alla element i en datasamling, ett i taget Exempel List<Integer> li = new LinkedList<Integer>(); for (int i=0; i<li.size()-1; ++i) { Integer x = li.get(i); System.out.println(x); for (Iterator<Integer> it = li.iterator(); it.hasnext(); ) { Integer x = it.next(); System.out.println(x); 7

MyListIterator MyListIterator MyListIterator<E> implements Iterator<E> metoder public boolean hasnext() // Checks if there is more data public E next() // Gets next data public void remove() // Removes last gotten data 8

Iterator (forts.) Att skriva sin egna iterator-klass för en egendefinierad container-klass MyContainer Exempel import java.util.iterator; public class MyContainerIterator<E> implements Iterator<E> { // Några instansvariabler (bl.a. en referens till det objekt // som vi ska iterera över, MyContainer) public MyContainerIterator(MyContainer<E> container) { public boolean hasnext() { public E next() { public void remove() { 9

Laboration 2 Datastrukturer (forts.) Uppgiften Implementera ett paket som heter myutil som innehåller följande generiska klasser: MyStack MyQueue MyList (ska kunna returnera en instans av MyListIterator) MyListIterator implements java.util.iterator Skriv testprogram för varje klass och testa noga 10

Generiska klasser Behövs för att inte skriva samma klass för alla möjliga datatyper. public class MyStack<E> { private Node<E> top = null; public void push(e element){... 11

Del 2: Dagens Uppgift Gör om stack-klassen (och nod-klassen) till generiska klasser. Gör nödvändiga ändringar i Calculator så att den fungerar igen. 12

Exceptions För att på ett snyggt sätt fånga upp fel som kan förekomma i programmet och på så sätt undvika att det avbryts eller göra tydliga felmeddelanden. Exempel på fel som kan generera ett undantag Divison med 0 Läsning av en fil som inte finns Indexering utanför fältgränser Att fånga upp ett fel int[] a = new int[100]; for (int i = 0; i <= 100; ++i) { a[i] = 0; -> Programmet avbryts och följande skrivs ut: Java.lang.ArrayIndexOutOfBoundsException: 100. 13

Exceptions (forts.) Använd try-catch för att fånga upp undantag int[] a = new int[100]; try { for (int i = 0; i <= 100; ++i) { a[i] = 0; catch(exception e) { System.out.println( Exception + e.getmessage()); Programmet fortsätter att exekveras efter undantaget! 14

Paket Paket används för att organisera klasser som hör ihop package mypackage; Högst upp i varje fil som tillhör paketet mypackage Skapa paket i Eclipse File->New->Package Ange namn på det nya paketet (mypackage) Flytta källkodsfilerna (.java) till det nya paketet m.h.a. Refactoring Markera den fil du vill flytta Refactor->Move Välj det nya paketet import mypackage.*; Importerar alla klasser ur det nya paketet Paket motsvaras av kataloger i filsystemet 15