Wenn dies Ihr erster Besuch hier ist,
lesen Sie bitte zuerst die Hilfe - Häufig gestellte Fragen
durch. Sie müssen sich vermutlich registrieren,
bevor Sie Beiträge verfassen können. Klicken Sie oben auf 'Registrieren', um den Registrierungsprozess zu
starten. Sie können auch jetzt schon Beiträge lesen. Suchen Sie sich einfach das Forum aus, das Sie am meisten
interessiert.
hallo vinzenz,
die fragen die du hast, beziehen sich auf das oberthema object orientierte programmierung. die in den
80ern erfunden wurde um sehr komplexe softwaresystem realisieren zu können. die schlagworte von oop
sind:
-polymorphie
-vererbung
-datenkapselung
dies jetzt alles in einer kurtzen antwort zu erklären ist sehr schwierig. ich habe zwei monate gebraucht um
oop zu verstehen. mit oop soll es ermöglicht werden, sachverhalte aus der realen welt im code abzubilden.
die vielgestalitkeit (polymorphi) ermöglicht es einen code zu schreiben, der je nach dem von welchem obect er
aufgerufen wird entsprechend zu reagieren. hierbei werden vererbungshierarchien eingesetzt. die oberste
klasse dieser hierarchie nennt man basisklasse, sie sollte so allgemein wie möglich gehalten werden.
es könnte z. b. eine klasse fahrzeug gehen, eine davon abgeleitete klasse fahrrad, sowie eine abgeleitete klasse a
auto und motorrad. die basisklasse fahrzeug enthält methoden (funktionen) welche allen fahrzeugen gemin ist.
jedes fahrzeug hat eine geschwindigkeit, kann bremsen, kann beschleunigen, hat eine farbe, etc.
da aber ein auto andere beschleunigungswerte als ein fahrrad hat, kommt nun die polimorphy zum einsatz.
die methode beschleunigen der basisklasse fahrzeug wird als virual deklariert, dies bedeutet das sie von den
nachfahren, als fahrrad und auto, überschrieben wird. nun kannst du in deinem source z. b. ein object auto
und ein object fahrrad definieren die in programm an unterschiedlichen stellen verwendet werden. wird nun
die methode beschleunigen (oder bremsen oder was weiß der kukuk) aufgerufen, weiß das object wie es sich
zu beschleunigen hat, je nachdem von welchem objcet die methode beschleunigen aufgerufen wird.
die methode wird in der regel mit auto->beschleunigen (fahrrad->beschleunigen) aufgerufen. man nennt so etwas
auch intelligenten code. den -> oder den . benötigt man um den gültigkeitsbereich (scope) festzulegen. somit
weiß der compiler um welches object es sich handelt und ruft entsprechen die richtigen mehtoden auf.
konstruktoren werden dafür benötigt, um die objecte vor ihrem ersten auftritt mit korrekten werten zu ini-
tialisieren. so könnte ein konstruktor in dem oberen bsp. folgendermaßen aussehen:
auto::auto(longint color)
{
m_farbe = color;
}
das object wird also beim erzeugen mit der farbe initialisiert die dem konstruktor als parameter über-
geben wird.
ein destruktor ist das gegenstück zum konstruktor. damit ein object nach dessen verwendung nicht
hilflso im ram herumspukt wird es quasi zerstört.
pointer: ein zeiger enthält die adresse einer variablen. du kennst sicherlich die unter windows üblichen
verknüpfungen. du kannst z. b. auf dem desktop eine verknüpfung zu word anlegen. diese verknpfung
enhält lediglich die adresse des z. b. auszuführenden programmes hinter dem text "ziel:". so ist es auch
mit einem pointer. dieser enthält die adresse einer variablen. es gibt typisierte und untypiesierte pointer
(zumindest in delphi). ein typisierter pointer kann z. b. auf eine variable vom typ byte zeigen.
du hast eine variable vom typ byte auf diese setzt du nun deinen pointer. dieser zeigt nun auf die adresse
dieses bytes und somit auf dessen inhalt. jetzt kannst du bei bedarf den pointer auch auf eine andere vari-
able vom typ point zeigen lassen.
wie gesagt dies sind die themen oop und pointer-arithmentik, die so ausführlich sind, das sie nicht komplett
mit ein paar zeilen abgehandelt werden können. ich hoffe das du zumindest ungefähr weisst um was
es hierbei geht. um umfangreiche bücher, welche diese themen behandeln wirst du aber nicht herum
kommen. mach dir nix daraus wenn du diese dinge nicht auf anhieb verstanden hast, es gibt leute die
sich monatelang damit herumschlagen und trotzdem noch nicht alles vestanden haben. am besten
du besorgst dir ein gutes buch mit praxisbeispielen zu diesem thema.
auch die klassen des cpp-builders sind nach diesen
Comment