Announcement

Collapse
No announcement yet.

Klassen-Probleme !

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Klassen-Probleme !

    http://www.c-plusplus.de/ubb/ubb/forum6/html/000028.html
    bitte klickt hier drauf um mir zu antworten da die Frage so geballt ist!

    Danke Voodoo

  • #2
    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

    Working...
    X