Forget about quaternions! Are you really saying: specialization good,
generalization bad?!!! Well, at least in this case, your generalization is
indeed a bad one :)

Generalization and specialization are duals of each other. We can do stupid
specializations just as easily as we can do stupid generalizations. Let's
take you example. Postman subclass:
PostmanWhoAlsoDeliversPizzasAndFliesToTheMoon is a specialization, not a
generalization. How is it any better?




On Mon, Jul 22, 2013 at 10:38 AM, Igor Stasenko <siguc...@gmail.com> wrote:

> On 22 July 2013 16:23, Nicolas Cellier
> <nicolas.cellier.aka.n...@gmail.com> wrote:
> > Because the quaternion (ar + ai * i + 0 * j + 0 * k) will behave exactly
> > like a complex (ar + ai * i) with respect to arithmetic (+ - * /) and
> > elementary functions (exp sin cos etc...).
> >
> all i know is that
>
> i*i = -1
>
> that's what makes complex numbers quite different from other
> n-dimensional vector(s).
> and i never seen that you can mix complex algebra and linear algebra..
> hence, i can imagine that you can subclass both from some abstract
> NDimensionalVector
> but not subclass one from another, because it makes no sense.
>
>
> >
> > 2013/7/22 Igor Stasenko <siguc...@gmail.com>
> >>
> >> On 22 July 2013 15:13, Florin Mateoc <fmat...@gmail.com> wrote:
> >> > On 7/22/2013 8:44 AM, Igor Stasenko wrote:
> >> >> On 22 July 2013 14:13, Florin Mateoc <fmat...@gmail.com> wrote:
> >> >>> I also liked the debate, so before it closes I want to throw my 2
> >> >>> cents in:
> >> >>>
> >> >>> I don't think this is an issue about inheritance (vs composition),
> it
> >> >>> is one
> >> >>> about multiple inheritance or lack thereof. You may want your object
> >> >>> to be
> >> >>> an announcer of events, but almost always you will also want it to
> be
> >> >>> something else as well. To me this suggests that Announcer should
> be a
> >> >>> trait, not a class, so in a sense, indeed, you would "compose" your
> >> >>> classes
> >> >>> using it, but you would use trait composition instead of class
> >> >>> composition.
> >> >>> In VisualAge there is a huge hierarchy underneath
> AbtObservableObject.
> >> >>> Sure,
> >> >>> there are many classes that want to participate in an observable
> >> >>> pattern,
> >> >>> but you should not be forced to inherit from a particular class in
> >> >>> order to
> >> >>> do that, so that is just another related example that would have
> >> >>> benefited
> >> >>> from traits.
> >> >>>
> >> >> Again, announcer of events means event source role.
> >> >> It is distinct from 'delivery service' role.
> >> >>
> >> >> When you write mail, you just drop it into mailbox, and then mr.
> >> >> Postman delivers it to receiver,
> >> >> but not directly yourself.
> >> >> That's what you get from specialization.
> >> >> But if you wanna play as mr. Postman, and also will deliver pizzas,
> >> >> and fly to the moon,
> >> >> this is called generalization, and straightly opposite to
> >> >> specialization.
> >> >>
> >> >>
> >> >
> >> > So what? The thing is, you want to do both. We think in both
> directions.
> >> > Sometimes we generalize from the existing
> >> > knowledge, sometimes we specialize from the abstract.
> >>
> >> I say you what. If you go to extreme, then your object can do
> >> everything.. and so you end up with code like this everywhere:
> >>
> >> self foo: self bar with: self zork.
> >>
> >> Because your object knows everything, can do everything and don't
> >> needs anything.
> >> The only question which remains is why you using object-oriented
> language
> >> then?
> >> Why using classes, caring about inheritance, polymorphism , message
> >> passing etc, because
> >> if single object does all you need, you don't need all of above.
> >>
> >> My point is that if you don't need such concepts, just don't use
> >> them.. but if you using them,
> >> then please follow the rules.
> >>
> >> Same goes to Announcer. It defines the certain way how it should be
> >> used. And how its not.
> >>
> >> > A quaternion is a generalization in 4 dimensions, we did not get
> complex
> >> > numbers by specializing from quaternions, it
> >> > was the other way around.
> >> >
> >>
> >> hmm? how that? i first time hear that they are related.
> >> Can you provide a real example where you can mix both of them
> >> interchangeably?
> >> Besides the fact that they both are partial case of n-dimentional
> >> vectors, they not sharing too much,
> >> because of different math and different uses.
> >>
> >> But anyways.. it seems like Announcement(s) model, to my thinking
> >> don't really fits well with
> >> observer pattern.
> >> Because in observer pattern you need only 2 roles: observer(s) and
> >> subject.
> >> You don't have nor need a mediator or 'event dispatcher', which
> >> represented by announcer.
> >>
> >> Implementing an observer pattern using Announcer is an overkill, to my
> >> thinking.
> >> Reflecting by your example, is like using quaternions where complex
> >> numbers is sufficient.
> >>
> >> I think more and more, in this regard, that Announcements is not a
> >> silver bullet and it has own limits
> >> and intended ways to use.
> >> For that matter, i think we should have more simple and elegant
> solution.
> >> Because subclassing from Announcer is not a solution.
> >>
> >>
> >> --
> >> Best regards,
> >> Igor Stasenko.
> >>
> >
>
>
>
> --
> Best regards,
> Igor Stasenko.
>
>

Reply via email to