Von der Struktur zur Klasse von C zu C++

Werbung
Von der Struktur zur Klasse von C zu C++
Von Jens Hoffmann
18. 7. 2000
14StrukturKlasse
1
Die Struktur von C
• Die Struktur umfasst immer nur einen Ausschnitt. Nur das,
was für die Bearbeitung einer Aufgabe wichtig ist, wird in
die Struktur aufgenommen.
• Die Struktur reserviert keinen Speicherplatz (dient als
Information für den Compiler)
14StrukturKlasse
2
• Beispiel für eine Struktur
struct Artikel
{
char Bezeichnung[50];
char Artnummer[20];
float Preis;
int LieferantenCode;
};
• Typendefinition mit Strukturen
In C ist der Strukturname alleine noch keine
Typenbezeichnung
typedef struct Artikel artikel
14StrukturKlasse
3
• Auch diese Anweisung reserviert noch keinen Speicherplatz. Sie sagt
dem Compiler, dass ab jetzt „artikel“ ein Datentyp ist.
• Definition von strukturierten Variablen
Da es sich
um einen Datentyp handelt, können Variable nach den gleichen
Spielregeln angelegt werden wie einfache Variablen auch
z.B. artikel CD;
14StrukturKlasse
4
• Informationsdateien
In einer Informationsdatei ist die Strukturdefinition, die
Deklarationen der Operatorfunktion und etwaige
Konstanten zusammen. Im Englischen heißen diese
Dateien „header files“
Der Anwender kann diese Informationsdatei mit Hilfe
der Präprozessoranweisung „#include“ während der
Übersetzung seiner eigenen Datei mit einlesen.
14StrukturKlasse
5
#include <stdio.h>
#ifndef RATIOHEADER
#define RATIOHEADER
struct RATIO
{
int z;
int n;
}
typedef struct RATIO ratio;
void rprint (ratio *zeiger);
ratio raddiere (ratio *r1, ratio *r2);
#endif
14StrukturKlasse
6
• Die Abfrage „#ifndef“ (if not defined /falls nicht definiert)
sucht nach dem Namen „RATIOHEADER“. Wird er nicht
gefunden, wird der Rest der Datei bearbeitet.
• Wurde die Datei während einer Übersetzung bereits einmal
eingelesen, dann ist der Name bekannt und der
Präprozessor sucht nach dem Ende der Bedingung bei
„#endif“
14StrukturKlasse
7
Probleme bei C
• Der Compiler kann den privaten Typ nicht vollständig
überprüfen
• Ordnung und korrekter Aufbau der „header“- Dateien
bleiben dem Programmierer Überlassen.
• Weiter kann man mit den Strukturen in C keine wirklichen
Datentypen definieren.
14StrukturKlasse
8
Die Klasse in C++
class artikel
{
private:
float Preis;
char Bezeichnung[40];
char EAN[20];
public:
float GibPreis ();
void SetzeEan (char *code);
};
14StrukturKlasse
9
• Die Klasse beinhaltet:
1. Die Typdefinition
2. die Deklaration der Datenelemente
3. Die Deklaration der zugelassenen Operationen
14StrukturKlasse
10
OOP
• Objekt - orientierte Programmierung
• Die Elemente einer Klasse können nun Daten - oder
Funktionsdeklarationen sein.
• Die zu einem Datenelement gehörende Funktion nennt
man nun Methoden.
14StrukturKlasse
11
#include <stdio.h>
#ifndef RATIOHEADER
#define RATIOHEADER
class ratio
{
private:
int z;
int n;
public:
void print ();
ratio addiere (ratio *r2);
};
#endif
14StrukturKlasse
12
Benennung der Informationsdatei
• Der Name der Informationsdatei variiert bei verschiedenen
Compilerherstellern. Am meisten verbreitet sind „..hpp“
und schlicht „.h“
14StrukturKlasse
13
Implementierung der Methoden
• Dem Namen der Methode muss man mit Hilfe des neuen
Bereichsoperators den Namen der zugehörigen Klasse
voranstellen. Die Zuordnung der Methode zu einer Klasse
benutzt der Compiler zur Überprüfung
14StrukturKlasse
14
#include „ratio.hpp“
void ratio::print ()
{
printf („%d / %d“,z, n);
}
ratio ratio ::addiere (ratio *op2)
}
ratio erg;
erg.z = z * op2 ->n + n * op2 ->z;
erg.n = n * op2 ->n;
return erg;
}
14StrukturKlasse
15
Herunterladen