Re: UML: extends .vs.generalize
From: Steve (steve_a_haigh_at_hotmail.com)
Date: 10/17/03
- Next message: Carl Revell: "Re: Right or Wrong Way To Do This?"
- Previous message: Aaron Perrin: "Re: Question about removing duplication: inheritance vs static methods"
- In reply to: Wayne Dernoncourt: "Re: UML: extends .vs.generalize"
- Next in thread: Uncle Bob (Robert C. Martin): "Re: UML: extends .vs.generalize"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Fri, 17 Oct 2003 15:03:07 +0100
Wayne Dernoncourt wrote:
> Steve <steve_a_haigh@hotmail.com> wrote:
(this is from "The Elements of UML Style" by Scott Ambler, similiar
> in style to "Elements of Style" by Strunk & White)
> I managed to leave out a word, "Enroll" from the example from the
> book -- oops. It's supposed to be "Enroll Family Member". The
> book explains (pg. 22, #43) "...you can see that the
> _Enroll_International_Student (italicized) use case extends the
> _Enroll_Student_ use case..." I understand this, the
> international has more paperwork, etc.
Ah, I see. Yes that makes more sense. So we are just talking about
terminology purely in the context of use cases.
>
> But the next paragraph says "An <<extend>> association is a
> generalization relationship where the extending use case
> continues the behavior of the base use case by conceptually
> inserting additional action sequences into the base use case..."
I'd agree that this looks confusing, taking the words at face value it
seems odd. I think the term "generalization relationship" needs to be
taken in the context of UML, and it means "one thing is a more general
thing than the other", it is not saying which direction the generalizing
is happening in. In fact the extendING UC is indeed a more specialized
UC then the extendED UC, therefore the extendED UC is a generalization
and the extendING UC is the specialization.
To use the example; Enroll_Foreign_Student extends Enroll_Student. These
2 UCs are in a generalization relationship because one is more general
than the other, the original Enroll_Student is the generailization and
the Enroll_Foreign_Student is the specialization.
I think this is all a little confusing, so it might be better to stick
to using the term "extends" for UCs, and leave generalization to class
heirarchies. Obviously if you are reading a book you can't choose the
terminolgy though!
> Could I be getting confused over the authors choice of
> words? I would thing "specialization" would fit better
> since actions are being added to a general item to make it
> more specific. Of course, I can full of crap!
No, not crap, I think you are spot on. Hoever, for some reason the
relationship is more often refered to as generalization. (actually, I
think there is a very good reason in the case of class design, but thats
for a different thread...).
-- ~~ Steve_A_Haigh@hotmail.com ~~
- Next message: Carl Revell: "Re: Right or Wrong Way To Do This?"
- Previous message: Aaron Perrin: "Re: Question about removing duplication: inheritance vs static methods"
- In reply to: Wayne Dernoncourt: "Re: UML: extends .vs.generalize"
- Next in thread: Uncle Bob (Robert C. Martin): "Re: UML: extends .vs.generalize"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]