Inhalt • Bibliotheksklassen benutzen • Dokumentation lesen • Dokumentation schreiben Klassenbibliotheken 4.0 ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling Die Java Klassenbibliothek • Tausende Klassen • Zehntausende Methoden • Viele nützliche Klassen die uns das Programmieren erleichtern • Ein(e) kompetenter JavaProgrammierer(in) muss in der Lage sein, mit den Klassenbibliotheken zu arbeiten. ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling Das Kundendienstsystem • Ein textbasiertes Dialogsystem • Die Idee stammt von ‘Eliza’ (Joseph Weizenbaum, MIT, 1960s) • Das Projekt untersuchen… Arbeiten mit Bibliotheken Sie sollten: • wichtige Klassen kennen; • wissen, wie Sie andere Klassen finden. Wichtig: • Wir müssen nur die Schnittstelle der Klasse kennen, nicht die Implementierung. ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling Struktur der Hauptschleife boolean finished = false; while(!finished) { do something if(exit condition) { finished = true; } else { do something more } } ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling Rumpf der Hauptschleife Die Abbruchbedingung String input = reader.getInput(); String input = reader.getInput(); ... String response = responder.generateResponse(); System.out.println(response); if(input.startsWith("bye")) { finished = true; } • Woher kommt ‘startsWith’? • Was ist es? Was tut es? • Wir können wir es herausfinden? ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling Klassendokumentation lesen • Die Dokumentation für Javabibliotheken ist im HTML-Format; • Lesbar in einem Webbrowser • Klassen-API: Application Programmers’ Interface • Schnittstellenbeschreibungen für alle Bibliotheksklassen ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling Schnittstelle und Implementierung Die Dokumentation enthält • den Namen der Klasse; • eine generelle Beschreibung der Klasse; • eine Liste der Konstruktoren und Methoden; • Rückgabewerte und Parameter für Konstruktoren und Methoden; • eine Beschreibung des Zwecks jedes Konstruktors und jeder Methode die Schnittstelle der Klasse ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling Schnittstelle und Implementierung Die Dokumentation enthält nicht • private Felder (die meisten Felder sind privat) • private Methoden • die Rümpfe (Quelltext) der Methoden ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling Bibliotheksklassen benutzen • Klassen aus der Klassenbibliothek müssen mit einer import-Anweisung importiert werden (außer Klassen aus java.lang). • Dann können sie benutzt werden wie Klassen aus dem eigenen Projekt. die Implementierung der Klasse ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling Packages und import • Klassen sind in packages organisiert. • Einzelne Klassen können importiert werden: import java.util.ArrayList; • Ganze packages können importiert werden: Die Random-Klasse • Die Bibliotheksklasse Random kann für Zufallszahlen benutzt werden import java.util.Random; ... Random randomGenerator = new Random(); ... int index1 = randomGenerator.nextInt(); int index2 = randomGenerator.nextInt(100); import java.util.*; ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling Zufällige Antworten erzeugen 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 ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling