Innehåll. 5. More sophisticated behavior. Javas klassbibliotek. Arbete med klassbibliotek. A Technical Support System. Huvudloopens struktur

Relevanta dokument
Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

Objekt och klasser - Introduktion

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Tentamen OOP

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Modeller, Objekt och Klasser

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

OOP Objekt-orienterad programmering

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2

Objektsamlingar i Java

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Generiska konstruktioner. Kursbokens kapitel 13

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Föreläsning 3-4 Innehåll

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Programmering för språkteknologer II, HT2014. Rum

Stackar, köer, iteratorer och paket

Kopiering av objekt i Java

Malmö högskola 2008/2009 CTS

Mer om klasser och objekt

Malmö högskola 2007/2008 Teknik och samhälle

tentaplugg.nu av studenter för studenter

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

OOP Objekt-orienterad programmering

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

Objektorienterad Programmering DAT043

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Typecasting - primitiva typer. Innehåll. DoME klasser

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

Typkonvertering. Java versus C

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

tentaplugg.nu av studenter för studenter

Föreläsning 5-6 Innehåll

Enkla variabler kontra referensvariabel

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Arrayer. results

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa

Att skriva till och läsa från terminalfönstret

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

Laboration 1 - Grunderna för OOP i Java

Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer

TENTAMEN OOP

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Övning vecka 5. Denna vecka ska vi titta pa samlingar, generics och designmönstren Decorator, Singleton och Iterator.

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

725G61 - Laboration 5 Grundläggande objektorientering. Johan Falkenjack

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Tentamen. Programmeringsmetodik, KV: Java och OOP. 20 januari 2005

Konstruktion av klasser med klasser

Objektorienterad programmering D2

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Objekt och klasser - Introduktion. Objekt. Spar_Konto 2. Spar_Konto 1. Konton. Ett objekt har: Ett bankkonto. public void uttag(double belopp)

Algoritmer. Två gränssnitt

Chapter 4: Writing Classes/ Att skriva egna klasser.

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Samlingar Collection classes

TENTAMEN OOP

Länkade strukturer. (del 2)

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Objekt, Klasser, Paket m. m.

Objektorienterad Programmering (TDDC77)

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Ett objekt... Exempel: Om ni tittar er runt i föreläsningssalen ser in många olika fysiska föremål:

Tentamen FYTA11 Javaprogrammering

JAVAUTVECKLING LEKTION 8

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Föreläsning 3 Innehåll. Generiska klasser. Icke-generisk lista ArrayList, skiss av implementering. Icke-generisk lista Risk för fel

Transkript:

Objects First With Java A Practical Introduction Using BlueJ 5. More sophisticated behavior Innehåll Användning av bibliteksklasser Skriva och läsa dokumentation Biblioteksklasser för ökad funktionalitet 2 Javas klassbibliotek Tusentals klasser Många fler metoder Många praktiska klasser redan färdiga Den som vill programmera i Java måste kunna använda biblioteken Arbete med klassbibliotek Du ska: Känna till några viktiga klasser Veta hur man tar reda på information om nya Kom ihåg: Vi behöver bara känna till gränsytan inte implementationen för att använda en klass. 3 4 A Technical Support System Huvudloopens struktur boolean finished = false; Enkelt dialogsystem, helt textbaserat Iden baseras på Eliza (Joseph Weizenbaum MIT, 60-talet) Utforska while(!finished) gör något if(avbrottsvillkor) finished = true; else gör något 5 6 M. Kölling, University of Southern Denmark 1

Huvudloopens kropp Avbrottsvillkoret String response = responder.generateresponse(); System.out.println(response); if(input.startswith()) finished = true; Varifrån kommer startswith? Vad är det och vad gör det? Hur kan vi ta reda på det? 7 8 Att läsa klassdokumentation Gränsyta vs. implementation Dokumentationen av Javabiblioteken är i HTML-format Läses via en webbrowser API: Application Programmers Interface Beskrivning av gränsytan för alla biblioteksklasserna Dokumentationen innehåller Klassens namn En allmän beskrivning av klassen En lista av konstruktorer och metoder Returvärden och parametrar för konstruktorer och metoder En beskrivning av syftet med varje enskild konstruktor och metod klassens gränsyta/interface 9 10 Gränsyta vs. implementation Biblioteksklasser Dokumentationen innehåller inte privata attribut (de flesta) privata metoder Källkoden för metoderna implementation av klassen Biblioteksklasser måste importeras med en särskild import-sats (java.lang importeras automatiskt). Vad ligger i java.lang? Efter att de importerats kan klasserna användas som om de fanns i samma projekt. 11 12 M. Kölling, University of Southern Denmark 2

Paket och import Klasser organiseras i paket/packages Man kan importera en enstaka klass: import java.util.arraylist; Man kan importera hela paketet : import java.util.*; import-satsen ligger först i filen if(input == ) Jämföra String-objekt if(input.equals()) testar identitet testar likhet Objekt av klassen String måste (nästan) alltid jämföras m.h.a. equals 13 14 Identitet vs. likhet 1 Identitet vs. likhet 2 Andra objekt: 37 person1 person2 person1 person2 person1 == person2? person1 == person2? 15 16 Identitet vs. likhet 3 Identitet vs. likhet (String) person1 person2 if(input == ) == testar identitet ==? person1 == person2? input (kan vara) false! 17 18 M. Kölling, University of Southern Denmark 3

Identity vs. equality (String) Klassen Random if(input.equals()) equals testar likhet equals? Biblioteksklassen Random kan ta fram slumptal. Hur? Är det slump? import java.util.random; Random randomgenerator = new Random(); int index1 = randomgenerator.nextint(); int index2 = randomgenerator.nextint(100); input true! 19 20 Slumpmässiga svar Maps public Responder() randomgenerator = new Random(); responses = new ArrayList<String>(); fillresponses(); public String generateresponse() int index = randomgenerator.nextint(responses.size()); return (String) responses.get(index); public void fillresponses() Maps samling för par av värden. Ett par består av en nyckel och ett värde. Man slår upp genom att tillhanda hålla nyckeln och får tillbaka värdet. T.ex. en telefonkatalog. 21 22 Maps - hur? Maps-praktiskt Här är paret (nyckel,värde) två objekt av typen String :HashMap HashMap phonebook = new HashMap(); phonebook.put("charles Nguyen", "(531) 9392 87"); phonebook.put("lisa Jones", "(402) 36 4674"); phonebook.put("william H. Smith", "(998) 5488 0123"); "Charles Nguyen" "(531) 9392 87" "Lisa Jones" "(402) 36 4674" "William H. Smith" "(998) 5488 0123" String number = (String)phoneBook.get("Lisa Jones"); System.out.println(number); 23 24 M. Kölling, University of Southern Denmark 4

Mängder/sets Tokens = grupper av tecken 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()) anropa it.next() för att få nästa objekt gör något med det objektet Jämför detta med hur vi använde ArrayList public HashSet getinput() System.out.print("> "); String inline = readinputline().trim().tolowercase(); StringTokenizer tokenizer = new StringTokenizer(inLine); HashSet words = new HashSet(); while(tokenizer.hasmoretokens()) words.add(tokenizer.nexttoken()); return words; 25 26 Dokumentation av klasser Dokumentera dina egna klasser på samma sätt som biblioteksklasserna Andra ska kunna använda dina klasser utan att läsa källkoden! Se dina klasser som biblioteksklasser! Komponenter i dokumentationen Dokumentationen bör innehålla: Klassnamnet En kommentar som beskriver det övergripande syftet med klassen och dess karakteristika Ett versionsnummer Konstruktörens namn Dokumentation för varje konstruktor och metod 27 28 Mera i detalj: javadoc För varje enskild konstruktor eller metod: Namnet på metoden returtypen Parametrarnas namn och datatyp Syfte och funktion Beskrivning av varje parameter Beskrivning av returvärdet Klasskommentaren: /** * 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) */ 29 30 M. Kölling, University of Southern Denmark 5

javadoc public vs private Method comment: /** * 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) Publika storheter (attribut, konstruktorer, metoder) är tillgängliga för andra klasser. Attribut borde inte vara publika Privata attribut är tillgängliga bara inom den egna klassen. Bara metoder som är avsedda för andra ska vara publika. 31 32 Information hiding Klassvariabler Data tillhörande ett objekt döljs för andra objekt. Man vet vad ett objekt kan göra, inte hur det görs. Denna princip ger en högre grad av oberoende. Viktigt för stora system och underhåll. Bra för utveckling och felsökning! är en instans av är en instans av är en instans av 33 34 Konstanter Sammanfattning private static final int GRAVITY = 3; private: modifierare som anger access static: variabel som tillhör klassen En enda som delas av alla objekt final: konstant, kan ej ändras Anges ofta med versaler Java har omfattande klassbibliotek. En programmerare måste kunna använda sig av biblioteksklasser. Dokumentationen visar vad man behöver veta för att använda klassen. Implementationen är dold (information hiding). Vi dokumenterar våra klasser så att gränsytan (javadoc) kan läsas fristående och ge tillräcklig information för den som vill använda klassen. Dessutom dokumenterar vi för underhåll och teknisk förståelse. 35 36 M. Kölling, University of Southern Denmark 6