Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Über den Autor
Vorwort zur 4. Auflage
1 Allgemeine Einführung in .NET
2 Grundlagen der Sprache C#
3 Klassendesign und Vererbung
4 Weitere .NET-Datentypen
5 Weitere Möglichkeiten von C#
6 Projektmanagement und Visual Studio 2008
7 Fehlerbehandlung und Debugging
8 LINQ
9 Multithreading und asynchrone Methodenaufrufe
10 Arbeiten mit Dateien und Streams
11 Serialisierung
12 Einige wichtige .NET-Klassen
13 Grundlagen zum Erstellen einer Windows-Anwendung
14 Die wichtigsten Steuerelemente
15 Tastatur- und Mausereignisse
16 MDI-Anwendungen
17 Grafische Programmierung mit GDI+
18 Das Drucken (Printing)
19 Steuerelemente entwickeln
20 Programmiertechniken
21 WPF – die Grundlagen
22 Die Layoutcontainer
23 Die WPF-Controls
24 Konzepte von WPF
25 ADO.NET – die Verbindung zu einer Datenbank herstellen
26 Die Datenbankabfrage
27 Der SqlDataAdapter
28 Daten im lokalen Speicher – das DataSet
29 Eine Datenbank aktualisieren
30 Stark typisierte DataSets
31 Weitergabe von Anwendungen
Stichwort

Download:
- ZIP, ca. 13,6 MB
Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Visual C# 2008 von Andreas Kuehnel
Das umfassende Handbuch
Buch: Visual C# 2008

Visual C# 2008
geb., mit DVD
1.366 S., 49,90 Euro
Galileo Computing
ISBN 978-3-8362-1172-7
Pfeil 3 Klassendesign und Vererbung
Pfeil 3.1 Einführung in die Objektorientierung
Pfeil 3.1.1 Vorteile der objektorientierten Programmierung
Pfeil 3.2 Die Klassendefinition
Pfeil 3.2.1 Die Deklaration von Objektvariablen
Pfeil 3.2.2 Zugriffsmodifizierer einer Klasse
Pfeil 3.2.3 Splitten einer Klassendefinition mit »partial«
Pfeil 3.3 Referenz- und WertetypenWertetyp
Pfeil 3.4 Die Eigenschaften eines Objekts (Felder)
Pfeil 3.4.1 Vereinfachte Objektinstanziierung
Pfeil 3.5 Arbeiten mit Objektreferenzen
Pfeil 3.5.1 Prüfen auf Initialisierung
Pfeil 3.5.2 Mehrere Referenzen auf ein Objekt
Pfeil 3.5.3 Referenzvergleiche
Pfeil 3.6 Objektmethoden
Pfeil 3.6.1 Der Aufruf einer Methode
Pfeil 3.6.2 Methoden mit Parameterliste
Pfeil 3.6.3 Rückgabewert einer Methode
Pfeil 3.6.4 Variablen in einer Methode
Pfeil 3.6.5 Zugriffsmodifizierer einer Methode
Pfeil 3.6.6 Besondere Aspekte einer Parameterliste
Pfeil 3.6.7 Referenz- und Wertparameter
Pfeil 3.6.8 Methodenüberladung
Pfeil 3.6.9 Aufruf überladener Methoden mit impliziter Konvertierung
Pfeil 3.7 Objekteigenschaften
Pfeil 3.7.1 Datenkapselung mit Eigenschaftsmethoden sicherstellen
Pfeil 3.7.2 Die Ergänzung der Klasse »Circle«
Pfeil 3.7.3 Lese- und schreibgeschützte Eigenschaften
Pfeil 3.7.4 Sichtbarkeit der Accessoren »get-Accessor« und »set-Accessor«
Pfeil 3.7.5 Automatisch implementierte Eigenschaften
Pfeil 3.7.6 Konstanten in einer Klasse
Pfeil 3.7.7 Methode oder Eigenschaft?
Pfeil 3.7.8 Die Trennung von Daten und Code
Pfeil 3.7.9 Der Zugriff auf private Daten
Pfeil 3.8 Konstruktoren
Pfeil 3.8.1 Die Konstruktoren in der Klasse »Circle«
Pfeil 3.8.2 Die Konstruktoraufrufe
Pfeil 3.8.3 Definition von Konstruktoren
Pfeil 3.8.4 »internal«-Konstruktoren
Pfeil 3.8.5 »private«-Konstruktoren
Pfeil 3.8.6 Konstruktorverkettung
Pfeil 3.9 Der Destruktor
Pfeil 3.9.1 Das Zerstören von Objekten
Pfeil 3.9.2 Der Garbage Collector
Pfeil 3.9.3 Die Bereitstellung eines Destruktors
Pfeil 3.9.4 Das Zerstören eines Objekts
Pfeil 3.9.5 Die »Dispose«-Methode
Pfeil 3.9.6 Der Garbage Collector in Aktion
Pfeil 3.10 Statische Klassenkomponenten
Pfeil 3.10.1 Begrifflichkeiten
Pfeil 3.10.2 Die Realisierung eines Objektzählers
Pfeil 3.10.3 Zugriff auf statische Komponenten
Pfeil 3.10.4 Statische Klassenvariable in der Klasse »Circle«
Pfeil 3.10.5 Klassenspezifische Methoden
Pfeil 3.10.6 Statische Klasseninitialisierer
Pfeil 3.10.7 Statische Klassen
Pfeil 3.10.8 Stand der Klasse »Circle«
Pfeil 3.11 Die Vererbung
Pfeil 3.11.1 Basisklassen und abgeleitete Klassen
Pfeil 3.11.2 Die Ableitung einer Klasse
Pfeil 3.11.3 Klassen, die nicht abgeleitet werden können
Pfeil 3.11.4 Konstruktoren in abgeleiteten Klassen
Pfeil 3.11.5 Der Zugriffsmodifizierer »protected«
Pfeil 3.11.6 Die Konstruktorverkettung in der Vererbung
Pfeil 3.11.7 Destruktor-Verkettung in der Vererbung
Pfeil 3.11.8 Die Methoden in einer abgeleiteten Klasse
Pfeil 3.11.9 Überladen einer Basisklassenmethode
Pfeil 3.11.10 Typumwandlung von Objektvariablen
Pfeil 3.12 Abstrakte Klassen und Methoden
Pfeil 3.12.1 Problembeschreibung
Pfeil 3.12.2 Abstrakte Definitionen
Pfeil 3.13 Polymorphismus
Pfeil 3.13.1 Virtuelle Methoden
Pfeil 3.13.2 Inhomogene Mengen
Pfeil 3.13.3 Verdecken und Überschreiben geerbter Methoden
Pfeil 3.13.4 Versiegelte Methoden
Pfeil 3.13.5 Das Projekt »CircleApplication« ergänzen
Pfeil 3.14 Hat-eine-Beziehungen (Aggregation)
Pfeil 3.14.1 Innere Klassen
Pfeil 3.15 Namensräume (Namespaces)
Pfeil 3.15.1 Zugriff auf Namespaces
Pfeil 3.15.2 Die »using«-Direktive
Pfeil 3.15.3 Vermeiden von Mehrdeutigkeiten
Pfeil 3.15.4 Aufrufe mit dem »::«-Operator umleiten
Pfeil 3.15.5 Namespaces festlegen

3 Klassendesign und Vererbung


Galileo Computing - Zum Seitenanfang

3.1 Einführung in die Objektorientierung Zur nächsten ÜberschriftZur vorigen Überschrift

Die beiden wichtigsten Begriffe, die im Mittelpunkt der objektorientierten Betrachtungen stehen, sind die der Klasse und des Objekts. Was ist darunter zu verstehen?

Stellen Sie sich ein Architekturbüro vor, das ein Einfamilienwohnhaus plant und den Bauplan als Ergebnis aller anfänglichen Forderungen und der daraus resultierenden Berechnungen zeichnet. Der Bauplan enthält die Abmessungen des Grundrisses der einzelnen Etagen, die Angaben, wo Fenster und Türen eingebaut werden, die Mauerdicken, die Lage der Elektroverkabelung, der Heizungsrohre usw. Der fertige und freigegebene Bauplan dient anschließend als Vorlage für die Bauausführung. Vielleicht hat der Architekt sogar die Möglichkeit, den Bauplan mehrfach zu benutzen, um darauf basierend ein zweites oder gar ein drittes Haus zu erstellen. Die Häuser müssen nicht identisch sein, sie können sich in Einzelheiten unterscheiden: Die Außenfassade des ersten Hauses mag geputzt sein, die des zweiten geklinkert, ein Haus wird mit einer Ölheizung ausgestattet, das andere nutzt Fernwärme.

Der Bauplan dient also nur als Vorlage. Er ist also im weitestgehenden Sinn eine Schablone, die zur Realisierung konkreter Häuser dient. Projiziert auf die objektorientierte Welt, ist der Bauplan als eine Klasse zu verstehen und ein fertig gebautes Haus als ein Objekt. Liegt ein Bauplan (= Klasse) vor, kann er dazu dienen, beliebig viele Häuser (= Objekte) zu erstellen, die sich durchaus unterscheiden dürfen.

In der objektorientierten Programmierung spricht man von einem Objekt oder auch von einem konkreten Objekt, wenn aus der Klassendefinition heraus etwas »Gegenständliches« erzeugt wird. Ein weiterer, häufig benutzter Begriff ist der der Klasseninstanz oder einfach nur Instanz. Sie können diese Begriffe synonym nebeneinander verwenden, sie besagen dasselbe.

Ein Objekt wird durch bestimmte, charakteristische Merkmale beschrieben, die in der Klassendefinition festgelegt werden müssen. Diese werden als Eigenschaften bezeichnet. Beispielsweise könnte ein Objekt vom Typ Person im Rahmen der anwendungsspezifischen Forderungen durch den Namen der Person, deren Augenfarbe, Schuhgröße und das Geschlecht ausreichend beschrieben werden.

Im einfachsten Fall wird eine Eigenschaft als Variable innerhalb der Klassenstruktur definiert und als Feld bezeichnet, wie beispielsweise Name im folgenden Codefragment der Klasse Person:

class Person { 
  public string Name; 
}

Ein Objekt wäre demnach beispielsweise itsme:

Person itsme = new Person();

Wie in C# üblich, wird zuerst der Datentyp angegeben. Eine Klassendefinition müssen Sie dabei grundsätzlich immer als die Beschreibung eines eigenen Datentyps verstehen. Person ist daher ein Datentyp, genauso wie String oder Integer. Der Typangabe folgt der Variablenbezeichner. Mit dem Schlüsselwort new wird das Objekt schließlich konkretisiert. Dabei wird ein sogenannter Konstruktor aufgerufen.

Eine Klasse abstrahiert Objekte aber nicht nur in der Weise, dass Objekte gleichen Typs nur durch die in der Klasse definierten Eigenschaften beschrieben werden. Objekte können auch Operationen ausführen, beispielsweise um die Eigenschaften zu manipulieren. Stellen Sie sich vor, Sie würden die Klasse Auto entwickeln. Ein Objekt vom Typ Auto besitzt Eigenschaften wie AnzahlDerRäder, Hubraum und Farbe, aber ein Auto-Objekt kann noch viel mehr: Es kann mit einer bestimmten Geschwindigkeit von A nach B fahren, beim Auftreten einer sich anbahnenden, verkehrsgefährdenden Situation kann es hupen. Fahren und Hupen können nicht durch Eigenschaften beschrieben werden. Es sind vielmehr Operationen, die das Verhalten eines Autos beschreiben. Im objektorientierten Sprachgebrauch wird eine von einem Objekt ausgeführte Operation auch als Methode bezeichnet.

Abbildung 3.1 Die Klasse »Auto«

Methoden werden in einer Klassenstruktur als Prozedur definiert, ähnlich wie Main einer Konsolenanwendung. Das folgende Codefragment demonstriert die Klasse Auto mit den drei Feldern Farbe, AnzahlDerRäder und Hubraum sowie der Methode Fahren:

class Auto { 
  public int Farbe; 
  public int AnzahlDerRäder; 
  public float Hubraum;

  public void Fahren() { 
    // Anweisungen 
  } 
}

Jetzt wollen wir uns ansehen, wie wir mit der Klasse arbeiten. Dazu wird die Methode Main wie folgt codiert:

static void Main(string[] args) { 
  Auto myCar = new Auto(); 
  // Festlegung des Hubraums 
  myCar.Hubraum = 2995; 
  // das Auto-Objekt fahren lassen 
  myCar.Fahren(); 
}

Zuerst besorgen wir uns ein Objekt vom Typ Auto. Das Objekt heißt im weiteren Verlauf myCar und hat die Eigenschaften Farbe, AnzahlDerRäder und Hubraum. Alle Eigenschaften müssen nicht unbedingt auf einen objektspezifischen Wert festgelegt werden, sondern nur die, die notwendig sind. Hier ist es nur die Eigenschaft Hubraum, der ein Wert zugewiesen wird. Anschließend wird die Methode Fahren aufgerufen. Beachten Sie den Punktoperator, der dazu dient, eine Eigenschaft oder Methode auf ein bestimmtes Objekt aufzurufen. Handelt es sich um eine Eigenschaft, muss ihr mit dem Zuweisungsoperator noch der gewünschte Wert zugewiesen werden.

Spielen mehrere konkrete Auto-Objekte im Programm eine Rolle, muss die Klasse Auto wiederholt instanziiert werden. Im folgenden Code liegen zwei Objekte vor: myCar und yourCar. Beide unterscheiden sich im Hubraum.

Auto myCar = new Auto(); 
myCar.Hubraum = 2995; 
Auto yourCar = new Auto(); 
yourCar.Hubraum = 1599;

Galileo Computing - Zum Seitenanfang

3.1.1 Vorteile der objektorientierten Programmierung topZur vorigen Überschrift

Die objektorientierte Programmierung mit allen ihren dahinter stehenden Konzepten ist nicht einfach zu lernen. Dennoch hat sich das Konzept in den vergangenen Jahren in nahezu allen Programmiersprachen durchgesetzt. Wenn alle Welt davon spricht und der objektorientierte Ansatz in aller Munde ist, muss es für ihn ein paar schlagkräftige Argumente geben.

Wiederverwendbarkeit: Klassen modularisieren eine Anwendung in unabhängige Einheiten. Sie verwalten zusammengehörende Daten und gruppieren ähnliche Methoden. Klassen können bausteinähnlich in verschiedenen Programmen – in der .NET-Laufzeitumgebung sogar vollkommen unabhängig von der verwendeten Programmiersprache – gleichwertig eingesetzt werden. Als Konsequenz dessen ändert sich auch der Arbeitsablauf der Programmierung: Programme müssen nicht mehr in allen Einzelheiten neu geschrieben werden, sie werden zu einem großen Teil aus fertigen Komponenten zusammengesetzt – vergleichbar mit der Entwicklung und dem Zusammenbau eines Motors, bei dem im Wesentlichen genormte Maschinenteile (Schrauben, Bolzen etc.) zum Einsatz kommen.

Wartungsaufwand: Eine Klasse kann als eigene, separate und unabhängige Einheit getestet werden. Es ist vollkommen ausreichend, die Klassenimplementierung nur einmal ausgiebig zu testen. Verläuft der Test positiv, wird die Klasse mit jeder Anwendung zufriedenstellend zusammenarbeiten. Das Testen im Umfeld mehrerer Anwendungen entfällt und stellt damit die Effizienz der Programmierung sicher.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






<< zurück
  Zum Katalog
Zum Katalog: Visual C# 2008






Visual C# 2008
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Coding for Fun






 Coding for Fun


Zum Katalog: Einstieg in Visual C# 2008






 Einstieg in
 Visual C# 2008


Zum Katalog: Videotraining - Visual C# 2008






 Videotraining -
 Visual C# 2008


Zum Katalog: Fortgeschrittene Programmierung mit Visual C# 2008






 Fortgeschrittene
 Programmierung mit
 Visual C# 2008


Zum Katalog: Windows Presentation Foundation






 Windows Presentation
 Foundation


Zum Katalog: Visual Basic 2008






 Visual Basic 2008


Zum Katalog: Einstieg in XML






 Einstieg in XML


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de