OOP mit Java, Teil 1

Werbung
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
Herunterladen