Presentation laddar. Vänta.

Presentation laddar. Vänta.

Använda Java-bibliotek för att få avancerad funktionalitet Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes &

Liknande presentationer


En presentation över ämnet: "Använda Java-bibliotek för att få avancerad funktionalitet Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes &"— Presentationens avskrift:

1 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 Fredric Ragnar Telefon Andreas Hedrén Telefon Föreläsning 5, Kapitel 5

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

3 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

4 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

5 Supportsystem Textbaserat system för att hantera support till kunder

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

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

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

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

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

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

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

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

14 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

15 Identitet vs likhet Andra (icke-String) objekt: person1 == person2 ? “Birger” :Person person1person2 “Håkan” :Person

16 Identitet vs likhet Andra (icke-String) objekt: person1 == person2 ? “Birger” :Person person1person2 “Birger” :Person

17 Identitet vs likhet Andra (icke-String) objekt: person1 == person2 ? “Birger” :Person person1person2 “Birger” :Person

18 Identitet vs likhet "bye" :String input "bye" :String String input = reader.getInput(); if(input == "bye") {... } == testar identitet == ?  (kan vara) falskt!

19 Identitet vs likhet "bye" :String input "bye" :String String input = reader.getInput(); if(input.equals("bye")) {... } equals testar om de är lika equals ?  sant!

20 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);

21 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()...

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

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

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

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

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

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

28 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

29 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

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

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

32 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

33 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

34 Variabler gemensamma för alla objekt av en klass

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

36 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


Ladda ner ppt "Använda Java-bibliotek för att få avancerad funktionalitet Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes &"

Liknande presentationer


Google-annonser