Einführung in die objektorientierte Programmierung: Unterschied zwischen den Versionen
K (→Objekte) |
(→Datentyp: table+ table+ table+) |
||
Zeile 103: | Zeile 103: | ||
}} | }} | ||
− | + | Vielleicht haben sich bei dir Probleme beim Erstellen der Objektkarte ergeben. Es ist leicht passende Attribute für ein Objekt zu definieren. Schwieriger wird es bei den Attributwerten. In der Beispiellösung steht im Attribut "größe" der Wert "151 cm". Wenn wir uns zu Beginn darauf einigen, dass im Attribut nur eine Zahl steht, die der Körpergröße in "cm" entspricht, dann können wir die Einheit beim Speichern vernachlässigen. So ähnlich funktioniert das auch mit anderen sog. Datentypen. | |
+ | === Datentyp === | ||
+ | Es gibt folgende Datentypen für unsere Programmiersprache C#: | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | | Typname || Beschreibung || Wertebereich | ||
+ | |- | ||
+ | | <tt>byte</tt> || ganze Zahl || -2<sup>7</sup>, ..., 2<sup>7</sup>-1 (-128, ...,127) | ||
+ | |- | ||
+ | | <tt>short</tt> || ganze Zahl || -2<sup>15</sup>, ..., 2<sup>15</sup>-1 (-32768, ...,32767) | ||
+ | |- | ||
+ | | <tt>int</tt> || ganze Zahl || -2<sup>31</sup>, ..., 2<sup>31</sup>-1 (-2 147 483 648, ...,2 147 483 647) | ||
+ | |- | ||
+ | | <tt>long</tt> || ganze Zahl || -2<sup>63</sup>, ..., 2<sup>63</sup>-1 (-9 223 372 036 854 775 808, ..., 9 223 372 036 854 775 807) | ||
+ | |- | ||
+ | | <tt>float</tt> || Fließkommazahl || -3,4028*10<sup>38</sup>, ..., 3,4028*10<sup>38</sup> | ||
+ | |- | ||
+ | | <tt>double</tt> || Fließkommazahl || -1,7977*10<sup>308</sup>, ..., 1,7977*10<sup>308</sup> | ||
+ | |- | ||
+ | | <tt>char</tt> || einzelnes Zeichen || alle (Unicode-) Zeichen, z.B. 'a','b',...,'A',...,'1',...,'?',... | ||
+ | |- | ||
+ | | <tt>string</tt> || Zeichenkette mit beliebigen (Unicode-) Zeichen || z.B. "Hallo!", "Schumacher, Michael", usw. | ||
+ | |- | ||
+ | | <tt>boolean</tt> || Boole'scher Wert, der nur Wahr oder Falsch sein kann || <tt>true</tt>, <tt>false</tt> | ||
+ | |- | ||
+ | |} | ||
+ | Fangen wir wir mit der kleinsten Einheit an: 1 Bit (wahr ist 1, falsch ist 0). | ||
=== Modell === | === Modell === |
Version vom 14. Januar 2010, 11:57 Uhr
Lernpfad
|
Grundbegriffe der Programmierung
Ingenieure und Entwickler strukturieren sich ihre Aufgaben in dem sie die Informationen aus einer objektorientierten Sichtweise betrachten. Dabei fassen sie alle Dinge, die in der realen Welt existieren, als Objekte auf, um ihre Problemstellung zu bewältigen. Wie wir später sehen werden, lassen sie ihre Objekte für sich arbeiten, indem sie ihnen ein bestimmtes Verhalten programmieren.
Objekte
Definition
Objekte sind Dinge, Lebewesen oder Sachverhalte in der uns umgebenden realen oder auch virtuellen Welt. Gleichartige Objekte werden unter einem Begriff zusammengefasst (siehe nächsten Absatz).
Nehmen wir uns ein Beispiel: das Rennauto von Michael Schumacher aus seiner Weltmeistersaison 2004. Das Objekt hat verschiedene Attribute mit jeweiligen Attributwerten. In der ersten Zeile steht der Objektname, getrennt durch eine horizontale Linie folgen die Attribute mit ihren Attributwerten.
Betrachten wir die geometrischen Körper Quader und Würfel. Jeder Körper baut sich aus 6 Flächen zusammen.
Wir erstellen uns ein Objekt "Fläche" mit zwei Attributen: Länge und Breite. Beide Attribute können verschiedene Werte annehmen.
Gibt es eine Möglichkeit aus 6 Objekten "Fläche" den Körper ...
... Würfel zu bauen, egal welche Werte die Attribute haben? (!ja) (nein)
... Würfel zu bauen, wenn alle Flächen gleich sind? (!ja ) (nein)
... Quader zu bauen, wenn gilt: 2 Flächen mit Länge = Breite = 4 cm, 4 Flächen mit Länge = 6 cm und Breite = 4 cm? (ja) (!nein)
Lösung
- Gibt es eine Möglichkeit aus 6 Objekten "Fläche" den Körper Würfel zu bauen, egal welche Werte die Attribute haben? - Nein!
Begründung: Für den Bau eines Würfels müssen alle Flächen die gleiche Breite und Länge besitzen. Die Aufgabenstellung lässt eine Interpretation offen, bei der alle Flächen unterschiedlich sind, so dass kein Würfel gebaut werden kann.
- Gibt es eine Möglichkeit aus 6 Objekten "Fläche" den Körper Würfel zu bauen, wenn alle Flächen gleich sind? - Nein!
Begründung: Ein Gegenbeispiel lässt sich leicht überlegen. Mit einer Länge 3 cm und einer Breite 5 cm lässt sich kein Würfel bauen.
- Gibt es eine Möglichkeit aus 6 Objekten "Fläche" den Körper Quader zu bauen, wenn gilt: 2 Flächen mit Länge Breite 4 cm, 4 Flächen mit Länge 6 cm und Breite 4 cm? - Ja!
Begründung: Setzt man die 4 Flächen in einem Winkel von 90° an der Längskante (6 cm) zusammen, dann bildet sich mit den zwei anderen Flächen ein Quader.
Klasse
Sicherlich hast du in deinem Biologieunterricht verschiedene Tierarten behandelt. Genauso wie in der Tierwelt, werden in der Informatik Dinge mit gleicher Eigenschaft zu einer Klasse zusammengefasst. Wir können auch sagen, dass es das Grundgerüst eines (realen) Objektes ist. Dieses Grundgerüst gibt uns, wie bei den Objekten, bereits einige Attributfelder vor, die wir nun mit bestimmten Werten besetzen können. Mit dem Beispiel von Michael Schumacher wollen wir uns folgenden Unterschied klarmachen:
Jedes Rennauto ist auch ein Auto, aber nicht jedes Auto ist ein Rennauto. Nehmen wir an, dass die Klasse "Auto" schon existiert. Sie enthält schon Attribute , wie Baujahr, PS und Farbe. Andere Attribute, wie den Rennstall, müssen wir der Klasse "Auto" selbst hinzufügen.
Beachte in der nächsten Aufgabe, dass es noch Unterklassen gibt, wo der Begriff besser zuzuordnen ist.
Arbeitsauftrag
Ordne die Klassen unten den richtigen Oberklassen zu.
Klasse: Tierarten | Einzeller | Vögel | Säugetiere | Wirbellose Tier |
Klasse: Säugetiere | Delfine | Raubtiere | Paarhufer | |
Klasse: Insekt | Ameisen | Flöhe | Hornissen | Schmetterlinge |
Klasse: Nagetiere | Biber | Eichhörnchen | Murmeltier |
Bis jetzt haben wir uns nur mit den Objekten und Klassen beschäftigt. Um mit ihnen zu arbeiten, brauchen wir noch ein paar weitere Grundbegriffe aus der Informatik.
Algorithmus
Les dir zuerst die Defintion des Begriffes durch, bevor du dir das Beispiel zum besseren Verständnis anschaust.
Definition
Ein Algorithmus ist eine Rechenvorschrift bei der in endlich vielen Schritten eine Aufgabe mit ausführbaren Anweisungen gelöst wird.
Im Alltag eines Schülers ist der Tagesbeginn mit einem Algorithmus zu vergleichen. Vom Aufstehen bis zum Erreichen der Schule ist das eine feste Vorschrift, welche täglich durchgeführt wird:
1. Der Wecker klingelt.
2. Der Wecker wird ausgeschalten und das Licht angeschaltet.
3. Das Frühstück wird vorbereitet und anschießend gegessen.
4. Im Bad Zähne putzen.
5. Die Wohnung verlassen und per Bus/Bahn/Auto zur Schule fahren.
6. Die Schule ist erreicht.
Arbeitsauftrag
Die Konstruktion einer Mittelsenkrechten zwischen den Punkten A und B kann als Algorithmus aufgefasst werden. Sortiere die Schritte in der richtigen Reihenfolge ein.
1. Schritt: Punkte A und B verbinden
2. Schritt: Kreise um A und B mit passendem Radius
3. Schritt: Schnittpunkte der Kreise verbinden
In beiden Algorithmen gibt es Aktionen bzw. Tätigkeiten, die der Schüler s ausführt (mit s wollen wir in Zukunft die Klasse Schüler vom Objekt "Schüler" bezeichnen). Eine Aktion, die ein Objekt besitzt, wird Methode genannt. Alle Methoden, die zu einem Objekt gehören, sind in der Objektkarte eingetragen.
Für den Schüler ergeben sich somit z.B. die Methoden s.weckerAusschalten(), s.frühstücken(), s. zähnePutzen() und s.bahnFahren(). Sie werden wie in der Grafik notiert.
Arbeitsauftrag
In der Objektkarte von Michael Schumacher fehlen noch passende Methoden für ein Rennauto. Erstelle dir selbst eine Objektkarte "Rennauto" und ergänze fehlende sinnvolle Attribute mit Attributwerten sowie mindestens 3 Methoden! |
Vielleicht haben sich bei dir Probleme beim Erstellen der Objektkarte ergeben. Es ist leicht passende Attribute für ein Objekt zu definieren. Schwieriger wird es bei den Attributwerten. In der Beispiellösung steht im Attribut "größe" der Wert "151 cm". Wenn wir uns zu Beginn darauf einigen, dass im Attribut nur eine Zahl steht, die der Körpergröße in "cm" entspricht, dann können wir die Einheit beim Speichern vernachlässigen. So ähnlich funktioniert das auch mit anderen sog. Datentypen.
Datentyp
Es gibt folgende Datentypen für unsere Programmiersprache C#:
Typname | Beschreibung | Wertebereich |
byte | ganze Zahl | -27, ..., 27-1 (-128, ...,127) |
short | ganze Zahl | -215, ..., 215-1 (-32768, ...,32767) |
int | ganze Zahl | -231, ..., 231-1 (-2 147 483 648, ...,2 147 483 647) |
long | ganze Zahl | -263, ..., 263-1 (-9 223 372 036 854 775 808, ..., 9 223 372 036 854 775 807) |
float | Fließkommazahl | -3,4028*1038, ..., 3,4028*1038 |
double | Fließkommazahl | -1,7977*10308, ..., 1,7977*10308 |
char | einzelnes Zeichen | alle (Unicode-) Zeichen, z.B. 'a','b',...,'A',...,'1',...,'?',... |
string | Zeichenkette mit beliebigen (Unicode-) Zeichen | z.B. "Hallo!", "Schumacher, Michael", usw. |
boolean | Boole'scher Wert, der nur Wahr oder Falsch sein kann | true, false |
Fangen wir wir mit der kleinsten Einheit an: 1 Bit (wahr ist 1, falsch ist 0).