On Tue, Nov 17, 2009 at 8:58 PM, Pawel Niemiec <Pawel.136/[email protected]> wrote:
> I could do in particular do so: > HumanComposite humanDeveloper = (HumanComposite)new DeveloperMixin(); > Or > HumanComposite humanDeveloper = (HumanComposite)new AlumniMixin(); I assume that this is either some meta-language or has unnecessary casts. If it is something else, then feel free to explain; If both Developer and Alumni extends the same class, then you are back in 'class oriented programming' world, where the class instances are the first class citizens and from which you derive an object, yet having a discussion that the Alumni object and the Developer object is different roles of the same object, which class-oriented programming doesn't define. And in that lies a general problem of class-oriented programming, basically that the object is abstracted away to a class. When we started Qi4j, I (can't fully speak for Rickard) had concluded that programming was totally backwards. Objects are inherent to the world, classes are not. Class comes from the word classification, which is our ability to ascribe a common set of attributes and/or behaviors to a set of objects (typically more than one). And the classification of an object changes over time, a tree becomes a log becomes timber, a crashed car is a modification of the normal car, and so on. So, in the first prototype instance of Qi4j, the class was 'assigned to' an object like a property in runtime, which I still think is the fully appropriate way to do it, BUT I agree with Rickard's objection that it becomes too difficult to manage and troubleshoot. Last night before falling asleep I had another thought; Are all data really objects? My sleepy conclusion was "No", and that it may even be better to treat raw data as exactly that, raw data. Which would then beg the question; Isn't it really so that all "objects" are always present in the program, and "objects" don't have an hibernated state? I am not totally sure of that answer, but if so, then what are all these objects that we create and call "entities"? Data or "object representations"... Perhaps the distinction between "objects" (with behavior) and "object representations" (without behavior) is too subtle for most to observe it, since all objects are a kind of representation in the computer language anyway... Perhaps certain things are really best treated as records in a table, and if so, how do draw the line? Once you identify that "Hey, maybe data are not really objects...", then one can continue and challenge everything else. Again, I think this is a symptom of Computer Science trying to abstract away all differences, giving us a Mouseter Tool (someone watch Mickey Mouse Club House?) suitable for everything and nothing. Cheers -- Niclas Hedhman, Software Developer http://www.qi4j.org - New Energy for Java I live here; http://tinyurl.com/2qq9er I work here; http://tinyurl.com/2ymelc I relax here; http://tinyurl.com/2cgsug _______________________________________________ qi4j-dev mailing list [email protected] http://lists.ops4j.org/mailman/listinfo/qi4j-dev

