Teil II Objekte ergeben ein Ganzes

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Imperative Programmierung -Entwicklungswerkzeuge
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Assoziationen (Beziehungen) 1 : n. Zu einem Auto gibt es mehrere Fahrer (2) und zu diesen 2 Fahrern gibt es genau dieses Auto.
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Praxis-Repetitorium JAVA zusätzliche, ergänzende Lehrveranstaltung
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Das Java-Hamstermodell
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Einführung in Java Alexander Dreßler modifiziert Peter Brichzin und Matthias Spohrer Literatur Installation der Programme.
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
Portierung von Java nach C
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Einführung in die Programmierung Datensammlung
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Objektorientierte Modellierung
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Herzlich Willkommen zu „Einführung in die Programmierung mit Java“
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Einführung in die Programmiersprache Java
OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt.
Java und Eclipse.
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
1.3 Klassen und Beziehungen
Objektorientiertes Konstruieren
EPROG Tutorium #4 Philipp Effenberger
Wilfried Imrich CuP - Java Erste Vorlesung Entspricht ungefähr Kapitel 1.1 des Skriptums Wilfried Imrich Montanuniversität Leoben Freitag, 4. Oktober 2002.
CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Neuerungen in Java 5/6/7. Stefan Bühler für InfoPoint Überblick Java 5 neue Sprachfeatures Erweiterungen Klassenbibliothek Java 6 Erweiterungen.
Starten der Entwicklungsumgebung (IDE)
Programmiervorkurs WS 2014/15 Schleifen
Programmiervorkurs WS 2014/15 Instanzmethoden
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Natürliches Programmieren
Java-Kurs Übung Benutzeroberflächen und Graphik
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
© 2004 Pohlig Informatik Kurse © 2004 Pohlig Informatik Kurse Der Tramp tanzt die Rekursion zünderUntersuchen(…) Basisfall Rückmeldung:
A Workshop About this chapter General description Units Time Schedule
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Institut für Kartographie und Geoinformation Prof. Dr. L. Plümer, Dipl.-Ing. D. Dörschlag, Dr. G. Gröger Einführung in die Programmierung mit Java 13.
Einführung in Java PING e.V. Weiterbildung Andreas Rossbacher 24. März 2005.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Java Programme nur ein bisschen objektorientiert.
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Grundkurs Informatik 11-13
 Präsentation transkript:

Teil II Objekte ergeben ein Ganzes OO implementieren Teil II Objekte ergeben ein Ganzes TEIL II Idee: LEGO-Bausteine zusammenfügen Die unten erwähnten Lernziele sind noch nicht vertieft zu behandeln sondern mehr im Sinn einer ersten Berührung mit dem Thema zu verstehen. Es geht hier darum, einen Überblick zu erhalten und gewisse Fachausdrücke erstmals einordnen zu können. Die Schüler müssen aus bestehenden Klassen ein funktionsfähiges System zusammenfügen. Die Einzelteile sind: - GUI - Text - MyFileReader - MyFileWriter Die Aufgabe bedingt, dass zuerst die API der betreffenden Klassen genau studiert werden. Lernziel 1 : Lesen von API Lernziel 2 : UML Klassendiagramm lesen Im Klassenverband den Ablauf der nötig ist erarbeiten. Was muss zuerst instanziert werden? Wer erhält welche Referenzen zugeteilt? Lernziel 3 : Instanzierung von Klassen Lernziel 4 : UML Sequenzdiagramm Realisierung der Klasse GoLego und Testen der Funktion Lernziel 5 : einfache Java-Programmierung Lernziel 6 : Testen nach Vorgabe Vorgehen 1. Einführung in die OO-Welt mit Präsentation. Beziehung zur realen Welt aufzeigen 2. Begriff Objekt als Exemplar aufzeigen und danach Begriff Klasse als Bauplan klar darlegen 3. Bedeutung von OO-Bausteinen und deren "Angebot" darlegen --> API kennen, Umgang mit Javadoc 4. Neue Sprache zeigen, die den Sachverhalt visualisiert --> UML 5. Darlegen, dass Objekte vor der Nutzung erzeugt werden müssen (evtl. Präsentation) 6. Möglichen Ablauf besprechen, um die Problemstellung LEGO zu lösen 7. Einführen des Sequenzdiagramms 8. Das Programm GoLegoApp erstellen (vormachen-nachmachen / selbständig ...) 9. Testen der ganzen Angelegenheit

Das End-Produkt Java-Applikation Texteingabe die in einer Datei gespeichert wird und beim Start wieder angezeigt wird Zu realisierendes Gebilde Die Anwendung Als Motivation wird das Endprodukt so wie sein konzeptioneller Aufbau aufgezeigt. Das erste Java-Programm besteht also aus dem Zusammenbau von Komponenten. © René Probst Modul 226

4 existierende Bausteine Die Teile 4 existierende Bausteine GUI Graphische Oberfläche Text Textobjekt das angezeigt bzw. gespeichert wird MyFileWriter Schreibt Text in Datei MyFileReader Liest Text aus Datei Die 4 Bausteine des Systems © René Probst Modul 226

Das Zusammenspiel der Komponenten Wer muss wem welche Nachrichten bzw. Informationen zukommen lassen? Welche Methoden stehen zur Verfügung? GUI Schnittstelle zwischen den Komponenten muss bekannt sein. ? Text ? ? MyFileWriter MyFileReader Erst das Zusammenspiel der Komponenten ergibt ein neues System. Es müssen die Richtigen Kontakte geknüpft werden. Beispiele : Der Trainer muss die Spieler kennen Der Koch muss die Kellner kennen und diese dann die Gäste Usw. © René Probst Modul 226

Die Methoden Datenaustausch erfolgt durch Nutzung der Methoden (Schnittstellen) der Komponenten Die genauen Kenntnisse der Methoden ist unerlässlich, für die Nutzung einer Klasse! MyFileReader + MyFileReader() + readText() : String GUI Text + GUI() + update() : void # addUserPanel() : JPanel + Text() + setText() : void + getText() : String MyFileWriter + MyFileWriterI() + writeText() : void Ohne Kenntnisse der Methoden der einzelnen Klassen kann das System nicht gebaut werden. Es muss also eine umfassende Dokumentation bestehen. Hinweis: Somit ist bei OO automatisch der Zwang zu guter und umfassender Dokumentation der Klassen (und somit auch des Codes) gegeben. Ohne eine solche Doku kann eine Klasse später kaum mehr gewartet und schon gar nicht andersweitig genutzt werden. © René Probst Modul 226

API = Application Programers Interface Die Java-API API = Application Programers Interface Beschreibung der Schnittstellen, die der Program-mierer nutzen kann. Java bietet WEB-Lösung Beschreibung der gewählten Klasse Liste der Klassen Die API stellt den ersten Kontakt zur Java-Welt dar. Damit ist auch gleich die Bedeutung der API gegeben. Die Lernenden müssen dieses Werkzeug nutzen können. Mit der Übung 0 2.1. wird der Umgang mit der API geschult. Dabei muss die compareTo-Methode der String-Klasse gesucht werden. Weiter sollen die Lernenden erkennen, dass es mit compareToIgnoreCase auch noch eine weitere Methode gibt, die genutzt werden könnte. Wichtig ist, dass sie auf Grund der Dokumentation auch den Unterschied in der Nutzung der beiden Methoden erkennen. Die API wird von nun an ein ständiger Begleiter sein, wenn es darum geht irgendwelche Übungen in Java zu realisieren. Übersicht Konstruktor Übersicht Methoden Es folgen detaillierte Beschreibung Von Konstruktor und Methoden © René Probst Modul 226

Klassen und deren Abhängigkeit aufzeigen Darstellung in UML Klassendiagramm Klassen und deren Abhängigkeit aufzeigen Darstellung in UML Klassen und Beziehungen einseitig, doppelseitig Kardinalität Ausprägung usw. MyFileReader 1 + MyFileReader() + readText() : String GUI Text Nach dem bisher nur isolierte Klassen in UML Darstellung betrachtet wurden, wird nun ein System gezeigt. Die Lernenden erkennen hier, dass ähnlich dem ERD auch Beziehungslinien und Kardinalitäten vorkommen. Hinweis : Es folgt hier keine vertiefte Betrachtung der Klassendiagramme. Dies folgt im 2. Schritt des Spiralmodells. 1 1 + GUI() + update() : void # addUserPanel() : JPanel + Text() + setText() : void + getText() : String MyFileWriter 1 + MyFileWriterI() + writeText() : void © René Probst Modul 226

OO-Sprachen sind grundlegend imperative Sprachen Der Ablauf OO-Sprachen sind grundlegend imperative Sprachen Das Programm besteht aus einer Folge von Anweisungen Beteiligte Objekte Kellner bitte! Sie wünschen? Aufruf von Methoden Mit dem Klassendiagramm wurde der statische Aufbau des Systems gezeigt. Ein Computerprogramm ist aber eine sehr dynamische Sache. Daher muss auch eine Möglichkeit bestehen, solche zeitlichen Abfolgen (oder Prozesse) zu symbolisieren. Auch wenn das OO-Paradigma sich stark von jenem der klassischen Programmierung unterscheidet, so ist beiden eigen, dass es sich um imperative Sprachen handelt, bei denen eine Folge von Befehlen abgearbeitet wird (im Gegensatz zu deklarativen Sprachen wie z.B. SQL) Menü 2 1 mal Menü 2 Rückgabe von Werten © René Probst Modul 226

Darstellung in UML Sequenzdiagramm Sequenzdiagramm res:Artikel-Reservation b:Bestellung bPos:Bestell-Position lager:Artikel- Lager reserviere() gibBestellPos() bPos gibArtikel() artikel gibAnzahl() In der UML werden Abläufe durch Sequenzdiagramme repräsentiert. Es handelt sich um eine relativ einfache Technik. Zu beachten ist, dass der Pfeil vom Aufrufer weg und hin zum Aufgerufenen gerichtet ist und dass die Methode Teil des Aufgerufenen ist. Hinweis : Eine vertiefte Betrachtung folgt im 2. Durchlauf. anzahl reserviereArtikel(artikel, anzahl) ok © René Probst Modul 226

Objekte müssen sich kennen! Aufruf eines Objektes : Referenzen 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); Das Verständnis für die Bedeutung der Referenzen ist für OO unerlässlich. Daher muss dieser Begriff hier gut ausgebildet werden. Es ist klar, dass dies ein sehr abstrakter Schritt ist. Aber er ist unumgänglich und muss so früh wie möglich eingebracht und immer wieder repetiert werden. Es ist auch wichtig, dass die beiden üblichen Verfahren (Konstruktor, Methode) erwähnt werden. Tip: Vergleich mit dem Alltag. Hier stellen sich die Objekte einander vor, in dem sie Visitenkarten (Referenzen) austauschen. Eine solche Visitenkarte stellt nicht das Objekt selber dar, sondern ermöglicht die Kontaktaufnahme. © René Probst Modul 226

Sinnvolle Reihenfolge der Objekterzeugung Ablauf der Erzeugung 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 lager:Artikel- Lager new ArtikelLager() Mit dieser Voraussetzung können die Lernenden nun den Ablauf des Startvorgangs für die zu realisierende Anwendung erarbeiten und die Übung O2.2 lösen. Es braucht aber sicherlich Hilfe der Lehrperson, da die Vorgabe mit Interface arbeitet. Hier muss eben ein entsprechender Tip den Lernenden gegeben werden. Wahrscheinlich drängt sich ein gemeinsames Erarbeiten an der Tafel auf. Tip : Evtl an der Wandtafel ein eigenes Beispiel miteinander machen, bei dem in einer speziellen Erzeugerklasse die main-Methode für die Objekterzeugung genutzt wird. public class creatorClass{ public static void main(String[] args){ ClassA objA = new ClassA(); …… } lager new Bestellung(lager) b:Bestellung b © René Probst Modul 226

Jede Klasse verfügt über einen Konstruktor Der Konstruktor 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 main-Methode aufgerufen. Heisst gleich wie die Klasse, hat aber (im Gegensatz zu Methdoen) keinen Datentyp In Java public class Test{ public Test(){} } Bedeutung des Konstruktors hervorheben. Ohne Konstruktor gibt es keine Objekte. Er beschreibt, wie eine Objekt erzeugt werden muss. Hinweis: Auf die Möglichkeiten von Default-Konstruktor und Überladen wird erst im 2. Durchlauf eingeganen. © René Probst Modul 226

Umsetzung in Java 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;…. Hier ein paar wichtige Aspekte aufzeigen, die bei der Arbeit mit Java wichtig sind. Java ist Gratis und kann von java.sun.com geladen werden Wir verwenden JDK 1.4.2 Umgebung muss eingerichtet werden (Kommandozeilen-Tools!)  PATH-Variable bei Windows Für einfaches Arbeiten sind Hilfsmittel nötig  EditPlus Vorbereitet für Java-Projekte Erfordert eine feste Dateistruktur mit Parent\bin und Parent\src, wobei Parent für beliebigen Namen steht Java-Dateien in src, die class-Dateien werden nach bin kompiliert Tool1 = Javac Tool2 = Java Tool3 = DOS-Box © René Probst Modul 226

Editor (EditPlus) Compiler Runtime Java Projekt public class First{ public static void main(String[] args){ System.out.println(“\nHello World“); } C:\dir\javac First.java Nun ist alles vorbereitet und die Lernenden können ein erstes Programm in EditPlus schreiben und ausführen.  Übung O 2.3 Zuerst diese Beispiel hier machen  HelloWorld und danach Beispiel aus Buch Seite 41 abschreiben und Verhalten studieren. Nach diesem Beispiel soll dann selbständig die Umsetzung des Text-Beispiels (O 2.4) folgen. C:\dir\java First © René Probst Modul 226

Literatur : Goll-Weiss-Müller 2.4 Erstes Programmbeispiel mit Objekten 3.3.2.1 Die Dokumetation der Java API 3.4 Programmerzeugung und -ausführung 3.5 Das Java Development Kit 4.3 Erzeugen von Objekten 4.4 Initialisierung von Objekten mit Konstruktoren © René Probst Modul 226

API http://de.wikipedia.org/wiki/Application_Programming_Interface Stichworte (1) 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

J1 : Java-Programmstruktur J2 : Instanzierung Merkblätter O3 : Klassendiagramm O4 : Sequenzdiagramm J1 : Java-Programmstruktur J2 : Instanzierung © René Probst Modul 226

2.3. : Ein einfaches Java Programm 2.4. : “Textverarbeitung“ Übungen 2.1. : Java-API lesen 2.2. : Programmsequenz 2.3. : Ein einfaches Java Programm 2.4. : “Textverarbeitung“ © René Probst Modul 226