Galileo Computing < openbook > Galileo 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

Download:
- ZIP, ca. 5,2 MB
Buch bestellen
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
Galileo 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.


Galileo 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/.



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: Objektorientierte Programmierung






Objektorientierte Programmierung
Jetzt bestellen


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

 Tipp
Zum Katalog: Coding for Fun







 Coding for Fun


 Buchempfehlungen
Zum Katalog: UML 2.0






 UML 2.0


Zum Katalog: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Katalog: Visual Basic 2008






 Visual Basic 2008


Zum Katalog: Visual C# 2008






 Visual C# 2008


Zum Katalog: C/C++






 C/C++


Zum Katalog: C++ von A bis Z






 C++ von A bis Z


Zum Katalog: PHP 5.3 und MySQL 5.1






 PHP 5.3 und
 MySQL 5.1


Zum Katalog: Python 3






 Python 3


Zum Katalog: Besser PHP programmieren






 Besser PHP
 programmieren


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 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.


[Galileo Computing]

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