Re: Modeling User/Accounts
- From: "H. S. Lahman" <h.lahman@xxxxxxxxxxx>
- Date: Sat, 30 Dec 2006 19:20:57 GMT
Responding to MySpamB8...
I think you have already answered the question. B-) All Application
Users have email addresses, including those not associated with
Programs. So the email address is an attribute of Application User, not
Program Contact. IOW,
[ApplicationUser]
+ emailAddress
... <common properties>
A
| R1
+-----------+--------------+
| |
[ProgramContact] [SysAdmin]
... <contact properties> ... <admin properties>
| *
|
| R2
|
| related to
| 1
[Program]
... <program properties>
Darn, I see one more snag, and that is that some contacts are not even
application users at all. With your help, and remembering about
interfaces (which my target language, CFML, actually doesn't have), I
have come up with the following:
<snip original diagram>
Also, I'm not sure whether to keep my class diagram generic (including
interfaces) or to acknowledge the lack of interfaces in my Class
Diagram. Thoughts?
UML supports a separate Interface model element (i.e., the "lollipop" box), but it is rarely used. A Class defines responsibilities that are externally accessible. Those usually map directly to interfaces at the 3GL level.
One usually only needs the Interface model element when one wants to limit the access some objects have (i.e., to not expose all the responsibilities to certain other objects) AND that is important to the problem solution (as opposed to making the 3GL code more maintainable).
Whoops, I have a confusing naming error, as well as an omission, here
is the correction:
[EmailHaving]
<<interface>>
+ emailAddress
... <common properties>
A
: R1
............:...............
: :
[Contact] [ApplicationUser]
<<interface>> <<interface>>
... <contact properties> ... <admin properties>
A A A
: : :
: R2 : R3 : R4
: : :
[ConferenceContact] [Program Contact]
| |
| R5 | R6
| |
[Conference] [Program]
... <contact properties> ...<program properties>
I thought you said originally that the SysAdmin people (having admin properties) were unrelated to Programs. Also, ConferenceContact seems to be a new feature. So I think the first task is get get the requirements straight. B-)
The name EmailHaving makes me nervous. I think you were originally describing two sorts of people: those involved with administration and those involved with programs. (Now perhaps a third type involved with conferences.) Anyway, I would bet there is a more descriptive term for the set of human beings that can be subdivided into SysAdmin and other subset categories.
So I think the second thing to do is decide what flavors of people are relevant and how they are categorized, presumably by the way they map into programs, admin, and conferences. Assign them meaningful names that are based on the relevant problem semantics. Then you can determine what properties they need.
[Also note that the notion of 'contact information' can be separated from the notion of 'person' (e.g., think: card in a Rolodex). That might be desirable if some category of persons may be conditionally related to programs. So one only needs the contact information in those situations where the relationship is actually instantiated. IOW, a ContactInfo object might be an associative object on the relationship or it could be a separate object that is dynamically related to certain persons depending on context. My point is that separating the notion of 'contact information' may allow you to avoid the multiple inheritance implied in R3/R4. Multiple inheritance is one of those things that one tries to avoid whenever possible.]
*************
There is nothing wrong with me that could
not be cured by a capful of Drano.
H. S. Lahman
hsl@xxxxxxxxxxxxxxxxx
Pathfinder Solutions
http://www.pathfindermda.com
blog: http://pathfinderpeople.blogs.com/hslahman
"Model-Based Translation: The Next Step in Agile Development". Email
info@xxxxxxxxxxxxxxxxx for your copy.
Pathfinder is hiring: http://www.pathfindermda.com/about_us/careers_pos3.php.
(888)OOA-PATH
.
- References:
- Modeling User/Accounts
- From: mySpamB8
- Re: Modeling User/Accounts
- From: H. S. Lahman
- Re: Modeling User/Accounts
- From: mySpamB8
- Re: Modeling User/Accounts
- From: mySpamB8
- Modeling User/Accounts
- Prev by Date: Re: looking for a predicate hierarchy
- Next by Date: Re: double-entry bookkeeping unneeded?
- Previous by thread: Re: Modeling User/Accounts
- Index(es):
Relevant Pages
|