Föreläsning 1-2. Språkkonstruktioner i Java. Introduktion till delar av Javas klassbibliotek
|
|
- Viktoria Bergman
- för 8 år sedan
- Visningar:
Transkript
1 Föreläsning 1-2 Innehåll Språkkonstruktioner i Java Interface Exceptions Introduktion till generik Autoboxing - och unboxing Introduktion till delar av Javas klassbibliotek Java Collections Framework interface och klasser för samlingar av element interfacen Iterator och Iterable och foreach-sats i Java - används för att traversera genom en samling element Jämföra objekt metoden equals, interfacet Comparable EDA690 (Föreläsning 1-2) HT / 83
2 Språkkonstruktioner i Java, Javas klassbibliotek - mål Undervisningsmoment: föreläsning 1-2 övning 1 laboration 1 Avsnitt i läroboken: , 2.1, Appendix A6, A11, A12 I gamla upplagan: , , 4.1 Exempel på vad du ska kunna Förklara begreppen: abstraktion, abstrakt datatyp, specikation, implementation, interface, pre- och post-conditions deklarera interface i Java Skriva klasser som implementerar interface Skriva programkod för att fånga exception EDA690 (Föreläsning 1-2) HT / 83
3 Språkkonstruktioner i Java, Javas klassbibliotek - mål, forts Exempel på vad du ska kunna, forts Skriva metoder som genererar exception Förklara begreppen: generik, typparameter, autoboxing och unboxing Använda generiska klasser Implementera generiska klasser Använda en iterator för att traversera en samling element Implementera iteratorer för enkla datastrukturer som listor och vektorer Förklara interfacet Comparable och kunna implementera detta interface Formulera testfall och använda JUnit för att testa klasser. Förklara begreppen: skuggning, överlagring, polymorsm På övning 1 repeteras viktiga begrepp från grundkursen: arv, parameteröverföring, statiska attribut och metoder. EDA690 (Föreläsning 1-2) HT / 83
4 Objektorienterad design Man utgår från de data programmet ska arbeta med, alltså de verkliga saker (objekt) som nns i problemet. Objekten har egenskaper (attribut) operationer som kan utföras på objektet (motsvaras av metoder) Objekten beskrivs i en klass. Klassen fungerar alltså som mall för objekten. Vi gör en abstrakt modell av verkligheten. Endast egenskaper som är väsentliga för problemet nns med. Att abstrahera betyder att bortse från oväsentliga detaljer för att istället framhäva det som är relevant. EDA690 (Föreläsning 1-2) HT / 83
5 Abstrakt datatyp (ADT) Denition En abstrakt modell tillsammans med de operationer man kan utföra på den. Exempel: Abstrakt modell: komplexa tal Operationer på modellen: hämta realdel, hämta imaginärdel, addera... En ADT motsvaras av en specikation av en klass eller av ett interface En klass är en implementering av en ADT EDA690 (Föreläsning 1-2) HT / 83
6 Abstrakta datatyper Fördelar Man får en väldenierad utvidgning av programspråket (ett klassbibliotek). Utvidgningen gör det enklare för användaren att lösa sitt problem. implementeringen kan ändras utan att det påverkar resten av programmet. En ADT kan utnyttjas för era problem (component reuse). En ADT kan testas separat. EDA690 (Föreläsning 1-2) HT / 83
7 Interface Interface i Java Betyder gränssnitt Innehåller ingen implementering Alla metoder är implicit publika Kan användas för att specicera en ADT public interface ComplexNumber { /** returns real part */ double getre(); /** returns imaginary part */ double getim(); /** adds this number and rhs and returns result as a new complex number */ ComplexNumber add(complexnumber rhs); EDA690 (Föreläsning 1-2) HT / 83
8 Interface Implementera ett interface Ett interface kan implementeras av en eller era klasser. public class MyComplexNumber implements ComplexNumber { private double re; private double im; public MyComplexNumber(double re, double im) { this.re = re; this.im = im; public double getre() { return re;... EDA690 (Föreläsning 1-2) HT / 83
9 Interface Implementera ett interface, forts... public double getim() { return im; public ComplexNumber add(complexnumber rhs) { return new MyComplexNumber(re+rhs.getRe(),im+rhs.getIm()); EDA690 (Föreläsning 1-2) HT / 83
10 Interface Implementera era interface En klass kan implementera era interface men bara ärva från en klass. public class MyComplexNumber2 implements ComplexNumber, Cloneable { // implementering av alla metoder i interfacen // ComplexNumber och Cloneable EDA690 (Föreläsning 1-2) HT / 83
11 Interface Interface som typnamn Interface kan användas som typnamn. ComplexNumber c; public void p(complexnumber c) {... Fördel: man binder sig inte till en speciell implementering c = x; är ok när x är en instans av en klass som implementerar interfacet ComplexNumber anrop p(x) är ok när x är en instans av en klass som implementerar interfacet ComplexNumber EDA690 (Föreläsning 1-2) HT / 83
12 Interface Kontrakt Interfacet fungerar som kontrakt. Flera implementeringar (klasser) kan uppfylla kontraktet. Användare har tillgång till alla operationer i ett interface innan de är implementerade. Det är bara när man skapar instanser som man behöver tillgång till en implementerande klass. Man kan enkelt byta en implementerande klass mot en annan. ComplexNumber c1 = new MyComplexNumber(1,2); ComplexNumber c2 = c1; c2 = c2.add(c1); p(c2); EDA690 (Föreläsning 1-2) HT / 83
13 Interface Övning Övning Deniera ett interface med namnet Resizable med en metod resize som är void och har en parameter scalefactor av typen double. Övning Ändra i klassen Square så att den implementerar interfacet Resizable. public class Square { private double side; public Square(double side) { this.side = side;... EDA690 (Föreläsning 1-2) HT / 83
14 Pre- och postconditions Kontrakt på metodnivå Preconditions är villkor som måste vara uppfyllda för att en metod ska kunna utföra sin uppgift. Ibland nns inga preconditions. När de nns, är de ofta villkor som parametrarna ska uppfylla. Postconditions beskriver hur exekvering av metoden förändrar tillståndet hos objektet. Behöver bara anges om metoden förändrar tillståndet (oftast void-metoder). För metoder som inte är void bör man i stället ge en kommentar om vad som returneras. EDA690 (Föreläsning 1-2) HT / 83
15 Pre- och postconditions Exempel public class BankAccount { private int balance;... /** * Deposits the specified amount. * pre: The specified amount is >= 0 * post: The specified amount is added to balance n The amount to deposit */ public void deposit(int n) { balance = balance + n;... EDA690 (Föreläsning 1-2) HT / 83
16 Fel i program (buggar) Olika slags fel Syntaxfel bryter mot språkets grammatik (syntax). Exempel: glömt ett {, glömt deklarera en variabel innan den används... Exekveringsfel (Runtime errors eller Exceptions) upptäcks vid exekvering. Exempel: ArrayIndexOutOfBoundException, NullPointerException,... Logiska fel Programmet kan köras men ger fel resultat. EDA690 (Föreläsning 1-2) HT / 83
17 Exekveringsfel Vad händer vid ett exekveringsfel? Ett objekt (exception) skapas som beskriver typen av fel. Programmet avbryts. Ett felmeddelande skrivs ut där framgår. typ av fel stacktrace (sekvensen av metodanrop) EDA690 (Föreläsning 1-2) HT / 83
18 Exception Sammanfattning Betyder undantag Exception genereras (throws) vid exekveringsfel. Man kan fånga (catch) exception och då själv avgöra hur felsituationen ska hanteras. Man kan skriva kod som genererar exception inuti en metod. (Används om det uppstår en situation som gör det omöjligt för metoden att utföra sin uppgift.) EDA690 (Föreläsning 1-2) HT / 83
19 Exception Olika typer av fel beskrivs av olika subklasser till klassen Exception. Exception RuntimeException IOException... ArrayIndexOutOfBoundException FileNotFoundException NullPointerException... NoSuchElementException... EDA690 (Föreläsning 1-2) HT / 83
20 Exceptions Unchecked och checked Det nns två slag av Exceptions: Unchecked Exceptions Subklass till RuntimeException. Behöver inte fångas. Exempel: ArrayIndexOutOfBoundException, NullPointerException Checked Exceptions Måste fångas någonstans i anropskedjan, annars kompileringsfel. Metoder som genererar sådana måste ange det i sin metodrubrik. Exempel: public Scanner createscanner(string filename) throws FileNotFoundException {... EDA690 (Föreläsning 1-2) HT / 83
21 Exceptions Unchecked och checked, forts Unchecked Exceptions används då felet beror på programmeraren Ex: NullPointerException eller ArrayIndexOutOfBoundsException Checked Exceptions används då felet inte beror på programmeraren Ex: FileNotFoundException om man försöker öppna en l som inte nns EDA690 (Föreläsning 1-2) HT / 83
22 Fånga checked Exceptions Exempel När man anropar en metod som genererar en checked exception måste man ta hand om det. Normalt fångar man det i en try-catch-sats: Scanner scan = null; try { // försöker öppna en fil med namnet filename scan = new Scanner(new File(fileName)); catch (FileNotFoundException e) { System.err.println("Couldn't open file " + filename); System.exit(1);... använd scan... Om exception inträar, avbryts exekveringen av satserna i try-blocket och satserna i catch-blocket exekveras. EDA690 (Föreläsning 1-2) HT / 83
23 Fånga checked Exceptions Forts I satsen catch(exception e) kan t.ex. följande metoder användas för att få mer information: Exempel: e.printstacktrace(); som skriver ut information om raden där felet inträat och den/de metodanrop som lett till denna rad. e.getmessage(); som returnerar en sträng med meddelande om felets art. Scanner scan = null; try { scan = new Scanner(new File(fileName)); catch (FileNotFoundException e) { e.printstacktrace(); System.exit(1);... använd scan... EDA690 (Föreläsning 1-2) HT / 83
24 Fånga exception Mönster try { // kod som kan generera exception catch (ExceptionClass e) { // kod för att hantera exception try { // kod som kan generera exception catch (ExceptionClass1 e1) { // kod för att hantera exception av typen ExceptionClass1 catch (ExceptionClass2 e2) { // kod för att hantera exception av typen ExceptionClass2 finally { // kod som utförs efter try-blocket eller efter catch-blocket EDA690 (Föreläsning 1-2) HT / 83
25 Ignorera checked Exceptions Man kan ignorera en checked Exception och kasta det vidare till den anropande metoden. I så fall måste man ange det i metodrubriken i den metod där exception genereras: public Scanner createscanner(string filename) throws FileNotFoundException { // Här genereras exception om filen inte går att öppna Scanner scan = new Scanner(new File(fileName)); return scan; I den metod som anropar createscanner måste man ta hand om detta exception och kan korrigera felet på valfritt sätt. EDA690 (Föreläsning 1-2) HT / 83
26 Hantera unchecked exceptions Metod som genererar unchecked exception behöver inte ange det i sin rubrik Kan anges i kommentar Den som anropar en metod som kan generera en unchecked exception behöver inte (men kan) fånga den i en try-catch-sats Leder till exekveringsfel om de inte fångas. EDA690 (Föreläsning 1-2) HT / 83
27 Generera exception Exempel: throw new IllegalArgumentException("amount to deposit < 0"); Mönster: throw new ExceptionClass(); throw new ExceptionClass(message); Eekt: Ett nytt exception-objekt skapas. Exekveringen av metoden avbryts. Javasystemet letar efter fångande catch-block. EDA690 (Föreläsning 1-2) HT / 83
28 Generera exception Exempel /** * Deposits the specified amount. * pre: The specified amount is >= 0 * post: The specified amount is added to balance n The amount to deposit IllegalArgumentException if the specified amount is < 0 */ public void deposit(int n) { if (n < 0) { throw new IllegalArgumentException("amount to deposit < 0"); balance = balance + n; EDA690 (Föreläsning 1-2) HT / 83
29 Egna exceptionklasser Om man vill kan man implementera en egen exceptionklass (behövs sällan, det nns färdiga exceptionklasser i Javas bibliotek för de esta situationer). Om den ska vara checked: public class SpellException extends Exception {... Om den ska vara unchecked: public class SomeSortOfException extends RuntimeException {... EDA690 (Föreläsning 1-2) HT / 83
30 Exceptions Övning Övning 1. Ändra följande metod så att exception genereras i de fall det är lämpligt. /** * Withdraws the specified amount. * pre: The specified amount is >= 0 and <= balance * post: Balance is decreased by the specified amount n The amount to withdraw */ public void withdraw(int n) { balance = balance - n; 2. Antag att variabeln acc refererar till ett bankkonto-objekt och att metoden withdraw nns i bankkonto-klassen. Anropa withdraw och skriv ut en lämplig felutskrift på System.out om exception genereras. EDA690 (Föreläsning 1-2) HT / 83
31 Autoboxing unboxing Primitiva typer - wraperklasser Primitiva typer i Java: Motsvarande wrapper-klasser: boolean short int long char byte float double Boolean Short Integer Long Character Byte Float Double EDA690 (Föreläsning 1-2) HT / 83
32 Autoboxing unboxing Exempel: Integer i = new Integer(2); Fr o m Java 5.0 kan vi skriva: i = i + 1; Detta var inte tillåtet i i tidigare versioner av Java. Där måste man skriva: i = new Integer(i.intValue() + 1); EDA690 (Föreläsning 1-2) HT / 83
33 Autoboxing unboxing Autoboxing automatisk konvertering från primitiv typ till objekt av motsvarande wrapper-klass Unboxing automatisk konvertering av objekt av wrapperklass till motsvarande primitiva typ Exempel: Integer k = 3; // autoboxing int j = k; // unboxing Integer i = new Integer(2); i = i + 1; // Unboxing av i för att beräkna i+1. // Därefter autoboxing av resultatet vid // tilldelningen. EDA690 (Föreläsning 1-2) HT / 83
34 Autoboxing unboxing i samband med collection-klasser Praktiskt när man vill använda Javas collection-klasser för att lagra element av primitiv typ. Ex: ArrayList<Integer> mylist = new ArrayList<Integer>(); mylist.add(1); // Konvertering till Integer-objekt här.... int j = mylist.get(0); // Konvertering till int här. EDA690 (Föreläsning 1-2) HT / 83
35 Generik Introduktion till Generik i Java Här introduceras generiska klasser och interface. Mer om generik nns att läsa på OH-bilderna Mer om generik som nns på kursens hemsida: generik och arv wildcards vektorer och generik generiska metoder Vissa av dessa moment dyker upp och förklaras i samband med laborationer. EDA690 (Föreläsning 1-2) HT / 83
36 Generik Bakgrund Klasser bör implementeras så att de blir generella d.v.s. går att använda i många olika sammanhang. En klass som hanterar en lista av element ska inte skrivas så att den bara kan hantera listor med heltal. Lösningen har i tidigare javaversioner varit att ge parametrar i metoderna den mest generella typen Object. Ex: add-operationen i en lista kunde ha signaturen public boolean add(object x); EDA690 (Föreläsning 1-2) HT / 83
37 Generik Bakgrund forts Typosäkerhet utan generik! I den gamla modellen kunde man skriva: mylist.add(new Integer(1)); mylist.add(new Integer(2)); mylist.add(new Person(Kalle)); Om avsikten är att listan ska innehålla tal, har vi gjort fel på rad 3. Kompilatorn kan inte upptäcka detta koden är korrekt, både Integer och Person är subklasser till Object. EDA690 (Föreläsning 1-2) HT / 83
38 Generik i Java Ger oss möjlighet att abstrahera över typer Vi kan använda typparametrar när vi denierar en klass. Ex: public class ArrayList<E> {... Vid användning av en generisk klass anges ett aktuellt typargument. Ex: ArrayList<Integer> mylist = new ArrayList<Integer>(); EDA690 (Föreläsning 1-2) HT / 83
39 Generik i Java Kompilatorn kommer att upptäcka typfel. Ex: ArrayList<Integer> mylist = new ArrayList<Integer>(); mylist.add(new Person("Kalle")); ger nu kompileringsfel, mylist får enligt sin deklaration endast innehålla objekt av typen Integer. EDA690 (Föreläsning 1-2) HT / 83
40 Exempel på en generisk klass java.util.arraylist Utdrag ur den generiska klassen java.util.arraylist: public class ArrayList<E> { public ArrayList() {... public boolean add(e x) {... public void add(int index, E x) {... public E get(int index) { Alla add-metoder har inparameter av typen E. Därför kan enbart objekt av klassen E (eller subklasser till denna) sättas in i listan. EDA690 (Föreläsning 1-2) HT / 83
41 Exempel på en generisk klass java.util.arraylist, forts Observera att inte alla operationer i ArrayList<E> har E som typparameter. T.ex. har contains och remove följande signaturer: public boolean contains(object x); public boolean remove(object x); Användare som inte känner till den exakta typen av ett element x ska kunna anropa metoderna. Dock kommer man att få resultat true om och endast om x nns i listan (och alltså även är av rätt typ). EDA690 (Föreläsning 1-2) HT / 83
42 Användning av en generisk klass java.util.arraylist Exempel: ArrayList<String> list = new ArrayList<String>(); list.add("lisa"); list.add("per");... String s = list.get(0); System.out.println(s);... EDA690 (Föreläsning 1-2) HT / 83
43 Implementering av generisk klass Java 1.4 public class Container { private Object item; public Container(Object x) { item = x; public Object get() { return item; Fr o m Java 5.0 generisk klass public class Container<E> { private E item; public Container(E x) { item = x; public E getitem() { return item; public void set(object x) { item = x; public void setitem(e x) { item = x; EDA690 (Föreläsning 1-2) HT / 83
44 Generisk klass med era typparametrar Implementering public class Pair<K, V> { private K key; private V value; public Pair(K key, V value) { this.key = key; this.value = value; public V getvalue() { return value; public void setvalue(v val) { value = val;... EDA690 (Föreläsning 1-2) HT / 83
45 Generisk klass med era typparametrar Användning Exempel: Pair<String, Integer> pair = new Pair<String, Integer>("June", 30); int nbrdays = pair.getvalue(); EDA690 (Föreläsning 1-2) HT / 83
46 Generiska interface Även interface kan vara generiska. Ex: public interface Set<E> { boolean add(e x); int size(); boolean contains(object x);... EDA690 (Föreläsning 1-2) HT / 83
47 Generik syntax Deklaration av parametriserade (generiska) klasser/interface: public class Set<E> {... public interface Comparable<T>... public class Pair<K,V>... Klassen/interfacet har en parameterlista som omges av tecknen < och >. En parameter namnges med en typvariabel (markeras ovan) som kan vara en godtycklig identierare. Om det är era parametrar används komma som skiljetecken. EDA690 (Föreläsning 1-2) HT / 83
48 Generik syntax Generiska klasser/interface denierar en samling av typer: en typ för varje möjlig instansiering av typparametrarna. Deklarationen av Set<E> på föregående bild denierar t ex följande parametriserade typer: Set<Integer> Set<Character> Set<String> Set<Set<String>> // nästling tillåten... EDA690 (Föreläsning 1-2) HT / 83
49 Generik syntax Vi kan använda parametriserade typer i deklaration av attribut, variabler, metodparametrar,... Ex: ArrayList<Integer> mylist; Pair<Integer, String> apair; public static printset(set<integer> s) {... När vi skapar instanser av generiska klasser anges typargumenten inom tecknen < och > Ex: ArrayList<Integer> mylist = new ArrayList<Integer>(); Pair<Integer, String> apair = new Pair<Integer, String>(); EDA690 (Föreläsning 1-2) HT / 83
50 Generik syntax I generiska klasser/interface kan typparametrarna användas för att deklarera attribut, variabler,... Ex: public class Container<E> { private E item; public Container(E x){ this.item = x; public E getitem()){ returnh item;... Man kallar ofta E för typvariabel när den används så här. EDA690 (Föreläsning 1-2) HT / 83
51 Restriktioner för typparametrar och typvariabler Parameter till generisk klass kan inte vara primitiv typ: SomeClass<int> c =... // Går inte! Typvariabler kan inte användas för att skapa objekt: public class SomeClass<E> { public void p() { E x = new E(); // Fel!... Typparametrar kan inte användas för att överlagra metoder: public class MyClass<T,U> { public void p(t x) {... public void p(u x) {... // Fel!... EDA690 (Föreläsning 1-2) HT / 83
52 Introduktion till delar av Javas klassbibliotek Java Collections Framework interface och klasser för samlingar av element interfacen Iterator och Iterable och foreach-sats i Java - används för att traversera genom en samling element interfacet Comparable Läsanvisningar Interfacet List och Klassen ArrayList behandlas i avsnitt 2.1. Fler interface och klasser behandlas senare i kursen/läroboken. Dokumentation På Javas hemsida (länk nns på kursens hemsida) nns dokumentation av Javas standardklasser. Där nns även tuturials, bl.a. om Javas Collection-klasser. EDA690 (Föreläsning 1-2) HT / 83
53 JCF Java Collections Framework Är en hierarki av interface, abstrakta klasser och konkreta klasser för samlingar av element. Finns i paketet java.util. Basen i hierarkin är ett interface Collection: interface Collection<E> { boolean add(e x); boolean contains(object x); boolean remove(object x); boolean isempty(); int size();... EDA690 (Föreläsning 1-2) HT / 83
54 JCF interface hierarki <<Interface>> Collection <<Interface>> Map <<Interface>> Queue <<Interface>> List <<Interface>> Set <<Interface>> SortedMap <<Interface>> SortedSet EDA690 (Föreläsning 1-2) HT / 83
55 JCF interface hierarki Collection en samling av element, där dubbletter tillåts Queue en samling av element som utgör en kö List en samling element där dubbletter tillåts och där positionering är möjlig (första, sista, element på plats i,...) Set en samling element där dubbletter är förbjudna SortedSet som Set men med krav att elementen går att jämföra Map en samling av element, där varje element har en en nyckel och ett värde (jfr. lexikon) SortedMap som Map men med krav att nycklarna går att jämföra EDA690 (Föreläsning 1-2) HT / 83
56 JCF några klasser Interface Queue List Set SortedSet Map SortedMap Implementering LinkedList, PriorityQueue ArrayList, LinkedList HashSet TreeSet HahsMap TreeMap EDA690 (Föreläsning 1-2) HT / 83
57 Iteratorer Antag att vi lagrar ett antal personer i en lista (eller i någon annan samlingsklass): ArrayList<Person> plist = new ArrayList<Person>(); // här sätts Person-objekt in i samligen Hur ska vi göra för iterera genom samligen och behandla alla personerna (t.ex. skriva ut alla personernas namn)? EDA690 (Föreläsning 1-2) HT / 83
58 Interfacet Iterator<E> En instans av en klass som implementerar interfacet Iterator används för att iterera över alla element i en samling. public interface Iterator<E> { /** Returns true if the iteration has more elements. */ boolean hasnext(); /** Returns the next element in the iteration. */ E next(); /** Removes from the underlying collection the last element returned by the iterator (optional). */ void remove(); Hur får man tag på ett iterator-objekt? EDA690 (Föreläsning 1-2) HT / 83
59 Interfacet Iterable<E> I Java nns följande interface: public interface Iterable<E> { /** Returns an iterator over a set of elements of type E */ Iterator<E> iterator(); Interfacet Collection ärver interfacet Iterable: public interface Collection<E> extends Iterable<E>... Alla klasser som implementerar Collection måste alltså implementera metoden iterator(). EDA690 (Föreläsning 1-2) HT / 83
60 JCF interface hierarki med Iterable<E> och Iterator<E> <<Interface>> Iterable iterator() <<Interface>> Collection <<Interface>> Iterator <<Interface>> Map <<Interface>> Queue <<Interface>> List <<Interface>> Set hasnext() next() remove() <<Interface>> SortedMap <<Interface>> SortedSet EDA690 (Föreläsning 1-2) HT / 83
61 Användning av iterator Exempel ArrayList<Person> plist = new ArrayList<Person>(); // här sätts Person-objekt in i samlingen... Iterator<Person> itr = plist.iterator(); while (itr.hasnext()) { Person p = itr.next(); // behandla p... Lägg märke till hur man skaar sig en iterator genom att anropa metoden iterator. EDA690 (Föreläsning 1-2) HT / 83
62 Metoden iterator() Exempel på collection-klass med metoden iterator public class ArrayCollection<E> implements Collection<E> { private E[] thecollection; private int size;... impl av konstruktor, add,... public Iterator<E> iterator() { return new ArrayIterator(); private class ArrayIterator implements Iterator<E> {... implementering på nästa bild... EDA690 (Föreläsning 1-2) HT / 83
63 Implementering av interfacet Iterator<E> Exempel: Klassen ArrayIterator private class ArrayIterator implements Iterator<E> { private int pos; private ArrayIterator() { pos = 0; public boolean hasnext() { return pos < size;... EDA690 (Föreläsning 1-2) HT / 83
64 Implementering av interfacet Iterator<E> Exempel: Klassen ArrayIterator, forts... public E next() { if (hasnext()) { E item = thecollection[pos]; pos++; return item; else { throw new NoSuchElementException(); public void remove() { throw new UnsupportedOperationException(); EDA690 (Föreläsning 1-2) HT / 83
65 Implementering av interfacet Iterator<E> Inre klass Den klass som implementerar interfacet Iterator kan vara inre i den klass som representerar samlingen. klass En inre klass har tillgång till alla attribut i den omgivande klassen det utnyttjas t.ex. i operationen next. Den kan vara privat, och ha en en privat konstruktor, eftersom det bara är den omgivande klassen som skapar instanser. Metoderna hasnext,... måste däremot vara publika eftersom interfacet Iterator föreskriver detta. EDA690 (Föreläsning 1-2) HT / 83
66 Implementering av interfacet Iterator<E> Kommentar Implementeringen som visats här är förenklad: Iteratorer har enligt sitt kontrakt inte till uppgift att klara av att samlingen modieras mellan anrop av next(). En korrekt iterator-implementering måste upptäcka detta och generera en exception om samlingen modieras. EDA690 (Föreläsning 1-2) HT / 83
67 foreach-sats i Java Exempel ArrayList<Person> plist = new ArrayList<Person>(); // här sätts Person-objekt in samlingen... for (Person p : plist) { // behandla p Ett sätt att enkelt iterera över samlingar. Man slipper att explicit använda en iterator. for (Person p : plist)... kan läsas som för varje p i plist. Kan användas för objekt av klasser som implementerar Iterable och för vektorer. EDA690 (Föreläsning 1-2) HT / 83
68 foreach-sats Vektorer Kan också användas för att iterera över elementen i en vektor. Ex: En metod som skriver ut namn på personer som lagrats i en vektor av typ Person[]: public void print(person[] a) { for (Person p : a) { System.out.println(p.getName()); EDA690 (Föreläsning 1-2) HT / 83
69 Iterator foreach-sats Övning Övning Antag att vi har följande lista: LinkedList<Integer> list = new LinkedList<Integer>(); list.add(25); list.add(42);... Summera talen i list genom att använda iterator() resp. foreach-sats. EDA690 (Föreläsning 1-2) HT / 83
70 foreach-sats Begränsningar Foreach-sats kan inte iteratorn i koden. användas när man explicit behöver tillgång till Exempel: Tag bort alla personer som matchar x ur en ArrayList<Person> plist: Iterator<Person> itr = plist.iterator(); while (itr.hasnext()) { if (itr.next().equals(x)) { itr.remove(); Här behövs iteratorn för att kunna ta bort element. EDA690 (Föreläsning 1-2) HT / 83
71 foreach-sats Begränsningar Foreach-sats kan inte samlingar, motsvarande följande kod: användas för att iterera parallellt över era ArrayList<Person> list1, list2;... Iterator<Person> itr1 = list1.iterator(); Iterator<Person> itr2 = list2.iterator(); while(itr1.hasnext() && itr2.hasnext()) { System.out.println(itr1.next() + " " + itr2.next()); EDA690 (Föreläsning 1-2) HT / 83
72 Nästlad foreach-sats Däremot går det bra med nästlade loopar. Ex: Skriv ut alla kombinationer av strängar str1 str2 där str1 nns i vektorn first och str2 nns i vektorn second. first och second är av typen String[] : for (String f : first ) { for (String s : second) { System.out.println(f + " " + s); EDA690 (Föreläsning 1-2) HT / 83
73 Söka efter objekt i en lista Följande klass beskriver en person: public class Person { private String name; private int idnbr; public Person (String name, int idnbr) { this.name = name; this.idnbr = idnbr; Vad skrivs ut när följande rader exekveras? ArrayList<Person> list = new ArrayList<Person>(); list.add(new Person("Kalle", 1)); list.add(new Person("Kajsa", 2)); System.out.println(list.contains(new Person("Kalle", 1))); EDA690 (Föreläsning 1-2) HT / 83
74 Jämföra likhet Metoden equals Metoden equals används för att jämföra om två objekt är lika: Person p1 =...; Person p2 = ;... if (p1.equals(p2)) {... Metoden equals nns i superklassen Object. Den returnerar true om och endast om de jämförda objekten är identiska. Om man istället vill att innehållet inuti objekten ska jämföras måste man omdeniera (skugga) equals. Exempel: Om man vill att två personer ska anses lika när de har samma id-nummer måste man omdeniera equals i klassen Person. EDA690 (Föreläsning 1-2) HT / 83
75 Omdeniera equals Specikation public boolean equals(object obj); Ur equals specikation: x.equals(x) ska returnera true (reexivitet). Om x.equals(y) returnerar true så ska y.equals(x) returnera true (symmetri). Om x.equals(y) returnerar true och y.equals(z) returnerar true så ska x.equals(z) returnera true (transitivitet). x.equals(null) ska returnera false. EDA690 (Föreläsning 1-2) HT / 83
76 Omdeniera equals med instanceof public boolean equals(object obj) { if (obj instanceof Person) { return idnbr == ((Person) obj).idnbr; else { return false; Observera att parametern till equals måste vara av typ Object, annars blir det inte skuggning. Därför måste också typomvandling till Person ske när man ska använda obj:s idnbr. Uttrycket obj instanceof Person returnerar true om obj:s typ är Person eller någon subklass till Person. Uttrycket obj instanceof Person returnerar false om obj har värdet null. EDA690 (Föreläsning 1-2) HT / 83
77 Omdeniera (skugga) equals med instanceof Fördelar och nackdelar Uttrycket obj instanceof Person returnerar true om obj:s typ är Person eller någon subklass till Person. Lösningen tillåter alltså att subklasser ärver equals-metoden. Man kan använda equals i en arvshieariki och jämföra subklassobjekt och superklassobjekt. Kan leda till att equals inte uppfyller kraven i specikationen (om man t.e.x skuggar equals i subklassen). Detta undviks om man bara tillåter jämförelser mellan objekt av samma typ. Se nästa bild. EDA690 (Föreläsning 1-2) HT / 83
78 Omdeniera equals med getclass public boolean equals(object obj) { if (obj == this) { return true; if (obj == null) { return false; if (this.getclass()!= obj.getclass()) { return false; return idnbr == ((Person) obj).idnbr; Metoden getclass returnerar typen för det objekt obj refererar till under exekveringen. EDA690 (Föreläsning 1-2) HT / 83
79 Interfacet Comparable Specikation I Java nns ett generiskt interface, Comparable<T>: public interface Comparable<T> { /** * Compares this object with the specified object for order. * Returns a negative integer, zero, or a positive integer as * this object is less than, equal to, or greater than the * specified object. */ public int compareto(t x); Objekt av klasser som implementerar detta interface går att jämföra med varandra och kan t.ex. sorteras. EDA690 (Föreläsning 1-2) HT / 83
80 Implementering av interfacet Comparable Exempel public class Person implements Comparable<Person> { private String name; private int idnbr;... public int compareto(person x) { return idnbr - x.idnbr; public boolean equals(object obj) { if (obj instanceof Person) { return compareto((person) obj) == 0; else { return false; EDA690 (Föreläsning 1-2) HT / 83
81 Jämföra likhet Metoderna compareto och equals Interfacet Comparable innehåller bara metoden compareto. Men för klasser som implementerar interfacet Comparable nns det två sätt att jämföra avseende likhet: Person p1 =...; Person p2 = ;... if (p1.compareto(p2) == 0) {... if (p1.equals(p2)) {... Båda sätten att jämföra ska ge konsistenta resultat. Därför bör metoden equals omdenieras i klasser som implementerar Comparable. EDA690 (Föreläsning 1-2) HT / 83
82 Implementering av interfacet Comparable Övning Övning Ändra klassen Person så att den implementerar interfacet Comparable. Jämförelsen av Person-objekt ska göras med avseende på namnet. public class Person { private String name; private int idnbr;... EDA690 (Föreläsning 1-2) HT / 83
83 Typparametrar med begränsningar Ibland behöver man ange begränsning på typparmetern: public class ASortedCollection<E extends Comparable<E>> <E extends T> betyder: E måste vara subklass till T om T är en klass. Det är också tillåtet att E = T. E måste implementera interfacet T om T är ett interface. I exemplet ovan anger vi alltså att E måste vara en typ som implementerar interfacet Comparable<E>. Vi kan därmed använda metoden compareto på objekt av typen E i implementeringen av ASortedCollection. EDA690 (Föreläsning 1-2) HT / 83
Seminarium 3 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.
Seminarium 3 Introduktion till Java Collections Framework Innehåll Generik Bakgrund Java Collections Framework interface och klasser för samlingar av element interfacen Iterator och Iterable och foreach-sats
Seminarium 2 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.
Seminarium 2 Introduktion till Java Collections Framework Innehåll Generik Bakgrund Generik används för att få typsäkra datastrukturer Java Collections Framework Standardbibliotek med datastrukturer i
Föreläsning 3 Innehåll. Generiska klasser. Icke-generisk lista ArrayList, skiss av implementering. Icke-generisk lista Risk för fel
Föreläsning 3 Innehåll Generiska klasser Implementera generiska klasser Exceptions Dokumentationekommentarer javadoc Enhetstestning - junit Man kan deklarera en eller flera typparametrar när man definierar
Java Collections Framework. Föreläsning 2 Innehåll. Java Collections Framework interface hierarki. Java Collections Framework interface hierarki
Föreläsning 2 Innehåll Java Collections Framework (interface och klasser för samlingar av element) Använda generiska klasser autoboxing - och unboxing Iterera genom en samling element Jämföra element skugga
Föreläsning 2 Innehåll
Föreläsning 2 Innehåll Java Collections Framework (interface och klasser för samlingar av element) Använda generiska klasser autoboxing - och unboxing Iterera genom en samling element Jämföra element skugga
Föreläsning 2 Innehåll
Föreläsning 2 Innehåll Java Collections Framework (interface och klasser för samlingar av element) Använda generiska klasser autoboxing - och unboxing Iterera genom en samling element Jämföra element skugga
Föreläsning 2 Innehåll. Generiska klasser. Generik i Java. Varför generiska klasser Bakgrund
Föreläsning 2 Innehåll Generiska klasser Javas samlingsklasser är generiska. Använda generiska klasser autoboxing - och unboxing Iterera genom en samling element Jämföra element metoden equals En generisk
Java Collections Framework. Föreläsning 2 Innehåll. Java Collections Framework interface hierarki. Java Collections Framework interface hierarki
Föreläsning 2 Innehåll Java Collections Framework (interface och klasser för samlingar av element) Använda generiska klasser autoboxing - och unboxing Iterera genom en samling element Jämföra element skugga
Föreläsning 3 Innehåll
Föreläsning 3 Innehåll Jämföra element interfacen Comparable och och Comparator Implementera generiska klasser Exceptions Dokumentationekommentarer javadoc Enhetstestning - junit Datavetenskap (LTH) Föreläsning
Diskutera Sortera objekt
Föreläsning 3 Innehåll Diskutera Sortera objekt Metoden sort är en statisk metod i klassen Arrays. Den sorterar vektorn som skickas med som argument. Jämföra element interfacen Comparable och och Comparator
EDAA01 Programmeringsteknik - fördjupningskurs
EDAA01 Programmeringsteknik - fördjupningskurs Läsperiod lp 1+2 (Ges även lp 3) 7.5 hp anna.axelsson@cs.lth.se http://cs.lth.se/edaa01ht Förkunskapskrav: Godkänd på de obligatoriska momenten i EDAA45 Programmering,
Föreläsning 1-2 Innehåll. EDAA01 Programmeringsteknik - fördjupningskurs. Detta kan du... Förkunskaper
EDAA01 Programmeringsteknik - fördjupningskurs Läsperiod lp 1+2 (Ges även lp 3) 7.5 hp anna.axelsson@cs.lth.se http://cs.lth.se/edaa01ht Förkunskapskrav: Godkänd på de obligatoriska momenten i EDAA45 Programmering,
Föreläsning 1-2 Innehåll. EDAA01 Programmeringsteknik - fördjupningskurs. Detta kan du... Förkunskaper
EDAA01 Programmeringsteknik - fördjupningskurs Läsperiod lp 3 (Ges även lp 1+2) 7.5 hp anna.axelsson@cs.lth.se http://cs.lth.se/edaa01vt Förkunskapskrav: Godkänd på de obligatoriska momenten i EDAA45 Programmering,
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 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
EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass
EDAA20 Föreläsning 11-12 Klassen ArrayList Klassen ArrayList Skriva program som läser data från en textfil och skriver data till en textfil Repetition inför delmålskontroll 2 är en standardklass (i paketet
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
Repetition av OOP- och Javabegrepp
ArrayList Repetition av OOP- och Javabegrepp En lista i vilken man kan lagra objekt Implementerar List-interfacet Skiljer sig från ett vanligt endimensionellt fält: Dynamisk expanderar när den blir
Repetition av OOP- och Javabegrepp
ArrayList Repetition av OOP- och Javabegrepp En lista i vilken man kan lagra objekt Implementerar List-interfacet Skiljer sig från ett vanligt endimensionellt fält: Dynamisk expanderar när den blir
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
DAT043 - föreläsning 8
DAT043 - föreläsning 8 Paket, generics, Java collections framework 2017-02-07 Paket och tillgänglighet Ovanför klasser finns en hierarkisk namespace med paket. Filer som inte deklareras i något paket finns
Föreläsning 3-4 Innehåll
Föreläsning 3-4 Innehåll Listor, stackar, köer Abstrakta datatypen lista listklasser i Java, egen implementering Datastrukturen enkellänkad lista Jämföra element metoden equals, interfacet Comparable Abstrakta
Programmering fortsättningskurs
Programmering fortsättningskurs Philip Larsson 2013 03 09 Innehåll 1 Träd 1 1.1 Binära träd........................................ 1 1.2 Strikt binärt träd..................................... 1 1.3 Binärt
Begreppet subtyp/supertyp i Java. Mera om generik. Generik och arv. Generik och arv. Innehåll
Mera om generik Begreppet subtyp/supertyp i Java Innehåll Wildcards Vektorer och generik Supertyper för en viss klass C är alla klasser från vilka C ärver och alla interface som klassen implementerar.
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
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:
Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..
Ett problem Kontrollstrukturer och er Hur sparas data T ex när man vill spara resultaten av en tävling Exempel med 3 deltagare: public class Competition private int result1; private int result2; private
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
Arrayer. results
Arrayer 85 Arrayer Deklarerar utrymme för många variabler i en enda deklaration Array (fält) Varje värde har ett numeriskt index i Java indexeras en array med N element med indexen till N-1 Exempel: 1
Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer
Exempel for (int antal=; antal < 75; antal++) System.out.println (antal); Arrayer for (int num=5; num
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
Länkade strukturer. (del 2)
Länkade strukturer (del 2) Översikt Abstraktion Dataabstraktion Inkapsling Gränssnitt (Interface) Abstrakta datatyper (ADT) Programmering tillämpningar och datastrukturer 2 Abstraktion Procedurell abstraktion
Interfacen Set och Map, hashtabeller
Föreläsning 0 Innehåll Hashtabeller implementering, effektivitet Interfacen Set och Map ijava Interfacet Comparator Undervisningsmoment: föreläsning 0, övningsuppgifter 0-, lab 5 och 6 Avsnitt i läroboken:
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
F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander
F12 - Collections ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Collections (samlingar) En collection är ett objekt som fungerar som en samling av andra objekt En collection erbjuder
Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2
Övning vecka 6. TDA550 - Objektorienterad programvaruutveckling IT, fk Denna vecka ska vi titta på undantag, testning, generiska enheter, samlingar och designmönstret Iterator. Uppgift 1 Exceptions a)
Objektorienterad Programmering DAT043. Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)
Objektorienterad Programmering DAT043 Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) 1 Metoden clone() Skapa kopior av existerande objekt. Interface Cloneable Deep vs.
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket
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
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor
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
Mål Förklaring av termer
Föreläsning 1 Innehåll Detta kan du Förkunskaper Introduktion Kursens mål och innehåll Undervisning Abstrakta datatyper och delar av Javas klassbibliotek Arv, abstrakta klasser och metoder (repetition)
Mål Förklaring av termer
Föreläsning 1 Innehåll Detta kan du Förkunskaper Introduktion Kursens mål och innehåll Undervisning Arv, abstrakta klasser och metoder (repetition) Abstrakta datatyper - lista, stack, FIFO-kö, mängd, map,
DAT043 Objektorienterad Programmering
DAT043 Objektorienterad Programmering Detta är en exempeltenta som innehåller gamla tentauppgifter av ungefär liknande slag som ni kan förvänta er se på ordinarie tenta i Del 1 respektive Del 2. Dock är
Föreläsning 10 Innehåll
Föreläsning 10 Innehåll Hashtabeller implementering, effektivitet Metoden hashcode i Java Abstrakta datatyperna mängd (eng. Set) och lexikon (eng. Map) Interfacen Set och Map i Java Undervisningsmoment:
Datastrukturer. Arrayer. Arrayer. Arrayer. Array av arrayer. Array av arrayer
Arrayer Samling av data Datastrukturer int[] minatelnummer = new int[30]; // allokering av tillräckligt // stort minnesutrymme Element refereras genom indexering ringa = minatelnummer[25]; // indexering
Föreläsning Innehåll. Hantera många element. Exempel: polygon Godtyckligt antal element. Exempel: polygon forts
Föreläsning 11-12 Innehåll Hantera många element Tidigare har vi använt vektorer för att lagra många element av samma tp. Eempel: Klassen ArraList Inläsning från tetfil, utskrift på tetfil int[] nbrs
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
Föreläsning 2. Länkad lista och iterator
Föreläsning 2 Länkad lista och iterator Föreläsning 2 Länkad-lista Lista implementerad med en enkellänkad lista Iterator Implementering av en Iterator Dubbellänkad lista och cirkulär lista LinkedList JCF
Föreläsning 10 Innehåll. Diskutera. Hashtabeller. Hashfunktion. hashfunktion. hashkod (ett heltal)
Föreläsning 0 Innehåll Diskutera Hashtabeller implementering, effektivitet Metoden hashcode i Java Abstrakta datatyperna mängd (eng. Set) och lexikon (eng. Map) Interfacen Set och Map ijava Undervisningsmoment:
Föreläsning 2. Länkad lista och iterator
Föreläsning 2 Länkad lista och iterator Föreläsning 2 Länkad-lista Lista implementerad med en enkellänkad lista Iterator Implementering av en Iterator Dubbellänkad lista och cirkulär lista LinkedList JCF
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
Sammansatta datatyper Generics: Parametrisk polymorfism
jonas.kvarnstrom@liu.se 2017 Sammansatta datatyper Generics: Parametrisk polymorfism Listor och arrayer 2 Enligt TDDD73: Många språk har både listor och arrayer även Java och Python! Exakta definitioner
Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
Diskutera. Hashfunktion
Föreläsning 1 Innehåll Diskutera Hashtabeller implementering, effektivitet Metoden hashcode i Java Abstrakta datatyperna mängd (eng. Set) och lexikon (eng. Map) Interfacen Set och Map i Java Tidigare har
Föreläsning 1 Innehåll. EDAA01 Programmeringsteknik - fördjupningskurs. Detta ska du lära dig... Kursens mål. Detta kan du...
Föreläsning 1 Innehåll EDAA01 Programmeringsteknik - fördjupningskurs Introduktion Kursens mål och innehåll Hur kursen går till, undervisningsmoment mm. Arv, abstrakta klasser och metoder (repetition)
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
Samlingar Collection classes
Samlingar Collection classes Sven-Olof Nyström Uppsala Universitet 17 mars 2005 Skansholm: Kapitel 9, 19 Se även Suns tutorial om Collections Olika slag av samlingar i Java Arrayer (Till exempel: int[])
Föreläsning 9. Generiska enheter Inre klasser Anonyma klasser Kloning
TDA550 Objektorienterad programmering, fortsättningskurs Föreläsning 9 Generiska enheter Inre klasser Anonyma klasser Kloning Objektorienterad programmering fk 1 Föreläsning 9 Generiska programenheter
Tentamen, EDAA01 Programmeringsteknik fördjupningskurs
LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Tentamen, EDAA01 Programmeringsteknik fördjupningskurs 2014 03 10, 8.00 13.00 Anvisningar: Denna tentamen består av 5 uppgifter. Preliminärt
Inlämningsuppgift och handledning
Inlämningsuppgift och handledning Inlämningsuppgiften redovisas i vecka 49/50. Hög tid att komma igång! Jourtider varje vecka (se http://cs.lth.se/edaa01ht/inlaemningsuppgift) Frågestunder på fredagluncher
Saker du ska kunna Föreläsning 13 & 14
Saker du ska kunna Föreläsning 13 & 14 LISTOR Ta bort element från en vektor Både sorterad och osorterad Söka upp element i en vektor Linjärsökning räcker (jag har även visat binärsökning) Registrering
Föreläsning 3-4 Innehåll
Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå
Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016
Objektorienterad Programkonstruktion Föreläsning 4 8 nov 2016 Nästade klasser I Java går det att deklarera en klass inuti en annan klass. Vi kallar detta för att en yttre klass innehåller en inre klass.
Inlämningsuppgift och handledning. Föreläsning 11 Innehåll. Diskutera. Hashtabeller
Inlämningsuppgift och handledning Föreläsning 11 Innehåll Inlämningsuppgiften redovisas i vecka 49/50. Hög tid att komma igång! Jourtider varje vecka (se http://cs.lth.se/edaa01ht/inlaemningsuppgift) Frågestunder
Lösningsförslag till tentamen i EDAA01 programmeringsteknik fördjupningkurs
LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Lösningsförslag till tentamen i EDAA01 programmeringsteknik fördjupningkurs 2013 12 19 1. a) En samling element där insättning och borttagning
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
Föreläsnings 9 - Exceptions, I/O
Föreläsnings 9 - Exceptions, I/O Josef Svenningsson Tisdag 6/11 Undantag - Exceptions Kommer ni ihåg det här programmet? Det var ett av de första ni såg i första föreläsningen. import javax.swing.*; public
Objektorienterad programmering med Java, Generics
Generics i Java Generic: allmän, genersisk. På menyn på en asiatisk restaurang: Denna rätt serveras med valfritt kött, fisk eller skalddjur Bakgrund Generics i Java ger oss att skriva kod, klasser och
Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:
Föreläsning 7 Innehåll Rekursion Rekursivt tänkande: Hur många år fyller du? Ett år mer än förra året! Rekursion Rekursiv problemlösning Binärsökning Generiska metoder Rekursiv problemlösning: Dela upp
Programmering, minneshjälp för den glömske
Programmering, minneshjälp för den glömske Philip Larsson 2013 02 07 1 Programmering - bra att veta 1.1 Inmatning Inmatning sker med klassen Scanner. Scanner hör till paketet java.util så detta måste importeras.
TDDD78 Viktiga begrepp, del 2
jonas.kvarnstrom@liu.se 2015 TDDD78 Viktiga begrepp, del 2 Identitet och likhet Är likhet och identitet samma sak? Oj, vi har samma kläder på oss idag! Nej, men likadana! Besserwisser 3 Detta är två rutor
Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod
Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer
Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
Stackar, köer, iteratorer och paket
Stackar, köer, iteratorer och paket Programmering för språkteknologer 2 Sara Stymne 2013-09-18 Idag Paket Stackar och köer Array resp länkad struktur Iteratorer Javadoc Kommentarer lab 1 Bra att de flesta
Föreläsning 1. Abstrakta datatyper, listor och effektivitet
Föreläsning 1 Abstrakta datatyper, listor och effektivitet Föreläsning 1 Datastrukturer Abstrakta DataTyper ADT Lista Lista och Java Collections Framework (ArrayList) Lista implementerad med en array Analys
1 Comparator & Comparable
1 Comparator & Comparable 1.1 Implementation av Comparable Att implementera Comparable innebär att man gör objekt av sin klass jämförbara med andra och att det därmed antas existera en naturlig ordning
Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet
Föreläsning 13 Innehåll Algoritm 1: Sortera Exempel på problem där materialet i kursen används Histogramproblemet Schemaläggning Abstrakta datatyper Datastrukturer Att jämföra objekt Om tentamen Skriftlig
Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.
Outline Objektorienterad Programmering (TDDC77) Föreläsning XIV: Undantag, Design Ahmed Rezine IDA, Linköpings Universitet Undantag Design Hösttermin 2017 En frukt har ett namn Man kan lägga en frukt i
Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel
Idag Ett exempel Undantag Substitutierbarhet, subtyper, subklasser När val av metod beror av typerna hos två objekt Lite om överlagring Exempel, version 2 Notera: för samtliga figurer gäller: arean av
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
Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering
Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-6, TDA540 Dag: 207-0-24, Tid: 4.00-.00 Uppgift a) En abstrakt klass kan inte instansieras,
Programmeringsteknik - fördjupningskurs
Programmeringsteknik - fördjupningskurs David Karlsson 11 april 2012 1 Innehåll 1 Objektorientering 4 2 Kommentering av koden 6 3 Typer av fel 6 3.1 Exception..........................................
Föreläsning 11 Innehåll
Föreläsning 11 Innehåll Hashtabeller implementering, effektivitet Metoden hashcode i Java Abstrakta datatyperna mängd (eng. Set) och lexikon (eng. Map) Interfacen Set och Map i Java Datavetenskap (LTH)
Instuderingsuppgifter läsvecka 6 - LÖSNINGAR
Instuderingsuppgifter läsvecka 6 - LÖSNINGAR 1. 2. Om vi använder interfacet List behöver vi inte bry oss om den konkret implementation som används, därför kan implementationen bytas ut genom att endast
LUNDS TEKNISKA HÖGSKOLA EDAA01 Programmeringsteknik fördjupningskurs Institutionen för datavetenskap HT 2015
LUNDS TEKNISKA HÖGSKOLA EDAA01 Programmeringsteknik fördjupningskurs Institutionen för datavetenskap HT 2015 Testning med JUnit 1 Inledning JUnit är ett ramverk för enhetstestning av Javakod. Det är utvecklat
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning XIV: Undantag, Design Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Hashing Undantag Design Outline Hashing Undantag Design En frukt
Objektorienterad Programmering DAT043. Föreläsning 4 23/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)
Objektorienterad Programmering DAT043 Föreläsning 4 23/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) 1 Repetion: Klasser och objekt Vi definierar nya objekttyper i klasser. Ett objekt
Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2
AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga
EDAA30 Programmering i Java - fortsättningskurs
Föreläsning 1 Föreläsning 1 Innehåll EDAA30 Programmering i Java - fortsättningskurs cs.lth.se/edaa30 Kursansvarig: Marcus Klang marcus.klang@cs.lth.se Introduktion Kursens mål och innehåll Undervisning
Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.
Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett
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
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
Testning av program. Verklig modell för programutveckling
Fel i program När man skriver program uppkommer alltid fel. Felen kan indelas i följande kategorier: Under kompileringen upptäcker kompilatorn fel som handlar om att man använt konstruktionerna i programspråket
Tentamen Objekt-orienterad programmering i Java, 5p distanskurs
Tentamen 2006-05-06 Objekt-orienterad programmering i Java, 5p distanskurs Uppsala Universitet Instutitionen för informationsteknologi Avdelningen för datalogi Kursansvarig: Sven-Olof Nyström May 2, 2007
Tentamen, EDAA01 Programmeringsteknik fördjupningskurs
LUNDS TEKNISKA HÖGSKOLA 1(3) Institutionen för datavetenskap Tentamen, EDAA01 Programmeringsteknik fördjupningskurs 2017 08 14, 8.00 13.00 Anvisningar: Denna tentamen består av 5 uppgifter. Preliminärt
Generiska konstruktioner. Kursbokens kapitel 13
Generiska konstruktioner Kursbokens kapitel 13 1 Vad är en generisk konstruktion? Generisk står för; allmän eller generell En generisk konstruktion kan användas för olika typer av data Med hjälp av templates
OOP Objekt-orienterad programmering
OOP F6:1 OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList tostring() metoden this Vi vill ofta hantera många objekt i ett program: OOP F6:2 public
TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2
TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2 Pelle Evensen, Daniel Wetterbro 5 november 2009 Sammanfattning Denna vecka ska vi titta på abstrakta klasser kontra interface,
DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU
DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU lösningsförslag till tentamen 2017-06-09 Tid: 8:30-12:30. Plats: SB. Ansvarig lärare: Fredrik Lindblad,
Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 2015-06-11 Skrivtid: 08:00 13:00 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)
Föreläsning 10 STRING OCH STRINGBUILDER; VARIABLERS SYNLIGHET Att deklarera och att använda variabler När vi deklarerar en variabel, t ex int x; inför vi en ny variabel med ett namn och en typ. När namnet