OO implementieren Teil II Objekte ergeben ein Ganzes INFORMATIK / TECHNIK Das End-Produkt INFORMATIK / TECHNIK Java-Applikation ● Texteingabe die in einer Datei gespeichert wird und beim Start wieder angezeigt wird ● Zu realisierendes Gebilde ● Die Anwendung © René Probst Modul 226 II - 2 Die Teile INFORMATIK / TECHNIK 4 existierende Bausteine ● GUI • Graphische Oberfläche ● Text • Textobjekt das angezeigt bzw. gespeichert wird ● MyFileWriter • Schreibt Text in Datei ● MyFileReader • Liest Text aus Datei © René Probst Modul 226 II - 3 Das Zusammenspiel der Komponenten INFORMATIK / TECHNIK Wer muss wem welche Nachrichten bzw. Informationen zukommen lassen? GUI Schnittstelle zwischen den Komponenten muss bekannt sein. ? Text ? MyFileWriter ? MyFileReader Welche Methoden stehen zur Verfügung? © René Probst Modul 226 II - 4 Die Methoden INFORMATIK / TECHNIK Datenaustausch erfolgt durch Nutzung der Methoden (Schnittstellen) der Komponenten MyFileReader GUI + GUI() + update() : void # addUserPanel() : JPanel Text + Text() + setText() : void + getText() : String + MyFileReader() + readText() : String MyFileWriter + MyFileWriterI() + writeText() : void Die genauen Kenntnisse der Methoden ist unerlässlich, für die Nutzung einer Klasse! © René Probst Modul 226 II - 5 Die Java-API INFORMATIK / TECHNIK API = Application Programers Interface ● Beschreibung der Schnittstellen, die der Programmierer nutzen kann. Java bietet WEB-Lösung Beschreibung der gewählten Klasse Liste der Klassen Übersicht Konstruktor Übersicht Methoden Es folgen detaillierte Beschreibung Von Konstruktor und Methoden © René Probst Modul 226 II - 6 Klassendiagramm INFORMATIK / TECHNIK Klassen und deren Abhängigkeit aufzeigen Darstellung in UML ● Klassen und Beziehungen • einseitig, doppelseitig • Kardinalität • Ausprägung usw. MyFileReader Text GUI + GUI() + update() : void # addUserPanel() : JPanel 1 1 + Text() + setText() : void + getText() : String 1 + MyFileReader() + readText() : String MyFileWriter 1 + MyFileWriterI() + writeText() : void © René Probst Modul 226 II - 7 Der Ablauf INFORMATIK / TECHNIK OO-Sprachen sind grundlegend imperative Sprachen ● Das Programm besteht aus einer Folge von Anweisungen Beteiligte Objekte Kellner bitte! Sie wünschen? Menü 2 Aufruf von Methoden 1 mal Menü 2 Rückgabe von Werten © René Probst Modul 226 II - 8 Sequenzdiagramm INFORMATIK / TECHNIK Darstellung in UML ● Sequenzdiagramm res:ArtikelReservation reserviere() b:Bestellung bPos:BestellPosition lager:ArtikelLager gibBestellPos() bPos gibArtikel() artikel gibAnzahl() anzahl reserviereArtikel(artikel, anzahl) ok © René Probst Modul 226 II - 9 Referenzen INFORMATIK / TECHNIK Objekte müssen sich kennen! ● „Visitenkarte“ für die Kontaktaufnahme Aufruf eines Objektes : ● „Peter. Gib mir den Stift.“ ● lager.reserviereArtikel(artikel, anzahl) Erzeugen einer Referenz durch Instanzierung ● artikelLager = new ArtikelLager(); Bekanntmachen (2 Verfahren) ● res = new ArtikelReservation (artikelLager); ● res.setArtikelLager(artikelLager); © René Probst Modul 226 II - 10 Ablauf der Erzeugung INFORMATIK / TECHNIK Sinnvolle Reihenfolge der Objekterzeugung ● Bottom-Up Verfahren • Zuerst Objekte die nur einseitig referenziert sind • Danach in der Abhängigkeit aufsteigend ● Benutzen einer „Erzeuger-Klasse“ • Wiederverwendbarer Lösungsansatz Muster (Pattern) :AppCreator new ArtikelLager() lager:ArtikelLager lager new Bestellung(lager) b:Bestellung b © René Probst Modul 226 II - 11 Der Konstruktor INFORMATIK / TECHNIK Jede Klasse verfügt über einen Konstruktor ● Beschreibt, wie die entsprechenden Objekte aufzubauen sind. • Initialisieren von Werten • Einrichten von Beziehungen zu andern Objekten ● Wird durch eine andere Klasse oder die mainMethode aufgerufen. ● Heisst gleich wie die Klasse, hat aber (im Gegensatz zu Methdoen) keinen Datentyp ● In Java public class Test{ public Test(){} } © René Probst Modul 226 II - 12 Umsetzung in Java INFORMATIK / TECHNIK Java ● OO-Sprache die an C angelehnte Strukturen aufweist ● Benötigt eine Runtime für die Codeausführung • Interpretierte Sprache mit einem Zwischencode (class-Datei) • Code läuft auf jedem System, wenn Runtime verfügbar ist ● Compiler für die Erzeugung des Zwischencodes ● Entwicklungsumgebung mit Java-Library • Pfad zu Java-Library in Umgebungsvariable einfügen PATH ….;C:\j2sdk1.4.2_07\bin;…. © René Probst Modul 226 II - 13 Java Projekt INFORMATIK / TECHNIK Editor (EditPlus) public class First{ public static void main(String[] args){ System.out.println(“\nHello World“); } } Compiler C:\dir\javac First.java Runtime C:\dir\java First © René Probst Modul 226 II - 14 Literatur : Goll-Weiss-Müller INFORMATIK / TECHNIK 2.4 3.3.2.1 3.4 3.5 4.3 4.4 © René Probst Erstes Programmbeispiel mit Objekten Die Dokumetation der Java API Programmerzeugung und -ausführung Das Java Development Kit Erzeugen von Objekten Initialisierung von Objekten mit Konstruktoren Modul 226 II - 15 Stichworte (1) INFORMATIK / TECHNIK API http://de.wikipedia.org/wiki/Application_Programming_Interface Java-API (Version 1.4.2) http://java.sun.com/j2se/1.4.2/docs/api/ Schnittstelle http://de.wikipedia.org/wiki/Schnittstelle_%28objektorientierte_Programmierung%29 Imperative Programmierung http://de.wikipedia.org/wiki/Imperative_Programmierung Deklarative Programmierung http://de.wikipedia.org/wiki/Deklarative_Programmierung Sequenzdiagramm http://de.wikipedia.org/wiki/Sequenzdiagramm © René Probst Modul 226 II - 16 Merkblätter INFORMATIK / TECHNIK O3 : O4 : J1 : J2 : © René Probst Klassendiagramm Sequenzdiagramm Java-Programmstruktur Instanzierung Modul 226 II - 17 Übungen INFORMATIK / TECHNIK 2.1. : 2.2. : 2.3. : 2.4. : © René Probst Java-API lesen Programmsequenz Ein einfaches Java Programm “Textverarbeitung“ Modul 226 II - 18