Objektorientierte Programmierung mit Java unter BlueJ Teil 1 Modellierung (auch UML) Grundlegende Konzepte: Klassen, Objekte, Methoden u. Parmameter Einfache JAVA - Konstrukte Christoph Oberweis 2008 Hinweis: Der Lerngruppe kennt die grundsätzlichen Begriffe und Sachverhalte bezüglich der Datenverarbeitung mit Computern: - Hard - und Software - Grundfertigkeiten am PC (Office – Programme, Explorer, Browser) - Grob: Quellprogramm, ausführbares Programm, Übersetzer - Grob: Daten und Datentypen - Grob: ASCII – Code C.O. 2 Agenda Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen 3 Modelle: Vorwort Anwendungsprogramme und Objektorientierung Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Erst durch eine geeignete Software kann der Computer Probleme der realen Welt lösen. Software bildet einen Ausschnitt der realen Welt in einer Modellwelt ab. Diese Modellwelt ist (im Gegensatz zur realen Welt) auf nur die Notwendigkeiten reduziert, die benötigt werden, um ausgewählte Probleme der Wirklichkeit mit Hilfe von Computern zu lösen. Modellierung ist der Transfer eines Ausschnittes der realen Welt in ein Modell. Objekte der realen Welt (Kunde, Artikel usw.) und ihre Eigenschaften (Kundennummer, Artikelbezeichnung) werden modelliert – Ergebnis dieses Prozesses sind dann beispielsweise Klassen inkl. ihrer Attribute und der ihnen zugeordneten Verarbeitungsmöglichkeiten (Methoden) in der Modellwelt. Quellen Klassen sind Schablonen (Baupläne), die zur Erzeugung von Objekten im Computer dienen. C.O. 4 Modelle und Modellierung Wirkliche Welt: Autohaus Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen Modell: Idealisierte Darstellung (Abbildung) der realen Welt zur Veranschaulichung bestimmter Sachverhalte/Eigenschaften/Prozesse, Vereinfachung der Realität Das Foto ist farbig, hat einen bestimmten Maßstab, wurde aus einer bestimmten Perspektive aufgenommen usw.: Ikonisches Modell (bildhaft) Funktion dieses Modells: Möglicherweise ein Foto für einen Bericht C.O. 5 Fortschreitende Abstraktion Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Verzicht auf Details (Farbinformation usw.): Die Darstellung wird „ungenauer“, allerdings bleiben der Standort und die Silhouette der Fahrzeuge erkennbar. Quellen C.O. 6 Analogmodell Modelle und Modellierung Klassendiagramme Objekte erzeugen X X X X X X X X X X X X X X X Methoden aufrufen Signaturen Java Lageskizze der Stellplätze: Stark vereinfachte Karte, jedes abgestellte Fahrzeug wird zu einem „X“ („Analogie“, eine noch weiterer Abstraktion von der Wirklichkeit) Quellen C.O. 7 Eine weitere Betrachtungsweise Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Jedes Kfz ist individuell (Fahrzeugnummer). Java Quellen C.O. 8 Es gibt Gemeinsamkeiten Individuelles KFZ Individuelles KFZ Individuelles KFZ Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen Überlegung: Was haben alle Fahrzeuge gemeinsam: Vier Räder, Lenkrad … „Abstraktes Fahrzeug“: Schablone, Bauplan für die realen Fahrzeuge C.O. 9 Die Vorstufe einer Klasse Kfz Hersteller: Text Typ: Text ……… Hubraum: Ganzzahl ……… Farbe: Text ……. Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. Schablone, nach diesem „Bauplan“ können (fast) unendlich viele Fahrzeuge gebaut werden. Allerdings benötigt dieser Plan exakte Angaben zu den Details des Fahrzeugs. So könnte der Bauplan formuliert sein: Zahlen und Texte als Informationen zu den Eigenschaften des Fahrzeugs (Vorstufe einer Klasse). (Eine Darstellung dieser Art wird in manchen Fachdisziplinen als symbolisches Modell bezeichnet.) 10 Von der Schablone … Eine Klasse Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. Die Schablone definiert den Bauplan des Fahrzeugs (falls zusätzliche detaillierte Angaben vorliegen). 11 … zum individuellen Kfz Das Objekt Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. Und so soll das individuelle Kfz aussehen! 12 Andere Möglichkeit! Ein anders Objekt der gleichen Klasse Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. Ein anderes „Individuum“. 13 Schritte der Modellierung Wirklichkeit Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. 14 Schritte der Modellierung Wirklichkeit Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen 1. Objekte, die offensichtlich den gleichen Bauplan haben, analysieren. (Hier: die Fahrzeuge, nicht die Fahnen, Verkehrsschilder usw.) Welche gemeinsamen Eigenschaften mit individueller Ausprägung (wie Farbe, Fahrzeugnummer usw.) können diese Objekte besitzen? Signaturen Java Quellen C.O. 15 Schritte der Modellierung Wirklichkeit Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen 1. Objekte, die offensichtlich den gleichen Bauplan haben, analysieren. (Hier: die Fahrzeuge, nicht die Fahnen, Verkehrsschilder usw.) Welche gemeinsamen Eigenschaften mit individueller Ausprägung (wie Farbe, Fahrzeugnummer usw.) können diese Objekte besitzen? Signaturen Java 2. Quellen C.O. Kfz Übertragung in die Modellwelt Hersteller: Text Individuelle Dinge wie z. B. Farbe = rot werden zu Attributen verallgemeinert. Hubraum: Zahl ……. Kfz: Bauplan (Vorläufer der Klasse im Sinne der OOP), der Eigenschaften festlegt. Die Attribute haben einem bestimmten Datentyp. 16 Was passiert mit den Fahrzeugen? Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Bevor die Klasse „Kfz“ fertiggestellt werden kann, muss geklärt werden, welcher Ausschnitt der reale Welt zu modellieren ist: - Produktion des Fahrzeugs? - Verkauf des Fahrzeugs? - Reparatur des Fahrzeugs? - Fahrzeug verschrotten? Signaturen Java Quellen C.O. Ein Autohaus ist wohl in erster Linie für die beiden mittleren Bereiche zuständig. Fragestellung (für die Verwaltung): Welche Vorgänge oder Abläufe sind von Wichtigkeit ( Geschäftsprozesse)? 17 Operationen / Methoden Modelle und Modellierung Die Modellwelt soll sich nun lediglich auf die Verwaltung (Auftragsbearbeitung, Rechnungswesen usw.) beziehen. Klassendiagramme Die MitarbeiterInnen in den angesprochen Abteilungen müssen Fahrzeuge: Objekte erzeugen - erfassen Methoden aufrufen - Informationen ausdrucken - Stammdaten pflegen - Teile bestellen usw. Signaturen Java Quellen C.O. In der objektorientierten Programmierung bezeichnet man diese Tätigkeiten als Operationen oder Methoden. Sie werden in das Klassenmodell mit aufgenommen. 18 Klasse: Der letzte Schliff! Notation in UML (Unified Modeling Language) Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. Kfz Hersteller: Text Typ: Text ……… Hubraum: Ganzzahl ……… Farbe: Text ……. VK Preis: Währung Erfassung() Ändern() Löschen() Drucken() …………… Klassenname Attribute (Datenfeld: Feldname und Datentyp) Methoden 19 Und nochmal: Von der Klasse … „Abstrakter“ Bauplan Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. Kfz Hersteller: Text Typ: Text ……… Hubraum: Ganzzahl ……… Farbe: Text ……. VK Preis: Währung Erfassung() Ändern() Löschen() Drucken() …………… 20 ... zum Objekt „Konkretes“ individuelles Fahrzeug Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. :Kfz Hersteller= „Daihatsu“ Typ= „Terios“ ……… Hubraum= 1495 ……… Farbe= „metallic silber“ ……. VK-Preis= 17800,00 Erfassung() Ändern() Löschen() Drucken() …………… 21 Erweiterung und Erklärung Objekt = Instanz/Exemplar einer Klasse Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen :Kfz Hersteller = „Daihatsu“ Typ= „Terios“ ……… Hubraum = 1495 Nennleistung (KW bei 6000U/min)= 77 ……… Farbe= „rot“ ……. Grundreis= 17800 Leasingsonderzahlung= … Leasingrate = …. Laufzeit= ….. Java Quellen C.O. Erfassung() Ändern() Löschen() Drucken() …………… Unterstrichener Klassenname, zu dem das Objekt gehört, falls das Objekt bereits einen Namen hat: MeinKfz:Kfz Attributwerte, Daten: aktueller Zustand des Objektes, er kann durch Methoden zur Laufzeit verändert werden. Merke: Jedes Objekt besitzt eine Objektidentität, diese unterscheidet es von allen anderen Objekten. Verhalten des Objektes: Menge von Operationen (Methoden) 22 Aufgabe 1 Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Modellieren Sie bitte ein Kunden - Klassendiagramm! Überlegen Sie zunächst, welche Attributte/Methoden benötigt werden könnten. Erstellen Sie dann das entsprechende UMLKlassendiagramm. „Erzeugen“ Sie nun bitte ein Objekt (einKunde:Kunde) und wählen Sie sinnvolle Attributwerte. Signaturen Java Quellen C.O. 23 Eine Lösung Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. Kunde Ku_Nummer : integer Name : String Adresse : String ..... Umsatz : double Erfassung() Ändern() Löschen() Adressaufkleber drucken() Serienbrief erstellen() Umsatz holen() 24 BlueJ: Didaktisches Entwicklungstool Einige Vorteile dieses Werkzeuges: Modelle und Modellierung Kaum Einarbeitungszeit notwendig Klassendiagramme Läuft auf dem Java Development Kit von Sun Microsystems: Komplettes Java, nicht vereinfacht Objekte erzeugen Methoden aufrufen Erzeugung von Objekten aus den Klassen auf Mausklick, die Methoden können direkt getestet werden Signaturen Java Quellen C.O. Hinweise zu den nun folgenden Übungen: Diese sind in der vorliegenden Form nicht im Selbststudium zu lösen. Die Lehrerin/der Lehrer gibt Tipps, erklärt Fachbegriffe teilt zusätzliche Übungsblätter aus und bespricht die Lösungen. 25 1. Schritt BlueJ aufrufen … … und das Projekt Auto laden: Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. 26 BlueJ: Klassen und Objekte intuitiv Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. 27 Quellcode übersetzten Modelle und Modellierung Klassendiagramme Objekte erzeugen Klick mit der rechten Maustaste auf die Klasse Methoden aufrufen Signaturen Java Quellen C.O. 28 Quellcode ist übersetzt Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. 29 Erzeugen eines Objektes Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. new: eine Art „Befehl“, der eine Instanz … … nach dem „Bauplan“ der Klasse Auto erzeugt. Parameter: Preis des Fahrzeugs, dieser wird direkt bei der Erzeugung des Objektes festgelegt 30 Datenübergabe mit Parameter Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. Der Konstruktor ist eine spezielle Methode der Klasse und weist den Attributen (Datenfeldern) der Klasse Anfangswerte zu. Hier bekommte der Konstruktor einen Wert als Parameter von „außen“. Parameter sind von einem bestimmten Datentyp (hier: double, für Zahlen mit Nachkommastellen) und haben einen Namen (hier: preis). 31 Anfangswert eintragen Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. 32 Objekt ist erzeugt! Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. 33 Objekt ist erzeugt! Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Instanzname (= Objektname) Signaturen Java Objekt leiste Name der zugrundeliegenden Klasse Quellen C.O. 34 Was kann das Objekt? Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. Klick auf rechte Maustaste: Kontextmenü der Auto Instanz, diese Einträge repräsentieren Operationen (=Methoden), mit denen die Instanz manipuliert werden kann. 35 Was kann das Objekt? Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Das kommt später! Methoden Quellen Objekt löschen C.O. 36 Methoden Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. 37 Was kostet der Spaß? Modelle und Modellierung Aufruf einer Methode Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. Hinweis: Es soll hier nicht stören, dass die Geldbeträge mit nur einer (oder mehr als zwei) Nachkommastellen erscheinen; das wird später geändert! 38 Aufgabe Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen „Erforschen“ Sie nun bitte genau, was die vier Methoden der Klasse „Auto“ leisten. Zur Darstellung Ihrer Ergebnisse: Erstellen Sie bitte eine Tabelle mit der Überschrift „Objekt auto_1“ und den Spalten „Methodenname“ und „Beschreibung“. Java Quellen C.O. 39 Eine Klasse … Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. 40 Eine Klasse … viele Objekte! Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Alle Objekte der gleichen Klasse haben die gleichen Datenfelder und die gleichen Methoden! Signaturen Java Quellen C.O. 41 Inhalte der Instanzvariablen Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. Instanzvariable: Datenfeld, welches die aktuellen Daten, die das individuelle Objekt (hier auto3) benutzt, speichert. Sie definiert ein Attribut (auch: Eigenschaft) eines Objektes. 42 Kommunikation mit Objekten Modelle und Modellierung Der Teil zwischen den Klammern liefert Informationen hinsichtlich der Parameter. Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. Auch diese Methode benötigt Information von „außen“, um ihre Aufgabe zu erfüllen: Parameter 43 Signaturen Modelle und Modellierung Klassendiagramme Objekte erzeugen Signaturen der Methoden: Sie gibt Informationen über Methoden. Methoden aufrufen Signaturen Java Quellen C.O. 44 Signaturen Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Diese Methode liefert einen Wert (den Inhalt eines Datenfeldes), hier mit dem Datentyp double (d.h. eine Zahl mit Nachkommastellen) Diese Methode benötigt (im vorliegenden Fall) keine Daten von außen (leere Klammern). Java Quellen C.O. 45 Signaturen Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Signatur: Allgemeine „Beschreibung“: Die Methode wird im Programm zunächst „theoretisch definiert“, also programmiert. Konkreter Aufruf der Methode im Programm: Die Methode „gibPreisSonderausstattung“ des Objektes „aut01“ wird aufgerufen und liefert dann einen Wert. Beachte: Vor dem Punkt steht der Objektname, dahinter der Methodenname. Quellen C.O. 46 Signaturen Modelle und Modellierung Klassendiagramme Objekte erzeugen Diese Methode liefert keinen Wert (den Inhalt eines Datenfeldes), hier mit dem Datentyp double (d.h. eine Zahl mit Nachkommastellen). Diese Methode benötigt (im vorliegenden Fall) Daten außen. In den Klammern stehen Parameter, diese haben einen Namen und sind von einem bestimmten Typ (hier: double). Methoden aufrufen Signaturen Java Quellen C.O. 47 Zustände! Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Das Objekt hat einen aktuellen Zustand: die Werte in den Datenfeldern repräsentieren diesen. Signaturen Java Quellen C.O. 48 Quellcode Wo und wie werden nun Klassen in JAVA programmiert? Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. 49 Quellcode Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Java Quellen C.O. Da dieses Beispiel schon etwas komplexer ist, wird das Ganze an einem anderen Auto – „Modell“ vorgeführt. 50 Zuerst die Klasse Kfz Modelle und Modellierung Klassendiagramme Objekte erzeugen hersteller: Text typ: Text hubraum: Ganzzahl ausgabe_Kfz() gibHubraum() Hinweis: Hersteller und Fahrzeugtyp stehen der Einfachheit halber als Literale im Konstruktor, lediglich der Hubraum soll beim Konstruktoraufruf von außen Daten empfangen. Methoden aufrufen Signaturen Java Quellen C.O. Namenskonventionen: Klassennamen beginnen mit einen großen Buch staben, Datenfelder mit einem kleinen Buchstaben, Klassennamen und Methodennamen ebenfalls mit einem kleinen Buchstaben, wobei i.d.R. Methodennamen mit einem Verb beginnen. 51 Jetzt kommt JAVA Modelle und Modellierung public class Kfz { private String hersteller; private String typ; private int hubraum; Klassendiagramme public Kfz(int hub) { hersteller = "Opel"; typ = "Astra"; hubraum = hub; } Objekte erzeugen public int gibHubraum() { return hubraum; } Methoden aufrufen Signaturen public void ausgabe_Kfz() { System.out.println(hersteller + "-Info"); System.out.println("Typ: " + typ); System.out.println("Hubraum: " + hubraum); System.out.println(); } Java Quellen } C.O. Klassendefinition Deklaration: Datenfelder Konstruktor Programmanweisungen: Wertzuweisung, Initialisierung, Methoden Programmanweisungen: Ausgabe von Werten oder Texten Hinweis: Mit weiteren „Typen von Programmanweisungen können Wiederholungsstrukturen oder Abfragen realisiert werden. Dies wird später behandelt. 52 Programmanalyse (Quelltext) public class Kfz { Modelle und Modellierung Klassendefinition public: auf diese Klasse kann Klassendiagramme von außen zugegriffen werden. (Gegenteil: private, macht hier aber keinen Sinn!) Es darf nicht mehr als eine öffentliche Klasse in einer Übersetzungseinheit enthalten sein. Objekte erzeugen Methoden aufrufen Signaturen Zwischen diesen Klammern steht der „Innenteil“ der Klasse (Deklarationen und Methoden mit Anweisungen). Java Quellen } C.O. Das Einrücken der Klammern (oder der Programmzeilen) ist beliebig, allerdings sollte die Programmstruktur dadurch verdeutlicht werden (Mittel der Dokumentation). 53 Programmanalyse Modelle und Modellierung public class Kfz { private String hersteller; private String typ; private int hubraum; Klassendiagramme Deklaration: Datenfelder (da diese zu unterschiedlichen Zeiten unterschiedliche Werte enthalten können, heißen sie auch Variablen) Objekte erzeugen Instanzvariablen, private: Die Werte können von außen nicht manipuliert werden. Methoden aufrufen Datentyp String: Zeichenkette Signaturen Datentyp int (integer): Zahlen ohne Nachkommastellen Java Hersteller, Typ...: Feldname Quellen } C.O. Beachte: Die Deklaration eines Feldes wird mit einem „;“ abgeschlossen 54 Programmanalyse Konstruktor Modelle und Modellierung public class Kfz { private String hersteller; private String typ; private int hubraum; Klassendiagramme public Kfz(int hub) { hersteller = "Opel"; typ = "Astra"; hubraum = hub; } Objekte erzeugen Methoden aufrufen typ = "Astra"; oder mit Hilfe einer Parameter übergabe: Signaturen Java public Kfz(int hub) Quellen } C.O. Er sorgt dafür, dass die Datenfelder des Objektes unmittelbar nach seiner Erzeugung sinnvolle Werte besitzen (Initialisierung). Er hat den gleichen Name wie die Klasse und wird automatisch aufgerufen. Die Initialisierung erfolgt entweder direkt mit dem Gleichsetzungsoperator ´=´ als Wertezuweisung: Beachte: Die Programmanweisungen des Konstruktors (wie auch der Me thoden) stehen zwischen ´{´ und ´}´. 55 Programmanalyse Modelle und Modellierung public class Kfz { private String hersteller; private String typ; private int hubraum; Klassendiagramme public Kfz(int hub) { hersteller = "Opel"; typ = "Astra"; hubraum = hub; } Objekte erzeugen Ergänzung: public Kfz(int hub) Formaler Parameter Aktueller Parameter Methoden aufrufen Signaturen Java Quellen } C.O. 56 Parameterübergabe und Zuweisung Modelle und Modellierung public class Kfz { private String hersteller; private String typ; private int hubraum; Klassendiagramme public Kfz(int hub) { hersteller = "Opel"; typ = "Astra"; hubraum = hub; } Zuweisung Parameterübergabe Objekte erzeugen Methoden aufrufen Signaturen Java Quellen } C.O. 57 Programmanalyse Modelle und Modellierung public class Kfz { private String hersteller; private String typ; private int hubraum; Klassendiagramme public Kfz(int hub) { hersteller = "Opel"; typ = "Astra"; hubraum = hub; } Objekte erzeugen public int gibHubraum() { return hubraum; } Methoden aufrufen Signaturen public void ausgabe_Kfz() { System.out.println(hersteller + "-Info"); System.out.println("Typ: " + typ); System.out.println("Hubraum: " + hubraum); System.out.println(); } Java Quellen } C.O. Methoden Typ 1: Rückgabe eines Wertes eines bestimmten Datentyps, hier: Ausgabe im BlueJ - Fenster (normalerweise liefert eine Methode mit return einen Wert an eine andere Methode zurück) Typ 2: Keine Rückgabe (void) „echte“ Ausgabeanweisung: Bildschirm – Ausgabe, auch unabhängig von BlueJ 58 Programmanalyse Modelle und Modellierung public class Kfz { private String hersteller; private String typ; private int hubraum; Klassendiagramme public Kfz(int hub) { hersteller = "Opel"; typ = "Astra"; hubraum = hub; } Objekte erzeugen public int gibHubraum() { return hubraum; } Methoden aufrufen Signaturen Auch hier werden Methoden von Objekten aufgerufen (Punkt-Operator!) hersteller + "-Info" Ausgabe des Inhalts einer Variablen und daran „angehängt“ das Literal "-Info" public void ausgabe_Kfz() { System.out.println(hersteller + "-Info"); System.out.println("Typ: " + typ); System.out.println("Hubraum: " + hubraum); System.out.println(); } Java Quellen } C.O. 59 Zusammenfassung Modelle und Modellierung public class Klassenname { Datenfelder Klassendiagramme Objekte erzeugen Konstruktoren Methoden } Methoden aufrufen Signaturen Java Quellen Datenfelder: Speichern die Daten, die das Objekt benutzt, sie beschreiben als Eigenschaften den Zustand eines Objekts, individuelle Charakteristikum (Zustand), um ein bestimmtes Objekt von einem anderen desselben Typs zu unterscheiden. Konstruktoren: Setzen neu erzeugte Objekte in einen vernünftigen Anfangszustand Methoden: Implementieren das Verhalten der Objekte (dienen auch der Veränderung der Objekteigenschaften) C.O. 60 Mini - Projekt Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Signaturen Als kleines „Abschlussprojekt“ zu diesem Teil 1 kann nun die Modellierung eines Fahrzeugs stehen, welches alle bisher kennengelernten Methoden integriert. Zusatzaufgabe: Informieren Sie sich bitte, wie ein Quelltext mit Kommentaren versehen werden kann und welchen Sinn das macht (Hilfe: s. Quelltext auf den letzten beiden Folien dieser Präsentation). Java Quellen C.O. 61 Quellen Modelle und Modellierung Klassendiagramme Objekte erzeugen Methoden aufrufen Balzert, Helmut: Lehrbuch Grundlagen der Informatik.- Spektrum Verlag Barnes, D. u. Kölling, M.: Java lernen mit BlueJ.- Pearson-Verlag Das BlueJ Tutorial http://www.bluej.org/download/download.html http://jerry.c-lab.de/java/21Tage/kap02.htm Signaturen Java Quellen C.O. Alle Fotos u. Abbildungen: C. Oberweis 62 Quellcode, Beispiel /** * Die Klasse Auto modelliert einfache Fahrzeuge. * Der Nettopreis für das Fahrzeug wird über den Konstruktor festgelegt. * Netto- und Bruttopreis können ausgegeben werden. * Zusätzlich können für Sonderausstattungen mehrmals Preise berücksichtigt werden. * Autor: Christoph Oberweis (www.coberweis.de) * Version: 2008.06.21 */ public class Auto { // Der Preis (Netto, Brutto, Preis fuer Sonderausstattung) private double preis_netto; private double preis_brutto; private double preis_sonderausstattung; // Konstruktor: Erzeuge ein Fahrzeug zum angegebenen Preis public Auto(double preis) { preis_netto = preis; preis_brutto = 0.00; preis_sonderausstattung = 0.0; } C.O. 63 Quellcode // Liefere den Nettopreis public double gibNettogrundpreis() { return preis_netto; } // Nimmt Preis fuer Sonderausstattung public void nimmPreisSonderausstattung(double pr_sonder) { preis_sonderausstattung = preis_sonderausstattung + pr_sonder; } // Zeige bisherigen Preis fuer Sonderausstattung public double gibPreisSonderausstattung() { return preis_sonderausstattung; } // Berechne den Bruttopreis und drucke Netto- und Bruttopreis. public void PreisDrucken() { preis_netto = preis_netto + preis_sonderausstattung; preis_brutto = preis_netto * 1.19; // Ausdruck Rechnungsfuss System.out.println("Gesamtpreis Netto"); System.out.println( preis_netto + " EURO"); System.out.println("Gesamtpreis Brutto"); System.out.println( preis_brutto + " EURO"); System.out.println("=================="); System.out.println(); } } C.O. 64