![](https://seccdn.libravatar.org/avatar/82e941c014be463b55d04db209e31cd3.jpg?s=120&d=mm&r=g)
David Haller schrieb in 5,5K (140 Zeilen):
Manfred Tremmel wrote:
IMHO kann man in gewisser Weise ein prozedurales (C, Pascal, Basic) Programm als ein einzelnes Objekt auffassen, bei dem es i.A. fuer alles und jedes eine (globale?) Prozedur (aka Member) gibt.
Und vi hat keine Modes, sondern nur Befehle mit Parametern variabler Laenge, welche a) sehr lang werden koennen und b) mit ESC beendet werden.
Der Vorteil bei OOP ist IMHO dass Daten und Methoden auf diesen Daten als eine Einheit aufgefasst und ueber eine (einfache) Schnittstelle dargestellt werden.
/Vorteil/Blickwinkel/
Dazu kommt natuerlich, dass die "Implementierung" verborgen werden kann. Was interessiert's mich ob eine Name-Wert Tabelle als Feld, Binaerbaum, oder sonst wie gespeichert wird? Ich brauche nur das "Objekt" 'Tabelle' und gewisse Methoden (Ein- und Ausgabe, suchen, vergleichen, sortieren, etc.) Was dahintersteckt, und wie und wann dafuer Speicher belegt wird, juckt mich als Anwender eine Objektes nicht.
In vielen Faellen nicht, in vielen anderen schon.
Das ist IMHO der eigetliche Ansatz und Vorteil von OOP. Prozedural landet man sehr schnell bei globalen Variablen, bei denen man sich um all die Details selber kuemmern muss.
Auch prozedural kann man Schnittstellen bauen, Unterroutinen verwenden, lokale, gegebenenfalls statische Variablen verwenden. Z.B. in Perl kann man so eine fuer die Funktion private, statische Variable (oder noch wesendlich mehr) bauen: ub my_function { [...] BEGIN { my $counter = 42; sub prev_counter { return --$counter } sub next_counter { return $counter++ } } [...] my $previous_counter = &prev_counter; [...]
Hmm. Grad faellt mir ein netter Vergleich ein: Ein Computer ;)
Man stelle sich mal vor, man muesste jeden Dateizugriff, jede Eingabe von der Tastatur oder Maus, jede Ausgabe (Bildschirm, Datei) selbst behandeln... *oerks* [... vs ...] [Ich tipp mal drauf los, das "Objekt" Tastatur-Treiber wird sich um den Kleinkram wie Speicher anfordern, puffern usw. schon kuemmern und mich ggfs. auf Probleme ('s wird eng) aufmerksam machen].
Ein nett gekapseltes Objekt "Tastatur" ist doch prima ;)
Dir ist klar, dass der Kernel nicht OO ist und in C geschrieben ist? Genauso wie die meisten Tools ... ls, cat, find, ... Und dir ist auch klar, das 90% des Kernels keine Ahnung davon haben, wie sie eine Datei abhandeln sollten, sondern eine API des generischen File-Treiber nutzen, welcher dann generisch die logische Arbeit macht, die realen Aktionen aber wiederum (via API) an den msdos/ext2/vfat/reiserfs/minix/.../nfs (und das kann sogar ein Userprogramm sein, welches dann das FS ergibt) weiterleitet, welcher dann die logischen Anweisungen in reale Bitmuster verwandelt ... welche dann ueber das VFS (Virtuelle File System) angenommen werden, welches dann LVM, RAID, Loopback, ... ueber weitere APIs abhandelt und dann die realen Bits via IDE/SCSI/... schreiben laesst? (Puuuh ...) Alles schoen gekapselt.
Aber genau bei sowas kommt IMHO ein Vorteil von OO zum Tragen. Diese wilden Spruenge quer durch Programm werden verhindert... Objekt/Daten/Methoden sind (immer?) eine (Art von) Einheit.
Wenn du B&D (Bondage & Discipline) brauchst ... :-) -Wolfgang --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com