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

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

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

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

Länkade strukturer. (del 2)

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

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

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

Datastrukturer. föreläsning 3. Stacks 1

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

Föreläsning 4 Innehåll

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

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

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

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

Föreläsning Datastrukturer (DAT036)

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

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

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

Föreläsning 2 Datastrukturer (DAT037)

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 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 3 Innehåll. Generiska klasser. Icke-generisk lista ArrayList, skiss av implementering. Icke-generisk lista Risk för fel

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.

Föreläsning 14 Innehåll

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

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 3. Stack

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

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

Tentamen i Algoritmer & Datastrukturer i Java

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

Föreläsning 3. Stack

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

Tentamen i Algoritmer & Datastrukturer i Java

Lösningsförslag till exempeltenta 2

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

DAT043 - föreläsning 8

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

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

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

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

Föreläsning 3 Datastrukturer (DAT037)

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

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

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

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

Länkade strukturer, parametriserade typer och undantag

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

Objektorienterad Programmering (TDDC77)

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

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

Föreläsning 3 Datastrukturer (DAT037)

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

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

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

Malmö högskola 2007/2008 Teknik och samhälle

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

Arrayer. results

Repetition av OOP- och Javabegrepp

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

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

Tentamen i Algoritmer & Datastrukturer i Java

Generisk klass med typparameter Inre klass - ListIterator

DAT043 Objektorienterad Programmering

Laboration A Objektsamlingar

Tentamen Programmering fortsättningskurs DIT950

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

Teoretisk del. Facit Tentamen TDDC (6)

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

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

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

Objekt, Klasser, Paket m. m.

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

TDDC30 Programmering i Java, datastrukturer och algoritmer

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

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

Parallellism, återblick

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

Objektorienterad Programmering (TDDC77)

Föreläsning 12. Länkade listor

BST implementering, huvudstruktur

Tommy Färnqvist, IDA, Linköpings universitet

Malmö högskola 2008/2009 CTS

Föreläsning 2 Innehåll

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

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

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

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

Föreläsning 2 Innehåll. Generiska klasser. Generik i Java. Varför generiska klasser Bakgrund

Tommy Färnqvist, IDA, Linköpings universitet

TENTAMEN: Objektorienterad programutveckling, fk. Läs detta! Börja varje hel uppgift på ett nytt blad. Skriv inte i tesen.

Föreläsning 2 Innehåll

Kap J 7-1 Mer om arv. (superklass) (subklass)

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Transkript:

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

Laboration 2 - Datastrukturer Länkade datastrukturer Stack Kö (En. Queue) Lista Generiska klasser Iteratorer Paket Exceptions 2

Laboration 2 Datastrukturer (forts.) En stormarknad med kunder som kommer och handlar varor och går till kassan. Använder: Stack: Lägga i och ta upp varor ur varukorgen Kö: Kunder som står vid kassan Lista: Hålla reda på kunderna 3

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 Använd testprogrammet Stormarknad för att testa att dina klasser fungerar. 4

Laboration 2 Datastrukturer (forts.) 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 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 5

Laboration 2 Datastrukturer (forts.) 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 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 Utöver detta kommer det att behövas en nod-klass, konstruktorer för klasserna, och antagligen en del privata hjälpfunktioner.. 6

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

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

Iterator Iteratorer används för att effektivt löpa igenom element i en datasamling 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); 9

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() { } 10

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 11

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

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