DAIMIIntroducerende Objektorienteret Programmering1 Collections og opremsning Nye typer collections, objektorienteret sweep.

Slides:



Advertisements
Lignende præsentationer
Velkommen til Softwarekonstruktion
Advertisements

07 – Kort om OO Introduktion.
Perspektiverende Datalogi Internetalgoritmer MapReduce Gerth Stølting Brodal.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Datastrukturer og Collections Oversigt og forskel imellem Jave og.net Collections library Collection interfaces ArrayList IList interface Hashtable Hashtable.
Grundlæggende programmering Efterår 2001
Arv Idéen i arv et at kunne genbruge gennem generalisering
GP5, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 5 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
NOEA/IT - FEN1 Typeparametisering/Genericity Generics i.NET 2 og C#
Begreber og Redskaber 5. Collections i Java 1.2 Framework: samling af datastrukturer og algoritmer som generelt værktøj. En ramme til at arbejde med søgning.
Forelæsning 3.1 Collections Javas for-each løkke
Lektion 7 Læsestof: Kopier fra Caranno
Fundamentale datastrukturer
GP 8, 24/ Grundlæggende programmering Efterår 2001 Forelæsning 8 onsdag 24/ kl. 9:15 – 12:00.
FEN KbP/seminar2: design11 Kontraktbaseret programmering Seminar 2 Klassedesign – grundprincipper Eksempler: Stack Dictionary.
Forelæsning 5.1 Brug af klassen Collections og interfacet Comparable samt parametriserede typer Projektuge: Ants and Spiders / Lommeregner dIntProg,
FEN IntroJava AAU1 Loops og algoritmer Sweep – for-loop Søgning – while-loop.
10. Datastrukturer. 2 Nordjyllands Erhvervakademi Collections library Datastrukturer i.NET kaldes normalt Collections Findes i namespace System.Collections.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
Begreber og Redskaber 11. Plan for idag Lidt afrunding: Collections Framework i Java Noget om oversættere og sprog Evaluering Sidste gang øvelser før.
Forelæsning 7.1 – repetition
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
Sweep-algoritmer. DAIMIIntroducerende objektorienteret programmeringsweep.2 Datatypen Sequence Oprette Sequence() Sequence(s, l, h) Kopiere Sequence clone()
DAIMIIntroducerende objektorienteret programmering4C.1 Systemdesign Design med flere klasser, En kaffeautomat.
Introduktion til programmering Repetition - ArrayList.
Checklister Comparable og Comparator. dIntProg, E08Checklister.2 Checkliste for Comparable Antagelse –vi har en liste med elementer af typen T: List lst;
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
DAIMIIntroducerende objektorienteret programmering12A.1 Moduler Packages i Java.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
DAIMIIntroducerende objektorienteret programmeringkd.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
 Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.1 Destilleret UML Oversættelse fra UML til Java.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Java på 20 minutter (eller lidt mere)
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation.
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Collectionklasser Klassifikation og anvendelse. dIntProg, F08Collectionklasser.2 Samlinger af objekter Objektreferencer –for at holde fast i et objekt.
Interfaces – hvorfor, hvad og hvordan?.  Michael E. Caspersen 2003IOOPInterfaces.2 Oversigt Interfaces, hvorfor –Separering af specifikation (interface)
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation,
DAIMIIntroducerende objektorienteret programmeringfletning.1 Fletning.
Introduktion til programmering Repetition. dIntProg, F08Repetition.2 dIntProg Sidste forelæsning (12/10) –kort tilbagemelding på evaluering –repetition.
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5B.1 Sweep-algoritmer Programmering med invarianter og uden kaniner.
Tutankhamons Grav Et modellerings eksempel
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
DAIMI, AUIntroducerende objektorienteret programmering11A.1 Destilleret UML Oversættelse fra UML til Java.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
 Michael E. Caspersen, 2000 Introducerende objektorienteret programmering4A.1 Sweep-algoritmer Programmering med invarianter og uden kaniner.
Collections og opremsning Nye typer collections, objektorienteret sweep.
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2003IOOPContainerklasser.2 Mange objekter Containerklasser –antag at man skal repræsentere.
Forelæsning Uge 5 – Mandag
Forelæsning Uge 6 – Mandag
Forelæsning Uge 5 – Mandag
Forelæsning Uge 12 – Torsdag
Forelæsning Uge 6 – Mandag
Parametrisering En kort introduktion.
Præsentationens transcript:

DAIMIIntroducerende Objektorienteret Programmering1 Collections og opremsning Nye typer collections, objektorienteret sweep

DAIMIIntroducerende Objektorienteret Programmering2 Collections  Vi har set nogle få eksempler på klasser, hvis formål er at opbevare andre objekter Sequence(ordnet, kan opbevare heltal) Vector(ordnet, vilkårlige objekter)  ”A collection is an object that represents a group of objects”

DAIMIIntroducerende Objektorienteret Programmering3 Collections i Java 1.1  Der findes et række forskellige typer collections med forskellige karakteristika og effektivitet: Lister, køer, deques, mængde, hashtabeller, ordbog…  Java 1.1 bibliotekerne har en del af disse:  java.util.Stack;  java.util.Dictionary;  java.util.Hashtable;

DAIMIIntroducerende Objektorienteret Programmering4 Collections i Java (1.)2  Java 2 har udvidet antallet og funktionaliteten af collections voldsomt, bl.a. kan de håndtere ordnede mængder (dersom de indeholdte objekter implementerer Comparable interfacet – og det gør alle klasser i Java, specielt String). Men... Det er også blevet temmelig kompliceret...  Derfor – vil vi holde os til Java 1.1’s klasser, som stadig findes i Java (1.)2

DAIMIIntroducerende Objektorienteret Programmering5 Stack  En stack er en collection, hvor du kun kan udtage og indsætte elementer fra ’toppen’, ligesom i et spil kort. Som ved Vector er den referencebaseret. Vector Stack Stack s = new Stack(); s.push( "Første" ); s.push( "Anden" ); s.push( "Tredje" ); s.push( "Fjerde" ); s.push( "Femte" ); for ( int i = 0; i < 5; i++ ) { System.out.println( s.pop() ); }

DAIMIIntroducerende Objektorienteret Programmering6 Dictionary  Dictionary er en “ordbogs-collection”. Den gemmer et objekt (element) som indekseres ved hjælp af en nøgle (key). Disse danner dermed et (key,element) par.  Eks: ( “Lecture”, “Forelæsning” ) ( “Student”, “Elev” ) ( “Class”, “Klasse” )  Denne type collection hedder ofte også en afbildning (eng: map), hvilket er Java 1.2 navnet: Map

DAIMIIntroducerende Objektorienteret Programmering7 Dictionary  Både key og element kan være objekter af vilkårlige klassebaserede typer som implementere metoden equals.  Metoder:  Object put(Object key, Object element) Indsætter (key,element) parret i collectionen, returnerer null, hvis et element med identisk key ikke allerede findes i collectionen, ellers returneres det gamle element.  Object get(Object key) Return element med givne key, ellers null

DAIMIIntroducerende Objektorienteret Programmering8 Dictionary  Dictionary er en abstrakt klasse, dvs. der skal en nedarvet klasse til at udfylde den konkrete implementation.  Java tilbyder en sådan, nemlig Hashtable. Vi vil ikke gå i detaljer med denne type collection, blot vise brugen.

DAIMIIntroducerende Objektorienteret Programmering9 Dictionary eksempel  Dictionary d = new Hashtable();  // Indsæt en række ord i vores ordbog  d.put( "Java", "A hype programming language" );  d.put( "C++", "Industrial standard OO language - a better C" );  d.put( "Pascal", "Successful research language - good for teaching" );  d.put( "Basic", "Once king of personal microcomputers" );  d.put( "Fortran", "Oldest programming language, still widely used" );  d.put( "LISP", "Interpreted list processing language" );  // Opslag i ordbogen:  System.out.println( "Opslag på Basic: "+d.get("Basic") );  System.out.println( "Opslag på C++: "+d.get("C++") );  System.out.println( "Opslag på C: "+d.get("C") );

DAIMIIntroducerende Objektorienteret Programmering10 Sweep  Hvad nu hvis vi vil gennemløbe alle par i ordbogen?  int i = 0;  while ( i != d.size() ) {  d.get( hvad????);  i++;  }  En ordbog er ikke indekseret, derfor er der heller ikke nogen naturlig sweep-variabel...

DAIMIIntroducerende Objektorienteret Programmering11 Sweep analyse  Analyse af et sweep:... i 0b.size() i = 0;... while ( i != b.size() ) { // behandl b.elementAt(i) i++; } // i == b.size() b: i er et index (altså en reference) til elementet under inspektion

DAIMIIntroducerende Objektorienteret Programmering12 Objektorienteret sweep startenslutningen i = starten ;... while ( ! i nået til slutningen ) { // behandl element udpeget af i lad i referere til næste element ; } // i == b.size() b: reference til inspicerede element i:

DAIMIIntroducerende Objektorienteret Programmering13 Opremsning  Java’s “util” bibliotek indeholder en sådan objektorienteret opremser, en enumerator. (import java.util.Enumeration)  En enumeration har to vigtige metoder:  boolean hasMoreElements() true, hvis der er flere elementer tilbage at opremse  Object nextElement() returnerer næste element fra collectionen

DAIMIIntroducerende Objektorienteret Programmering14 Enumeration objekt  Javas collections indeholder en metode, der returnerer et enumerator objekt, denne hedder oftest:  Enumeration elements(); returnerer en enumerator for denne collection og sætter denne til at pege på første element.  (Dictionary har to: keys() og values())

DAIMIIntroducerende Objektorienteret Programmering15 Eksempel: Vector & Dictionary Enumeration e; Vector v = setupVector(); System.out.println ( "--- Vector opremsning ---" ); e = v.elements(); while ( e.hasMoreElements() ) { String s = (String) e.nextElement(); System.out.println( ">>>> " + s ); } Dictionary d = setupDictionary(); System.out.println ( "--- Dictionary opremsning ---" ); e = d.keys(); while ( e.hasMoreElements() ) { String s = (String) e.nextElement(); System.out.println( ">>>> " + s+ ","+d.get(s) ); } Pointen er her: Koden er stort set identisk trods det er vidt forskellige collections, der opremses i.

DAIMIIntroducerende Objektorienteret Programmering16 Opremsning af “tokens”  En ofte forekommende problemstilling er at dele en streng op i logiske “bidder”, f.eks. at dele et afsnit op i sætninger, sætninger op i ord, osv.  Java har en klasse, der kan dele og opremse en streng: StringTokenizer. StringTokenizer t = new StringTokenizer("Dette er en tekst."," "); while ( t.hasMoreTokens() ) { System.out.print( t.nextToken() + "-" ); } Resultat: Dette-er-en-tekst.

DAIMIIntroducerende Objektorienteret Programmering17 Java 1.2 – alligevel  Java 1.1’s collections baserede sig på konkrete klasser. Java 1.2’s er baseret på interfaces og en række konkrete implementationer.  Det interessante (som brugere) er interfaces: Vectormodsvares af List interfacet Dictionarymodsvares af Map interfacet Enumerationmodsvares af Iterator interfacet Setrepræsenterer en mængde (ej i Java 1.1)

DAIMIIntroducerende Objektorienteret Programmering18 Algoritmer  List collections (f.eks. Vector) tilbyder nogle gode algoritmer:  sort(List) - Sorts a list using a merge sort algorithm, which provides average-case performance comparable to a high-quality quicksort, guaranteed O(n*log n) performance (unlike quicksort), and stability (unlike quicksort). (A stable sort is one that does not reorder equal elements.) sort(List)  binarySearch(List, Object) - Searches for an element in an ordered list using the binary search algorithm. binarySearch(List, Object)  reverse(List) - Reverses the order of the elements in the a list. reverse(List)  shuffle(List) - Randomly permutes the elements in a list. shuffle(List)  o.a.  Sortering kræver naturligvis en naturlig ordning af elementerne. Dette kan elementerne angive ved at implementere interfacet Comparable:  public int compareTo(Object o)Object

DAIMIIntroducerende Objektorienteret Programmering19 Mere information Konsulter JavaDoc for java.util biblioteket Og kig på eksemplerne i Java projekterne til denne lektion.