Thread Ein paar Programmiertricks (39 answers)
Opened by roooot at 2008-03-22 23:16

KurtZ
 2008-03-24 14:53
#107426 #107426
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
murphy+2008-03-24 06:01:22--
KurtZ+2008-03-23 20:53:21--
[...] Und da die Terminologie von OOP für mich ziemlich inkoherent ist (manche bezeichnen z.B. mit "Objekte" die "Instanzen" andere die "Klassen") und diverse quasistandards einander beißen (smalltalk, Java, ...) würde mich doch interessieren wo du diese spezielle Definition für "Klasse" herholst. [...]


Hmm, einen offiziellen Standard gibt's dafür wohl nicht. Ich bin aber einfach mal davon ausgegangen, dass der Begriff Klasse recht einheitlich im Sinne von "Kombination aus Datenstruktur und Methoden" verwendet wird – jedenfalls ist das die Bedeutung wie sie in der Wikipedia steht ....
Wenn Du anmerkst, dass zum Beispiel die Terminologien von Java und Smalltalk unterschiedlich sind, so ist das eigentlich auch kein Wunder, denn Java gehört zur klassenbasierten Familie objektorientierter Sprachen und Smalltalk zur prototypenbasierten.


Tatsächlich? meine Recherche dazu zählt Smalltalk nicht zu den Prototypischen.
WP-> Smalltalk Programmiersprache

murphy+2008-03-24 06:01:22--
Dass irgendwo Klassen Objekte genannt werden, habe ich eigentlich noch nie gesehen. ... Weißt Du noch, wo Dir diese andere Bezeichnungsweise begegnet ist?


nein, ich habe mich anfang der 90er jahrelang nur theoretisch damit befasst und mir damals für meinen 68000er Assembler ein OO Macropacket gestrickt um Kapselung und Vererbung umzusetzen. Die Literatur von damals ist leider nicht reproduzierbar, da IT-Terminologie von Modeströmungen bestimmt wird.[+4]

Es ist mittlerweile üblich prototypische OO als "Classless" zu bezeichnen. aber die Leute die solche Kriterien herausarbeiten arbeiten IMHO vorwiegend mit statischen Compilersprachen, z.B. kann ich in Perl sehr wohl eine Klasse während der Laufzeit manipulieren ("kann" ne "sollte" !). Auch sind viele Design Patterns in Perl überflüssig.

Mein Verständnis ist das ein "Objekt" eine Struktur ist die Daten und Methoden kaspelt. [3]
Eine "Klasse" ist zum einen eine Menge von Objekten die sich aus der Konstruktion aus einem Vorlageobjekt ergeben zum anderen die Bezeichnung des Vorlageobjekts (als Repräsentanten o. Erzeuger der Klasse).
Die einzelnen Mitglieder einer Klasse heißen "Exemplare" oder "Instanz" [1]

Das legt bisher alles nicht fest wo Daten und Methoden manipuliert werden können/dürfen und wie Vererbung funktioniert.

In der Mathematik ist es auch durchaus üblich "Klassen" zu schachteln, da kann sehr wohl das Exemplar der einen Oberklasse der Repräsentant (d.h. hier Prototyp,Singletonklasse) einer Unterklasse sein. [2]

M.a.W. Links vom Konstruktor steht die Objektinstanz rechts die Objektklasse, wie z.B. in JS mit a=new Array(1,2,3);

Ich gebe zu dass ich mit dieser allgemeinen Terminologie in der Minderheit bin, aber ich denke die ist sauberer als diese ganzen Überfrachtungen mit Modelldetails die nur in C++ oder Java Sinn machen, um nachträglich Design Patterns einzuführen die diese Schranken wieder kontrolliert aufweichen.

Ich muss mir wohl heutzutage eine neue unverbrauchte Bezeichner ausdenken.

Ciao
Kurt


[1] "Instance" ist engl für Exemplar, "Instanz" ist eine dieser schlampigen Übersetzungen wie z.B. "Netzwerk" )

[2] Randbemerkung: Klassen sind mathematisch AFAIK Mengen die sich nicht selbst enthalten dürfen, z.B. sowas wie die "Menge aller nichtleeren Mengen" würde sonst viele Mathemodelle kaputt machen, deswegen Klassen.

[3] so betrachtet ist auch ein Closure ein Objekt, mit z.B.
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
sub new_closure {
  my %self=@_; # initdata
  $self{methode1} = sub {
          my ($para1)=@_;
          return "$para1 $self{data1}";
  };
  return \%self;
}  
$inst=new_closure(
           data1 =>"value 1",
       );

print $inst->{methode1}("GET: ");

baue ich das JS-Modell schon recht gut nach.

NACHTRAG:
[4] AFAIR ... meine erste Begegnung war ein Artikel über Schiffssimulationen mit Simula. Kann auch sein dass irgendwo das Wort "Klasse" gar nicht fiel sondern nur sowas wie "Objekt Auto mit Exemplar Corsa" ...
TMTOWTDYOG (there's more than one way to dig your own grave)

View full thread Ein paar Programmiertricks