Folien - BlueJ

Werbung
Gruppenarbeit
Klassenbibliotheken
Der IQ einer Gruppe ist das Minimum
der individuellen IQ der
Gruppenmitglieder, geteilt durch die
Anzahl der Gruppenmitglieder.
4.0
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Was ist hier falsch?
class NoteBook {
private ArrayList<String> notes;
Was ist hier falsch?
class NoteBook {
private ArrayList<String> notes;
public NoteBook()
{
ArrayList<String> notes = new ArrayList<String>();
}
public NoteBook()
{
notes = new ArrayList<String>();
}
public vois addNote(String note)
{
notes.add(note);
}
public vois addNote(String note)
{
notes.add(note);
}
}
}
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Letzte Woche: Random-Klasse
• Die Bibliotheksklasse Random kann
benutzt werden, um Zufallszahlen zu
erzeugen
import java.util.Random;
...
Random randomGenerator = new Random();
...
int index1 = randomGenerator.nextInt();
int index2 = randomGenerator.nextInt(100);
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Letzte Woche: Zufällige
Antworten
public Responder()
{
randomGenerator = new Random();
responses = new ArrayList<String>();
fillResponses();
}
public String generateResponse()
{
int index = randomGenerator.nextInt(responses.size());
return responses.get(index);
}
public void fillResponses()
{
...
}
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Inhalt
• Mehr Bibliotheksklassen
• Dokumentation schreiben
Eingabe im
Kundendienstsystem
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Mengen (Sets) benutzen
import java.util.HashSet;
Strings zerlegen
public HashSet<String> getInput()
{
...
System.out.print("> ");
HashSet<String> mySet = new HashSet<String>();
String inputLine =
reader.nextLine().trim().toLowerCase();
mySet.add("one");
Vergleiche
mit ArrayList
code!
mySet.add("two");
mySet.add("three");
String[] wordArray = inputLine.split(" ");
HashSet<String> words = new HashSet<String>();
for(String element : mySet) {
for(String word : wordArray) {
do something with element
words.add(word);
}
}
return words;
}
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Maps
• Maps sind Sammlungen, die Paare von
Objekten enthalten.
• Paare bestehen aus einem Schlüssel
(key) und einem Wert (value).
• Zugriff erfolgt, indem man einen
Schlüssel angibt, und einen Wert
erhält.
• Ein Beispiel: ein Telefonbuch.
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Maps benutzen
• Ein Map-Objekt mit Strings als Schlüssel und Wert
:HashMap
"Peter Müller"
"(030) 9392 4587"
"Lisa Jones"
"(047) 4536 4674"
"Lola Schmidt"
"(0421) 5488 0123"
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Maps benutzen
HashMap <String, String> phoneBook =
new HashMap<String, String>();
phoneBook.put("Peter Müller", "(030) 9392 4587");
phoneBook.put("Lisa Jones", "(047) 4536 4674");
phoneBook.put("Lola Schmidt", "(0421) 5488 0123");
String phoneNumber = phoneBook.get("Lisa Jones");
System.out.println(phoneNumber);
Klassendokumentation
schreiben
• Ihre eigenen Klassen sollten so
dokumentiert werden, wie es auch die
Bibliotheksklassen sind..
• Andere Programmierer sollten Ihre
Klasse benutzen können, ohne den
Quelltext lesen zu müssen.
• Machen Sie Ihre Klasse zu einer
'Bibliotheksklasse'!
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Elemente der Dokumentation
Elemente der Dokumentation
Die Dokumentation einer Klasse enthält:
• den Klassennamen;
• einen Kommentar, der den Zweck und die
Eigenarten der Klasse beschreibt;
• eine Versionsnummer
• die Namen der Autoren
• Dokumentation für jeden Konstruktor und
jede Methode
Die Dokumentation einer Methode/eines
Konstruktors enthält:
• den Namen der Methode;
• den Ergebnistyp;
• die Parameternamen und Typen;
• eine Beschreibung des Zwecks und der
Funktion der Methode;
• eine Beschreibung jeden Parameters;
• eine Beschreibung des Ergebniswertes.
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
javadoc
Klassenkommentar:
/**
* 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
(30.Mar.2010)
*/
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
javadoc
Methodenkommentar:
/**
* 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<String> getInput(String prompt)
{
...
}
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Public / private
• Öffentliche (public) Attribute (Felder,
Konstruktoren, Methoden) sind für
andere Klassen zugreifbar.
• Felder sollten nicht öffentlich (public)
sein.
• Private Attribute sind nur in der
eigenen Klasse zugreifbar.
• Nur Methoden die für andere Klassen
bestimmt sind sollten öffentlich
(public) sein.
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Klassenvariablen
Information hiding
• Daten, die einem Objekt gehören, sind
vor anderen Objekten versteckt.
• Wissen was ein Objekt tun kann, nicht
wie es dies tut.
• Information hiding erhöht den Grad der
Unabhängigkeit.
• Unabhängigkeit der Module ist wichtig in
großen Systemen, und für
Softwarewartung.
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Konstanten
private static final int GRAVITY = 3;
•private: Sichtbarkeit, wie bekannt
•static: Klassenvariable
•final: Konstante
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Zusammenfassung
• Java hat eine große Klassenbibliothek.
• Eine gute Programmiererin muß sich damit
auskennen.
• Die Dokumentation zeigt uns, was wir wissen
müssen, um die Klasse zu benutzen
(Schnittstelle/Interface).
• Die Implementierung is versteckt (Information
hiding).
• Wir dokumentieren unsere Klassen so, dass
die Schnittstelle alleine gelesen werden kann
(Klassenkommentar, Methodenkommentare).
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Herunterladen