Was ist OOP eigentlich?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
DeJe
User
Beiträge: 39
Registriert: Sonntag 23. November 2008, 19:38

Beitragvon DeJe » Donnerstag 11. Dezember 2008, 18:31

BlackJack hat geschrieben:@DeJe: Nochmal: Man ist damit *nicht flexibel*! Dann hat man mehrere Datentypen und mehrere Funktionen wo in jeder ein ``switch`` steckt. Wenn man einen weiteren Typen hinzufügen will, muss man in allen beteiligten Funktionen und ``switch``-Konstrukten Code für den neuen Typen hinzufügen.
Nicht unbedingt.

Code: Alles auswählen

typedef enum { daten_a, daten_b } DatenTyp;

typedef struct {
   DatenTyp Typ;
   int   i;
} Daten;

void do_something_a(Daten *d)
{
   d->i++;
}

void do_something_b(Daten *d)
{
   d->i += 10;
}

int do_something(Daten *d)
{
   switch(d->Typ) {
   case daten_a:
      do_something_a(d);
      break;
   case daten_b:
      do_something_b(d);
      break;
   default:
      break;
   }
   return d->i;
}

int main(int argc, char **argv)
{
   Daten a = { daten_a, 0 };
   Daten b = { daten_b, 10 };

   printf( "%d, %d\n", do_something(&a), do_something(&b) );

   return 0;
}
Ich muß nur das enum und ein switch erweitern (und natürlich eine neue Funktion do_something_c schreiben) um einen neuen Typ zu kreieren. Anderer Code wird davon nicht beeinflusst.

Aber lassen wir das, wir werden damit langsam offtopic. ;)

PS: Und ganz ehrlich, von diesem Code bekomme selbst ich Augenkrebs. :D
BlackJack

Beitragvon BlackJack » Donnerstag 11. Dezember 2008, 18:56

Du zeigst schon wieder das was ich gesagt habe. Du musst immer an zentralen Stellen die ``enum``\s und die ``switch``-Anweisungen erweitern. Und entweder in der Quelltextdatei die neue Funktion implementieren oder zumindest dort den Header ``include``\n wo die Implementierung drin steckt. Die Implementierung eines neuen Typs verteilt sich über das ganze Programm. Im Grunde sagt Du doch auch, Du musst nur "alles" anfassen, der Rest bleibt unverändert. Nur welcher Rest bleibt denn da noch unberührt!?
Konrad Wenzel
User
Beiträge: 15
Registriert: Freitag 3. Oktober 2008, 17:19

Beitragvon Konrad Wenzel » Montag 22. Dezember 2008, 10:18

@Leonidas: OOP bildet hervorragend die Fantasiewelten mit handelnden Robotern ab, für Modelle aus der realen Welt eignen sich oft andere Ansätze besser, wie sie z.B. in den erfolgreichen Sprachen SAS, SPLV oder Natural sehr unterschiedlich angelegt sind ( es gibt sie mittlerweile nicht nur für IBM-Maschinen).
Von Python schätze ich vor allem die Fähigkeit, ohne Umstände komplexe Zahlen in elektrotechnischen Aufgaben zu verarbeiten und die Möglichkeiten zur Textverarbeitung als ehrenamtlicher Mitarbeiter in einem Aktenarchiv.
Das Forum hat mir geholfen, Tkinter zu installieren, dafür möchte ich mich hiermit bedanken, auch wenn ich letzteres nur gelegentlich benutze.
Da ich nicht weiter im Forum posten werde, wünsche ich allen noch ein gutes k+9.
-- wn --

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], Google [Bot]