Forelæsning 5.1 Brug af klassen Collections og interfacet Comparable samt parametriserede typer Projektuge: Ants and Spiders / Lommeregner dIntProg,

Slides:



Advertisements
Lignende præsentationer
Velkommen til Softwarekonstruktion
Advertisements

T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Collectionklasser Klassifikation og anvendelse. Collections Motivation –hvorfor bruge collections? Realisering af en-til-mange relationer –Importer, erklær,
Array vs. ArrayList. Arrays Et array er en struktureret metode til at gemme flere værdier af den samme datatype. Data’en i et array ligger op ad hinanden.
Collectionklasser Ekstra materiale. Collections Motivation – hvorfor bruge collections? Realisering af en-til-mange relationer – Importer, erklær, initialiser.
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.
Anvendelser I Leg og spil.
Forelæsning 3.1 Collections Javas for-each løkke
Interfaces – brug. Overblik Tidligere: –Interfaces Comparable gør det muligt at bruge Collections metoderne –min, max, sort, … –Algoritmemønstre Find.
Forelæsning 3.2 Billedredigering (bl.a. brug af for-løkker)
Lektion 7 Læsestof: Kopier fra Caranno
10. Datastrukturer. 2 Nordjyllands Erhvervakademi Collections library Datastrukturer i.NET kaldes normalt Collections Findes i namespace System.Collections.
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
Forelæsning 2.2 Tilstand og opførsel (repetition)
FEN IntroJava AAU1 Endnu mere om Klasser og Objekter Mange til mange relationer Student-Course v3.
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
Anvendelser I Leg og spil.
Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner findEn findAlle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed.
Repetition af dIntProg v/ Morten D. Bech. Tour de force Variabler Løkker Comparable ImErKo-reglen Eksamenssæt dIntProg, E13.
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
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
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.
Spec. af LottotalsGenerator interface LottoTal{ // S: mgd. af udtrukne tal // min, max: int - angiver intervallet (incl.) void set(int min, int max); //PRE.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
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;
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
DAIMIIntroducerende Objektorienteret Programmering1 Collections og opremsning Nye typer collections, objektorienteret sweep.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Klassehierarkier Specialisering vha. subklasser. dIntProg, E05Klassehierarkier.2 Oversigt Eksempler på specialisering –Aktør, Koreograf, Skuespiller,
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
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.
Introduktion til programmering Repetition. dIntProg, F08Repetition.2 dIntProg Sidste forelæsning (12/10) –kort tilbagemelding på evaluering –repetition.
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2003IOOPContainerklasser.2 Mange objekter Containerklasser –antag at man skal repræsentere.
Forelæsning Uge 3 – Mandag Niveauer af programbeskrivelser – Statiske / dynamiske beskrivelser ArrayList –Collection med variabelt antal elementer –Der.
Forelæsning Uge 5 – Mandag
Forelæsning Uge 5 – Mandag
Forelæsning Uge 6 – Mandag
Forelæsning Uge 5 – Mandag
Forelæsning Uge 12 – Torsdag
Forelæsning Uge 3 – Mandag
Forelæsning Uge 6 – Mandag
Forelæsning Uge 3 – Mandag
Klasser og objekter (Afsnit i manualen).
Quiz – Uge 3 – torsdag – første time
Forelæsning Uge 3 – Mandag
Forelæsning Uge 5 – Mandag
Forelæsning Uge 12 – Mandag
Quiz – Uge 3 – mandag – første time
Forelæsning Uge 3 – Mandag
Parametrisering En kort introduktion.
Quiz – Uge 3 – torsdag – første time
Forelæsning Uge 3 – Mandag
Forelæsning Uge 5 – Mandag
Forelæsning Uge 4 – Torsdag
Quiz – Uge 3 – mandag – første time
Præsentationens transcript:

Forelæsning 5.1 Brug af klassen Collections og interfacet Comparable samt parametriserede typer Projektuge: Ants and Spiders / Lommeregner dIntProg, E14

Forprogrammerede metoder i Java Library Klassen Collections indeholder en række metoder Metoderne kan bruges på objekter af mange forskellige typer Typen skal være en subtype af (interfacet) Collection Det er f.eks. tilfældet for ArrayList T min(Collection<T> c) //returnerer mindste element T max(Collection<T> c) //returnerer største element void sort(List<T> l) //sorterer listen void reverse(List<T> l) //vender listen om void shuffle(List<T> l) //”ryster” listen void copy(List<T> dest, List<T> src) //kopierering boolean disjoint(Collection<T> c1, Collection<T> c2) int frequency(Collection<T> c, Object o) ... dIntProg, E14

Brug af Collections på ArrayList<String>

Korteste Track og Yngste person /** Vi antager at ArrayListen tracks ikke er tom */ public Track shortestTrack(){ Track res = tracks.get(0); //gemmer hidtil mindste for ( Track t : tracks ){ if ( t.getTime() < res.getTime() ) { res = t; } return res; /** Vi antager at ArrayListen persons ikke er tom */ public Person youngestPerson(){ Person res = persons.get(0); //gemmer hidtil mindste for ( Person p : persons ){ if ( p.getAge() < res.getAge() ) { res = p; } return res; dIntProg, E14

Kode kan generaliseres via parametre /** tegner et kvadrat med sidelængde 100 */ public void square100() { for ( int i= 0; i<4; i++ ) { move(100); turn(90); } /** tegner et kvadrat med sidelængde lenth */ public void square( int length ) { for ( int i= 0; i<4; i++ ) { move(length); turn(90); } /** tegner en n-kant med sidelængde length */ public void polygon( int n, int length ) { for ( int i= 0; i<n; i++ ) { move(length); turn(360/n); } dIntProg, E14

Kan vi generalisere disse metoder? /** Vi antager at ArrayListen tracks ikke er tom */ public Track shortestTrack(){ Track res = tracks.get(0); //gemmer hidtil mindste for ( Track t : tracks ){ if ( t.getTime() < res.getTime() ) { res = t; } return res; /** Vi antager at ArrayListen persons ikke er tom */ public Person youngestPerson(){ Person res = persons.get(0); //gemmer hidtil mindste for ( Person p : persons ){ if ( p.getAge() < res.getAge() ) { res = p; } return res; dIntProg, E14

Generel metode til at finde mindste element (min) Vi har behov for at kunne parametrisere med en elementtype T specificere en sammenligningsmetode < for T /** Vi antager at ArrayListen list ikke er tom */ public T min( ArrayList<T> list ){ T res = list.get(0); //gemmer hidtil mindste for ( T elem : list ){ if ( elem < res ) { res = elem; } return res; dIntProg, E14

Sammenligning sker via interfacet Comparable public interface Comparable<T> { /** * @returns whether this object is * smaller (negative integer) * equal (0) * or greater (positive integer) * than object o */ public int compareTo(T o); } Tænk på et interface som en rolle Track-objekter kan spille rollen Comparable Track skal implementere Interfacet public class Track { ... } implements Comparable<Track> { public int compareTo(Track o) { ... } Track skal have en compareTo metode (med den specificerede signatur) dIntProg, E14

<<interface>> Klassediagram Collections T min(Collection<T> c) void sort(List<T> l) ... <<interface>> Comparable int compareTo(T o) uses implements Track Person Die … dIntProg, E14

Implementation af find mindste (min) /** Vi antager at ArrayListen list ikke er tom */ public T min( ArrayList<T> list ){ T res = list.get(0); //gemmer hidtil mindste for ( T elem : list ){ if ( elem < res ) { res = elem; } return res; elem.compareTo(res) < 0 ) { dIntProg, E14

Computere kan lave imponerende animeringer Lord of the rings (Ride of the Rohirrim) VIDEO (4:40) dIntProg, E14

Afleveringsopg 6: Ants and Spiders Opgaven løses i Greenfoot Programmér hjernen på en myre så den kan lede efter mad og flygte fra edderkopper Demo Konkurrence Præmier De tre bedste løsninger(fra forskellige studerende) Den bedste lommeregner Score: I kan benchmarke ligeså meget I vil Navn, score, java-fil afleveres (koden checkes!) Regler: Der må kun ændres i MyAnt Løsning skal overholde grundlæggende model

Ants and Spiders - Model Myrer dør, hvis de rammer en kant en anden myre en edderkop Myrerne skal nå at spise så meget mad som muligt

Ants and Spiders :Vector :MyAnt MovingActor Ant MyAnt act() super.act() adjustVelocity() getForces() normalize() move() checkForCollisions()

Ants and Spiders - Tips Brug ikke en statisk bredde/højde (f.eks. 500) Brug i stedet distanceToBottomWall() Eksperimenter med vægt mellem de forskellige vektorer Find på gode ideer (når en primitiv løsning virker) Hvordan vælger man det sukker man går efter? Vælg i forhold til spider Vælg i forhold til andre myrer Er det nødvendigt at tænke på alle vægge hele tiden? …

MAT studerende på 1. år: Lommeregner Implementere en lommeregner i BlueJ Først laves en lommeregner for heltal Addítion Subtraktion Multiplikation Invertering Potensopløsning Dernæst laves en lommeregner, der regner modulo n n er en parameter til lommeregner objektet samme operationer som ovenfor MAT-ØK studerende aftaler med deres instruktor, hvilken opgave de løser

DatLab Fælles studiecafé i Ada-020/026 hver fredag kl. 13-15 IT-parken Bl.a. for studerende på Introduktion til Programmering (Q1) Kom og få lavet det sidste inden weekenden! X IT-parken Workshops Introduktioner til værktøjer Følg med på cs.au.dk/datlab