Föreläsning 4, Kapitel 4 Gruppera objekt Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.

Slides:



Advertisements
Liknande presentationer
Utveckla en applikation Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Advertisements

Föreläsning 7, Kapitel 7 Designa klasser Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Algoritmer och data strukturer -Länkade listor
Fortsättningskurs i Programmering lektion 6
Föreläsning 3 Repetition Operatorer Styrstrukturer Deklaration och anrop av metoder.
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Programmeringsteknik för K och Media
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
i olika programmeringsspråk
Programmering B PHP Lektion 2
1 ITK:P1 Föreläsning 5 Iteration, slumpning och arrayer DSV Peter Mozelius.
Föreläsning 11 Arrayer.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Föreläsning 2, Kapitel 2 Att förstå klassdefinitioner Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
PROCESSPROGRAMMERING
Föreläsning 6, kapitel 6 Objekt som uppför sig som de skall Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes.
Programmering B PHP Lektion 3
Datasamlingar och generiska enheter
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Föreläsning 8, kapitel 8 Förbättra strukturen med arv Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
1 ITK:P1 Föreläsning 7 Algoritmer och datastrukturer DSV Marie Olsson.
Vektorer (klassen Vector) Sortering
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Programmeringsteknik för Media1 & K1
Metoder och slingor Metoder och dess typ Slingor med while och for-satser.
Grundläggande programmering
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Jonny Karlsson GRUNDKURS I PROGRAMMERING MED JAVA Föreläsning 9 ( ) INNEHÅLL: -Tabeller av klassobjekt -Användning av Java API specifikationen.
Föreläsning 5, Kapitel 5 Använda Java-bibliotek för att få avancerad funktionalitet Kursbok: “Objects First with Java - A Practical Introduction using.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
Föreläsning 10 Stränghantering.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Introduktion till klasser, objekt och BlueJ Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
För utveckling av verksamhet, produkter och livskvalitet. Stack och Kö - Implementering - Tilllämpningar.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Föreläsning 10, kapitel 10 Abstrahera mera! Abstrakta klasser och interface Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”,
Föreläsning 4 Klasser Och Objekt.
1 ITK:P2 F6 Sortering av generiska containerklasser DSV Peter Mozelius.
Stack och Kö -Implementering -Tilllämpningar -- Kapitel 16, 11.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Repetitionssatser: do-satsen och for-satsen -Operatorer:
Föreläsning 3, Kapitel 3 Objektinteraktion - Skapa objekt som samarbetar Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David.
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
Köer -- Kapitel 16. Principen med en kö Köer är FIFO datastrukturer  First In – First Out  enqueue() Lägg till data i kön (först)  dequeue() Hämta.
7. Delegerare och notifierare
Välkommen till kursen objektorienterad programmering med Java Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes.
Föreläsning 17 Repetition. Källkodsformat Unicode används åäöμψζ tillåtna i namn på identifierare Inte alla miljöer klarar av det Källkod Bytekod Java.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
Föreläsning 3 Villkorssatsen if Slingor: while och for Felsökning.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
OOP&M - teori1 OOP&M – Föreläsning 5 kap 8-13 Operatorer,typkonvertering, booleska operatorer, if och else.
OOP&M - teori1 OOP – Föreläsning 7 (Sista oop I) Konstruktioner för att hantera upprepningar Kapitel 11.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 3: Booleans, if, switch
Föreläsning 8: Exempel och problemlösning
Presentationens avskrift:

Föreläsning 4, Kapitel 4 Gruppera objekt Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Replace this with your course title and your name/contact details. Fredric Ragnar fredric.ragnar@hgo.se Telefon 0498-299948 Andreas Hedrén andreas.hedren@hgo.se Telefon 0498-299954

Idag Det handlar om samlingar av likadana objekt. Vi tar upp: Collections eller samlingar Loopar Iteratorer Arrayer

Varför skall vi ha massa likadana objekt? Behov av att hantera många likadana finns i många applikationer: Bibliotekskataloger Studentregister Antalet element eller poster som skall lagras varierar: Element läggs till Element tas bort

En personlig anteckningsbok Det går att spara anteckningar Det går att läsa enskilda anteckningar Det finns ingen begränsning på antalet anteckningar Den skall tala om hur många anteckningar som är sparade Utforska projektet: notebook1

Bibliotek av klasser Samlingar med användbara klasser Vi behöver inte skriva allt från början Java kallar sina bibliotek, packages Att kunna gruppera objekt är ett vanligt och återkommande behov: Paketet java.util innehåller klasser för detta

En första ansats till en anteckningsbok import java.util.ArrayList; /** * ... */ public class Notebook { // Storage for an arbitrary number of notes. private ArrayList<String> notes;   * Perform any initialization required for the * notebook. public Notebook() notes = new ArrayList<String>(); } ...

Objektdiagram med två sparade anteckningar

Objektdiagram med en tredje anteckning

Egenskaper hos en samling Den ökar sin kapacitet efter behov Den har en privat räknare (size()-metod) Ordningen bland objekten ändras inte Detaljerna för hur allt går till är dolda Spelar det någon roll? Hindrar det oss att använda samlingen om vi inte vet hur?

Att använda en samling public class Notebook { private ArrayList<String> notes; ...   public void storeNote(String note) notes.add(note); } public int numberOfNotes() return notes.size(); Lägga till en ny anteckning. Returnera antalet anteckningar (delegation).

Numrering med index

Att hämta ett objekt Kontroll att index är OK public void showNote(int noteNumber) { if(noteNumber < 0) { // This is not a valid note number. } else if(noteNumber < numberOfNotes()) { System.out.println(notes.get(noteNumber)); else { Hämta och skriv ut anteckningen

Att ta bort objekt kan påverka numreringen

Summering samlingar Samlingar (Collections) kan lagra ett valfritt antal objekt Klassbibliotek har ofta väl testade samlings-klasser Java kallar sina klassbibliotek för eller paket (eng: packages ) Vi har använt klassen ArrayList från java.util paketet

Summering samlingar, mera Element kan läggas till och tas bort Varje element har ett index Viket index ett element har kan ändras om andra element läggs till eller tas bort De huvudsakliga metoderna för klassen ArrayList är add, get, remove och size.

Iteration Vi vill ofta göra saker ett godtyckligt antal gånger. T ex skriva ut alla anteckningar. Hur många anteckningar finns det? De flesta programmeringsspråk har loop-satser som man har till just detta Java har tre sorters loop-satser Vi tittar mest på while-loopen

Iteration, flödesdiagram while-loop Villkor A Falskt Sant Iteration med while-loop: A utföres (upprepade gånger) så länge som {villkor} är sant ”Så länge som”, ”while” på engelska

Iteration, flödesdiagram, exempel Sant Törstig? Drick en klunk vatten Falskt Iteration: ”Drick en klunk vatten” utförs (och upprepas) så länge som {Törstig?} är sant

Pseudokod för while-loopen Generell while-loop while nyckelord Boolskt test while(loop villkor) { loop kropp } Satser som skall upprepas Pseudo-kod exampel för att skriva ut varje anteckning while(det finns minst en anteckning till att skriva ut) { skriv ut nästa anteckning }

While-loop: kod vs flödesdiagram /** * List all notes in the notebook. */ public void listNotes() { int index = 0; while(index < notes.size()) { System.out.println(notes.get(index)); index++; } Sant index < notes.sice() System.out.println(notes.get(index)); index++; Falskt

Iterera över alla objekt i en samling Returnerar ett Iterator objekt java.util.Iterator Iterator it = myCollection.iterator(); while(it.hasNext()) { call it.next() to get the next object do something with that object } public void listNotes() { Iterator it = notes.iterator(); while(it.hasNext()) { System.out.println(it.next()); }

Auktionsprojektet Projektet auction ger exempel på hur man kan använda samlingar och iteration på flera sätt. Två saker till att ta upp: Värdet null Casting. Används för att spara resultatet av get i en variabel. String message = (String) notes.get(0);

Summering loopar Loop-satser gör det möjligt att repetera ett block med satser En while-sats i Java låter ett boolskt uttryck styra repetitionen Samlingsklasser har speciella Iterator objekt som förenklar iterationen över hela samlingen.

Samlingar med fix storlek Ibland vet man hur många objket en samling skall ha. Programmeringsspråk har oftast en speciell samlingstyp för smalingar med fast storlek: array Arrayer i Java kan lagra primitiva datatyper eller objekt Arrayer har en speciell syntax

Projektet weblog-analyzer Webservrar lagrar information om varje åtkomst Stöttar webmastern i dennes uppgifter Populäraste sidorna Vilka tider är belastningen högst Hur mycket data skickas Referenser som inte fungerar Analysera åtkomster per timme

Att skapa ett array-objekt public class LogAnalyzer { private int[] hourCounts; private LogfileReader reader;   public LogAnalyzer() hourCounts = new int[24]; reader = new LogfileReader(); } ... Deklaration av arrayvariabel Skapa ett arrayobjekt

Arrayen hourCounts

Att använda en array Hakparantes-notation används för att komma åt ett element i arrayen: hourCounts[...] Elementen används som vanliga variabler: På vänster sida i en tilldelning: hourCounts[hour] = ...; I uttryck: adjusted = hourCounts[hour] – 3; hourCounts[hour]++;

For-loopen Liknar while-loopen Används ofta för att iterera ett fixt antal gånger Används ofta för att iterera över en array

Iteration med for-loop A utförs först en enda gång (upprepade gånger): Är {villkor} sant så utförs B och sedan C C Sant Villkor B Falskt

For-loopens pseudokod Generella formen för for-loop for(initiering; villkor; åtgärd efter kroppen) { satser som skall repeteras } Samma sak i formen av en while-loop initiering; while(villkor) { satser som skall repeteras åtgärd efter kroppen }

for-loop: källkod vs flödesdiagram int hour = 0 for(int hour = 0; hour < hourCounts.length; hour++) { System.out.println(hour + ": " + hourCounts[hour]); } hour++; Sant hour < hourCount.length() System.out. println( hour + ": " + hourCounts [hour]); Falskt

Version med while-loop Ett exempel i Java Version med for-loop for(int hour = 0; hour < hourCounts.length; hour++) { System.out.println(hour + ": " + hourCounts[hour]); } Version med while-loop int hour = 0; while(hour < hourCounts.length) { System.out.println(hour + ": " + hourCounts[hour]); hour++; }

Summering arrayer Arrayer är bra när man behöver en samling där antalet objekt inte ändras. Arrayer har en speciell syntax. For-loopar är ett alternativ till while-loopar när man vet hur många repetetioner man skall göra. For-loopar används ofta för att iterera över elementen i arrayer.