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.

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

Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
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
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Fortsättningskurs i Programmering lektion 6
Föreläsning 3 Repetition Operatorer Styrstrukturer Deklaration och anrop av metoder.
Klassarv och inkapsling
Metoder i java Det finns två typer av metoder i java
Programmeringsteknik för K och Media
Programmeringsteknik för K och Media
Programkodens uppbyggnad
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Next previous Innehåll Inledning Några enkla exempel Pekare till och kort beskrivning av större exempel Speciella referenser (som används i marginalen)
TNSL04 – IT grundkurs. VT2008. Föreläsning nr 3, torsdag 7 feb. kl Del 1. Klasser, objekt, metoder, konstruktorer, samlingar och tillstånd. Hur.
Alice in Action with Java
i olika programmeringsspråk
Föreläsning 4, Kapitel 4 Gruppera objekt Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Föreläsning 11 Arrayer.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Programmering i C# 3. Klasser.
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.
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.
Metodik för problemlösning Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar.
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
Arv.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Riktade listor i C och Java Lösning till gruppövning 1.
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.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
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öreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
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”,
OOP F14:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 14 Repetition Tips inför inlämningsuppgift 2.
Föreläsning 4 Klasser Och Objekt.
1 ITK:P2 F6 Sortering av generiska containerklasser DSV Peter Mozelius.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
Class VattenKraft{ public static void main(String[] args){ int num=150; int i, totflöde, maxflöde; int[] fall = new int[num]; //vattenflödet i vattenfallen.
Programmeringsteknik Föreläsning 8 Skolan för Datavetenskap och kommunikation.
Föreläsning 3, Kapitel 3 Objektinteraktion - Skapa objekt som samarbetar Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David.
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.
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.
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
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.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Arv, abstrakta klasser och gränssnitt
OOP&M - teori1 OOPM del II– Föreläsning vecka Mer om ärvning.. Abstrakta klasser/metoder Gränssnitt/Interface klasser.
OOP&M - teori1 OOPM del II – Föreläsning vecka Abstrakta klasser/metoder igen Gränssnitt/Interface klasser igen tillämpat.
Föreläsning 8: Exempel och problemlösning
Föreläsning 12: Exempel och problemlösning
Presentationens avskrift:

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

Denna föreläsning Använda Java-bibliotek Läsa dokumentation Skriva dokumentation Mer om klasserna String, Random, Map, Set Konstanter

Många användbara klasser som gör att vi slipper göra arbetet själva Javas klassbibliotek Tusentals klasser Många användbara klasser som gör att vi slipper göra arbetet själva En bra Java-programmerare måste kunna arbeta med Java-bibliotek

Att arbeta med bibliotek Man bör: Känna till de viktigaste klasserna som används ofta Känna till hur man kan hitta information om övriga klasser Kom ihåg: Vi behöver bara känna till klassernas interface, inte hur de är implementerade

Supportsystem Textbaserat system för att hantera support till kunder

Supportsystem boolean finished = false; while(!finished) { do something if(exit condition) finished = true; } else do something more

Supportsystem //tidigare do something String input = reader.getInput(); //tidigare do something more String response = responder.generateResponse(); System.out.println(response);

Kontrollera om vi ska avsluta String input = reader.getInput(); if(input.startsWith("bye")) { finished = true; } Vart kommer ‘startsWith’ från? Vad är det? Vad gör den? Hur kan vi få mer information?

Läsa Java-dokumentation Dokumentation av Java-biblioteken finns i HTML-format; Kan läsas i webbläsare API: Application Programmers’ Interface Beskrivning av alla klassers interface (gränssnitt, dvs det som är synligt utåt)

Interface vs implementation Dokumentationen inkluderar Klassens namn En generell beskrivning av klassen Lista på konstruktorer och metoder Returvärden och parametrar för konstruktorer och metoder En beskrivning av syftet med varje konstruktor och metod Klassens interface (gränssnitt)

Interface vs implementation Dokumentationen inkluderar inte Privata medlemsvariabler (de flesta är privata) Privata metoder Kroppen (koden) för metoderna Klassens implementation

Använda klasser från biblioteken Klasser från biblioteken måste importeras genom att använda nyckelordet import (förutom klasser från java.lang). De kan sedan användas på samma sätt som klasser i det egna projektet.

Paket och import Klasser är organiserade i paket. Enskilda klasser kan importeras: import java.util.ArrayList; Hela paket kan importeras: import java.util.*;

Jämföra med String if(input == "bye") { testar identitet ... } if(input.equals("bye")) { testar om de är lika Stringvariabler bör jämföras med .equals if desired, include more detailed discussion of identity vs equality here. (That's the next 5 slides, up to "Identity vs equality (Strings)". Skip these if this is not needed now.

Andra (icke-String) objekt: Identitet vs likhet Andra (icke-String) objekt: :Person :Person “Birger” “Håkan” == is not true here (of course) person1 person2 person1 == person2 ?

Andra (icke-String) objekt: Identitet vs likhet Andra (icke-String) objekt: :Person :Person “Birger” “Birger” == is still not true here (different objects, == tests identity) person1 person2 person1 == person2 ?

Andra (icke-String) objekt: Identitet vs likhet Andra (icke-String) objekt: :Person :Person “Birger” “Birger” == is true now (same object) person1 person2 person1 == person2 ?

== ? Identitet vs likhet == testar identitet  (kan vara) falskt! String input = reader.getInput(); if(input == "bye") { ... } == testar identitet :String :String == ? "bye" "bye" == is still not true here (different objects, == tests identity) input  (kan vara) falskt!

? equals  sant! Identitet vs likhet equals testar om de är lika String input = reader.getInput(); if(input.equals("bye")) { ... } equals testar om de är lika :String :String ? equals "bye" "bye" == is still not true here (different objects, == tests identity) input  sant!

Använda Random Klassen Random kan användas för att generera slumptal import java.util.Random; ... Random randomGenerator = new Random(); int index1 = randomGenerator.nextInt(); int index2 = randomGenerator.nextInt(100);

Generera svar slumpmässigt public Responder() { randomGenerator = new Random(); responses = new ArrayList(); fillResponses(); } public String generateResponse() int index = randomGenerator.nextInt(responses.size()); return (String) responses.get(index); public void fillResponses() ...

Map En Map är en samling som innehåller ett antal par av värden. Paren består av en nyckel och ett värde. Information hämtas genom att skicka in en nyckel och få tillbaka ett värde. Ett exempel: En telefonbok.

Använda klassen Map :HashMap En map med strängar som nycklar och värden :HashMap "Charles Nguyen" "(531) 9392 4587" "Lisa Jones" "(402) 4536 4674" "William H. Smith" "(998) 5488 0123"

Använda klassen Map HashMap phoneBook = new HashMap(); phoneBook.put("Charles Nguyen", "(531) 9392 4587"); phoneBook.put("Lisa Jones", "(402) 4536 4674"); phoneBook.put("William H. Smith", "(998) 5488 0123"); String number = (String)phoneBook.get("Lisa Jones"); System.out.println(number);

Använda klassen Set import java.util.HashSet; import java.util.Iterator; ... HashSet mySet = new HashSet(); mySet.add("one"); mySet.add("two"); mySet.add("three"); Iterator it = mySet.iterator(); while(it.hasNext()) { call it.next() to get the next object do something with that object }

Tokenizing String import java.util.*; … public HashSet getInput() { System.out.print("> "); Scanner inputLine = new Scanner(System.in); StringTokenizer tokenizer = new StringTokenizer(inputLine.nextLine() ); HashSet<String> words = new HashSet<String>(); while(tokenizer.hasMoreTokens()) { words.add(tokenizer.nextToken()); } return words; Gammal version: public HashSet getInput() { System.out.print("> "); String inputLine = readInputLine().trim().toLowerCase(); StringTokenizer tokenizer = new StringTokenizer(inputLine); HashSet words = new HashSet(); while(tokenizer.hasMoreTokens()) { words.add(tokenizer.nextToken()); } return words;

Skriva dokumentation Dina egna klasser bör dokumenteras på samma sätt som klasserna i Java-biblioteket. Andra ska kunna använda dina klasser utan att behöver läsa implementationen. Gör din klass till en biblioteksklass!

Dokumentation Dokumentation för en klass bör innehålla: Klassens namn En generell beskrivning av klassens syfte och funktion Ett versionsnummer Författarens namn Dokumentation för varje konstruktor och metod

Dokumentation Dokumentation för varje konstruktor och metod bör innehålla: Metodens namn Returtyp Parametrarnas namn och typ En beskrivning av metodens syfte och funktion En beskrivning av varje parameter En beskrivning av värdet som returneras

Javadoc /** * The Responder class represents a response Kommentar överst i klassen: /** * The Responder class represents a response * generator object. It is used to generate an * automatic response. * * @author Michael Kölling and David J. Barnes * @version 1.0 (1.Feb.2002) */

Javadoc /** * Read a line of text from standard input (the text Kommentar av metod: /** * Read a line of text from standard input (the text * terminal), and return it as a set of words. * * @param prompt A prompt to print to screen. * @return A set of Strings, where each String is * one of the words typed by the user */ public HashSet getInput(String prompt) { ... }

Public vs private Publika attribut (variabler, konstruktorer, metoder) är åtkomliga för andra klasser Klassvariabler bör inte vara publika Privata attribut är endast åtkomliga inom den egna klassen Endast metoder som ska kunna användas av andra klasser ska vara publika

Inkapsling Data som hör till ett objekt är gömt från andra objekt. Veta vad ett objekt kan göra, inte hur det görs Inkapsling gör att klasser och objekt blir mer självständiga (oberoende) Självständighet är viktigt för att moduler ska blir lättare att underhålla och gör det enklare att bygga större system

Variabler gemensamma för alla objekt av en klass

Konstanter private: Anger synlighet static: Gemensam för alla objekt private static final int gravity = 3; private: Anger synlighet static: Gemensam för alla objekt final: Konstant

Att göra efter föreläsningen Läs i Java API:t om klasserna String, StringTokenizer, Random, HashSet, Set Prova med små testprogram hur likhet mellan objekt fungerar då man använder ”==” eller metoden equals() Undersök hur konstanter fungerar