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

Inhaltsverzeichnis
1 Einleitung
2 Die Basis der Objektorientierung
3 Die Prinzipien des objektorientierten Entwurfs
4 Die Struktur objektorientierter Software
5 Vererbung und Polymorphie
6 Persistenz
7 Abläufe in einem objektorientierten System
8 Module und Architektur
9 Aspekte und Objektorientierung
10 Objektorientierung am Beispiel: Eine Web-Applikation mit PHP 5 und Ajax
A Verwendete Programmiersprachen
B Literaturverzeichnis
Stichwort
Ihre Meinung?

Spacer
 <<   zurück
Objektorientierte Programmierung von Bernhard Lahres, Gregor Rayman
Das umfassende Handbuch
Buch: Objektorientierte Programmierung

Objektorientierte Programmierung
2., aktualisierte und erweiterte Auflage, geb.
656 S., 49,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1401-8
Pfeil A Verwendete Programmiersprachen
  Pfeil A.1 C++
  Pfeil A.2 Java
  Pfeil A.3 C#
  Pfeil A.4 JavaScript
  Pfeil A.5 CLOS
  Pfeil A.6 Python
  Pfeil A.7 Ruby

Wir haben in den Beispielen dieses Buchs eine ganze Reihe von Programmiersprachen verwendet. In diesem Anhang geben wir zu jeder dieser Sprachen eine sehr kurze Beschreibung und stellen deren grundlegende Eigenschaften mit Bezug zur Objektorientierung vor. Außerdem geben wir Verweise auf weitere Informationen zu diesen Sprachen und womöglich auf freie Software, mit der Compiler, Interpreter oder komplette Entwicklungsumgebungen für diese Sprachen umgesetzt wurden.

A Verwendete Programmiersprachen

Wir stellen die verwendeten Programmiersprachen hier sehr kurz mit ihrem Steckbrief vor. Dabei geben wir nur einen ganz knappen Abriss. Jede Sprache wird mit ihren Basiskonstrukten, die relevant für die objektorientierten Eigenschaften sind, vorgestellt.


Rheinwerk Computing - Zum Seitenanfang

A.1 C++  topZur vorigen Überschrift

C++ wurde von Bjarne Stroustrup als objektorientierte Erweiterung zur Programmiersprache C entwickelt. Bis Ende der 90er-Jahre war C++ die meistverwendete objektorientierte Programmiersprache. Danach wurde C++ in dieser Position von Java abgelöst.

Die Struktur von C++

Klassen werden in C++ mit dem Schlüsselwort class eingeführt. Alternativ kann auch das Schlüsselwort struct verwendet werden, dies ist aber für Klassen unüblich. class und struct unterscheiden sich nur in der Sichtbarkeitsstufe, die als Voreinstellung gilt: Bei Verwendung von class ist diese private, bei Verwendung von struct ist diese public.

C++ unterscheidet nicht zwischen reiner Vererbung von Schnittstellen und der Vererbung von Schnittstelle und Implementierung. Durch die Angabe einer Klasse nach dem Klassennamen wird eine Vererbungsbeziehung etabliert. C++ unterstützt die Mehrfachvererbung von Schnittstellen und von implementierenden Klassen. Bei der Deklaration einer Klasse kann eine Liste von Klassen aufgeführt werden, die als Basisklassen agieren.

Operationen werden darüber eingeführt, dass sie zusammen mit der Klasse deklariert werden. Wenn Operationen polymorph agieren sollen, muss das bei der ersten Deklaration einer Methode über das Schlüsselwort virtual erfolgen.

Ist nichts anderes angegeben, gilt für alle Elemente, die innerhalb einer Klasse (über class deklariert) deklariert werden, die Sichtbarkeitsstufe private. Neben den weiteren Sichtbarkeitsstufen protected und public kennt C++ auch die Beziehung friend zwischen zwei Klassen. Wenn Klasse B als friend von A definiert ist, können Exemplare von B auf private Datenelemente und Methoden von A zugreifen.

Die Syntax von C++

Wir stellen die Syntax von C++ an einem einfachen Beispiel vor. Die Klasse VersionNumber erbt dabei von einer Klasse StructuredName und implementiert eine Schnittstelle, die von der Klasse Comparable vorgegeben wird.

class StructuredName  
{ /* ... */ }; 
 
class Comparable  
{ 
    public: 
      virtual int compareTo(const Comparable& other) = 0;  
}; 
 
class VersionNumber : public StructuredName, Comparable  
{
private: 
    list<string> parts;     
 
public: 
    VersionNumber(list<string> parts)  
    { 
        this->parts = parts; 
    } 
    virtual ~VersionNumber() {}; 
    virtual string toString();   
    virtual int compareTo(const Comparable& other); 
 
 };
string VersionNumber::toString()   
{ 
    string result = ""; 
    list<string>::const_iterator iter;   
    for (iter=parts.begin(); iter!=parts.end();iter++) 
    { 
        if (iter != parts.begin()) 
            result += "."; 
        result += *iter; 
    } 
    return result; 
}

int main() 
{ 
    list<string> parts; 
    parts.push_back("6"); 
    parts.push_back("0"); 
    parts.push_back("2800"); 
    parts.push_back("1106"); 
    VersionNumber v(parts);  
    VersionNumber *p = new VersionNumber(parts); 
    cout << v.toString(); 
    cout << p->toString(); 
}
  • Wir deklarieren eine Klasse StructuredName.
  • Wir deklarieren eine abstrakte Klasse Comparable.
  • Diese spezifiziert eine Operation compareTo, die über den Ausdruck = 0 als abstrakt markiert wird.
  • Die Klasse VersionNumber erbt von beiden genannten Klassen.
  • Die Instanzvariable parts enthält eine Liste von Strings.
  • Bei der Konstruktion wird eine Liste von Strings übergeben, die der Instanzvariablen parts zugewiesen wird.
  • Die Operation toString wird mit dem Schlüsselwort virtual markiert. Damit unterliegt sie der Polymorphie und kann in abgeleiteten Klassen überschrieben werden.
  • Da die Umsetzung der Methode toString für die Klasse VersionNumber außerhalb der Klassendeklaration erfolgt, muss der durch die Klasse vorgegebene Namensraum als VersionNumber:: der Methodenimplementierung vorangestellt werden.
  • Über einen Iterator geht das Programm alle Elemente der Liste parts durch.
  • Hier sehen wir zwei unterschiedliche Möglichkeiten der Objektkonstruktion. Zum einen haben wir die lokale Variable v vom Typ VersionNumber mit einem Exemplar von VersionNumber initialisiert. Zum anderen haben wir der Variablen p einen Zeiger auf ein Exemplar von VersionNumber zugewiesen, wobei das Objekt auf dem Heap angelegt wurde. Mit dem Operator -> kann eine Operation auf dem Objekt aufgerufen werden, auf das ein Zeiger verweist.

Ressourcen

Der am weitesten verbreitete freie Compiler für C++ ist derjenige, der als Teil des GNU-Projekts unter http://gcc.gnu.org/ zur Verfügung steht. Der Compiler steht für eine breite Palette an Plattformen zur Verfügung. Eine Integration in die Eclipse-Entwicklungsumgebung ist über das CDT-Projekt (C/C++ Development Tools) verfügbar. CDT integriert den GNU-C++-Compiler (oder auch andere Compiler) in die Eclipse-Umgebung. CDT ist verfügbar unter http://www.eclipse.org/cdt/.



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

 <<   zurück
  Zum Rheinwerk-Shop
Neuauflage: Objektorientierte Programmierung






Neuauflage:
Objektorientierte Programmierung

Jetzt Buch bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Rheinwerk-Shop: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: C++ Handbuch






 C++ Handbuch


Zum Rheinwerk-Shop: Einstieg in Python






 Einstieg in Python


Zum Rheinwerk-Shop: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2009
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.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern