MrHuge schreef op donderdag 15 november 2007 @ 20:22:
[...]
Er is geen sprake van een probleem. Ook niet van te letterlijk benaderen. Er is sprake van een discussie over een definitie. Jouw definitie van wat een object is is breder dan die van mij.
Wat ik probeer te benadrukken is dat er zoiets is als een OO paradigma, waarin bepaalde basisprincipes en definities gelden. De basis van dit paradigma is dat een computer programma wordt gezien als een verzameling samenwerkende objecten. Elk object kan messages ontvangen van andere objecten of versturen naar andere objecten. De eigenschappen, de interface en het gedrag van deze object worden gedefiniëerd met behulp van een class.
Dat snap ik allemaal, en mijn vraag aan jou is: waarom voldoen ints en floats niet aan die eigenschappen, behalve dan de letterlijke stelling dat ze geen class zijn, want dat is het
enige dat ze laat verschillen met andere types. Dus óf blijkbaar vindt je de eis dat het een class moet zijn zo belangrijk dat ze daarom niet in het OO paradigima passen, óf er zijn andere eigenschappen waar value types niet aan voldoen waar algemene classes wél aan voldoen die je tot nu toe nog niet hebt weten te benoemen. En waarom is een array dan ineens wel object? Omdat hij overerft van Object (doet een System.Int32 in .Net ook), of omdat je er members op aan kunt roepen (In C++ heeft een int ook gewoon een constructor, destructor en operators)? Goed, je kunt er niet van overerven, maar als dat de issue is dan is een java.lang.String ook geen object. Een int encapsuleert ook data. Je kunt er een message naartoe sturen, bijvoorbeeld om een nieuwe waarde te assignen.
Het is trouwens grappig dat je de documentatie van Java aanhaalt, want dat brengt ons weer helemaal terug naar waar deze discussie mee gestart is (geheel in de stijl van "circular dependencies"

), namelijk mijn opmerking dat een definitie van "object" vaak afhangt van de taal waarin je werkt. In Java is dat een class instance of een array, in C++ is dat elk type dat geïnstantieerd is:
1.8 The C+ + object model [intro.object]
1 The constructs in a C + + program create, destroy, refer to, access, and manipulate objects. An object is a region of storage. [Note: A function is not an object, regardless of whether or not it occupies storage in the way that objects do. ] An object is created by a definition (3.1), by a new-expression (5.3.4) or by the implementation (12.2) when needed. The properties of an object are determined when the object is created. An object can have a name (clause 3). An object has a storage duration (3.7) which influences its lifetime (3.8). An object has a type (3.9). The term object type refers to the type with which the object is created. Some objects are polymorphic (10.3); the implementation generates information associated with each such object that makes it possible to determine that object’s type during program execution. For other objects, the interpretation of the values found therein is determined by the type of the expressions (clause 5) used to access them.
Bron: ISO/IEC 14882:2003
Volgens mij kun je een prototype definitie in JavaScript zien als een soort class.
Nee, prototyping is geen subset van classing. Het zijn siblings, ze leven naast elkaar als vormen van OOP. De een is niet een vorm van de ander.
[
Voor 41% gewijzigd door
.oisyn op 15-11-2007 22:17
]