![]() |
|
|
![]() ![]() |
JAVA - Eine objektorientierte Programmiersprache Java ist eine objektorientierte Programmiersprache - das bedeutet, dass beim Programmieren Objekte verwendet werden, die den Ablauf des Programmes bestimmen. In diesem Abschnitt möchte ich den Begriff Objektorientierung allgemein erklären und die Bedeutung und Auswirkungen auf das Programmieren erfassen. Seit ca. fünf Jahren gibt es effiziente Werkzeuge zum Entwerfen von komplexen Programmen. Dabei werden die Objekte und ihr Zusammenhang innerhalb eines Systems grafisch dargestellt, nicht aber die Programmierung. Leider haben diese Werkzeuge unterschiedliche Darstellungen verwendet. Seit ca. zwei Jahren scheint es gelungen zu sein, die Darstellung weltweit zu vereinheitlichen und in Form der UML (Unified Modelling Language) herauszubringen. Seitdem hat die Modellierung eines Problemes nicht nur die Programmierabteilungen erfasst, sondern ist in völlig andere Bereiche eingedrungen (auch Anwender und Geschäftsleitung reden jetzt bei Problemen mit). Mit Hilfe der UML ist es gelungen, dass sich alle beteiligten Stellen einer einheitlichen Sprache bedienen (vom Management bis zur Buchhaltung) und Probleme bei der Umsetzung in ein Programm verstehen können. Genau deshalb glaube ich, das UML als Verständigungsmittel zwischen Gruppen, Abteilungen und Management in Zukunft immer öfters eingesetzt wird (weiss ich aus eigener Erfahrung!). Ich selbst kenne einige Firmen in der UML als Voraussetzung für einen Job absolut notwendig ist, unabhängig von der Position. Ich habe deshalb versucht bei der Objektorientierung die Grundlagen von UML soweit es Objekte betrifft mitzunehmen.
|
![]() |
Ein Auto mit einem bestimmten Kennzeichen, das zusammengefallene Haus an der Ecke, der Computer am Arbeitsplatz, die Eiche im Park, die Homepage eines Freundes, die Person, die mir immer den letzten Parkplatz wegschnappt, usw. |
Das Auto besitzt ein Kennzeichen, eine Farbe, eine Geschwindigkeit, eine Länge, usw. Das Haus hat Mauern, Fenster, Türen, eine Grundfarbe, ein Dach, usw. Der Computer besitzt eine Taktfrequenz, Speicherplatz, ein CD-Laufwerk, usw. Die Eiche hat einen Stamm, Blätter, Zweige, Äste, usw. Die Homepage besitzt eine Adresse, Inhalt (hoffentlich), Links, Grafiken, usw. Die Person besitzt einen Namen, Haar- und Augenfarbe, Grösse, Geschlecht, usw. |
Das Auto kann sich bewegen, blinken, bschleunigen, bremsen, usw. Das Haus kann Fenster und Türen öffen/schliessen und auch zusammenfallen. Der Computer kann rechnen, lesen, speichern, abstürzen, usw. Die Eiche kann wachsen, grünen, Früchte tragen, usw. Die Homepage kann auf andere Seiten weiterleiten, Grafik animieren, Musik abspielen, usw. Und was die Person alles kann, muss ich nicht extra erwähnen. |
Zwei Autos vom gleichen Typ unterscheiden sich durch die Farben rot und blau und natürlich durch die Nummer des Kennzeichens. |
![]() |
Wenn wir den Typ eines Objektes beschreiben, so definieren wir die Eigenschaften (ohne Ausprägung) und die Methoden. Auf diese Weise erhalten wir eine Definition, die für jedes Objekt dieses Typs gilt.
Versuchen wir ein Auto ganz einfach zu definieren:
Eigenschaften: - Farbe - Geschwindigkeit Methoden: - beschleunigen - bremsen |
![]() UML-Darstellung |
![]() |
Ein Lastwagen verhält sich in der realen Welt anders als ein Sportwagen. Während beim Sportwagen die Beschleunigung als Eigenschaft sehr wichtig ist, spielt sie beim Lastwagen keine Rolle. Umgekehrt ist das max. erlaubte Gewicht beim Sportwagen belanglos, aber beim Lastwagen sehr wichtig. Beim Autobus ist jede dieser Eigenschaften wichtig. |
Sowohl der Sportwagen, als auch der Lastwagen bzw. der Autobus besitzen gleiche Eigenschaften, wie Länge, Breite, Höhe,
Anzahl der Räder, Anzahl der Sitzplätze, usw. Diese Gemeinsamkeiten definieren wir in einer Klasse Auto:
class Auto Eigenschaften: - Länge - Breite - Höhe - Radanzahl - Sitzplatzanzahl Methoden: - beschleunigen - bremsen |
![]() UML-Darstellung |
Der Lastwagen besitzt eine zusätzliche Eigenschaft max. Gewicht, der Sportwagen die Eigenschaft Beschleunigung und der städtische Autobus die Eigenschaft Anzahl der Stehplätze. Dazu benötigen die Klassen noch jeweils eigene Methoden um das spezielle Verhalten zu steuern. |
class Sportwagen erbt von Auto Eigenschaften: - Beschleunigung Methoden: keine |
Lastwagen erbt von Auto Eigenschaften: - max. Zuladung Methoden: - zuladen - entladen |
Autobus erbt von Auto Eigenschaften: - Stehplatzanzahl Methoden: - einsteigen - aussteigen |
![]() |
class Raketenauto erbt von Sportwagen Eigenschaften: keine Methoden: - beschleunigen |
![]() |
Nehmen wir die Methode beschleunigen unserer Klasse Auto. Die Methode verwendet eine weitere Methode
Treibstoff erhöhen und führt davor noch einige Prüfungen aus, wie z.B. Treibstoff vorhanden,
Drehzahl ok und Motor nicht zu heiss. Für diese Prüfungen benötigen wir noch einige
Eigenschaften, die wir ebenfalls definieren. Diese Eigenschaften verbergen wir von der Aussenwelt. Wir wollen
schliesslich nicht, das jemand der keine Ahnung hat, daran manipuliert. Die Methode beschleunigen hingegen stellen
wir öffentlich zur Verfügung und jeder der ein Objekt Auto beschleunigen will, kann sie verwenden.
class Auto Eigenschaften: - (geschützt) Treibstoffmenge - (geschützt) Drehzahl - (geschützt) Motortemperatur Methoden: - (geschützt) Treibstoff erhöhen - (öffentlich) beschleunigen wenn - Drehzahl kleiner 5000 U/min? und - Motortemperatur kleiner 90 Grad? und - Treibstoffmenge ausreichend? dann - Treibstoff erhöhen - (öffentlich) bremsen |
UML verwendet Symbole um Eigenschaften und Methoden als geschützt oder öffentlich
zu markieren (in unserem Fall einen Schlüssel). Leider sind die Symbole nicht einheitlich.
![]() UML-Darstellung |
![]() |
Unser Beispielauto entsteht in den Moment an dem es die Fabrik verlässt, hat dann hoffentlich ein langes Leben und wird beim Verschrotten endgültig zerstört. |
![]() |
auto1 = new Auto auto1.Farbe = "schwarz" auto2 = new Auto auto2.Farbe = "blau" auto3 = new Auto auto3.Farbe = "rot" | In diesem Beispiel erzeugen wir aus der Klasse Auto die drei Objekte auto1, auto2 und auto3. Den drei Objekten weisen wir in der Eigenschaft Farbe verschiedene Farben zu. Wann immer wir wollen, können wir der Eigenschaft Farbe andere Werte zuweisen. Die Objekte auto1, auto2 und auto3 nennt man auch Instanzen (Instance) der Klasse Auto. |
![]() |
// Klasse Auto definieren public class Auto { // Eigenschaften: static public int Gesamtanzahl; // Methoden: public Auto() { Gesamtzahl++; } } // Klasse Auto verwenden public void main() { auto1 = new Auto(); auto2 = new Auto(); auto3 = new Auto(); } | In diesem Beispiel verwenden wir zum erstenmal Javasyntax. Es liess sich leider nicht anders erklären. Zuerst definieren wir in der Klasse Auto die Constructor-Methode Auto(). In dieser Methode erhöhen wir die statische Variable Gesamtanzahl um eins. Das bedeutet, dass jedesmal wenn der Constructor aufgerufen wird, die Klassenvariable Gesamtzahl um eins erhöht wird. In unserem Programm (hier nur teilweise dargestellt) erzeugen wir mit dem Befehl new drei Instanzen der Klasse Auto. Beim Erzeugen der Instanz wird der Constructor immer automatisch aufgerufen und die Klassenvariable erhöht. Da die Klassenvariable für alle Instanzen nur einmal vorhanden ist, besitzt sie zum Schluss den Wert drei. Wir wissen also, wieviele Instanzen erzeugt wurde. |
weiter:![]() zurück: ![]() |
![]() ![]() |
![]() |
© 1999-2001 ![]() |