TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
Eric
NA
1
0
Need some advice on how to implement this class structure.
Jan 12 2009 8:11 PM
I'm trying to figure out the best way to create a structure of classes that will remain "valid" to a set of rules as instances are created, changed, and removed.
I have three classes that have a hierarchical relationship to one another.
Building
-References one or more Mass instances
-Can not exist with out at least one child Mass instance
-Deleting or removing the last associated Mass insatnce should also remove the Building instance
Mass
-
Can be related to only one Building instance
- Can be "orphaned" and not related to any Building instance
Level
-Must be related to at least one Mass instance
-Can be related to multiple Mass instanced as long as they share the same Building class parent
For example say I want to associate a Level with a Mass. I need to check if the mass is associated with a building, and if the level is associated with another Mass, and if that mass is also associated with a building. If I associate a level that is already part of a building to a mass that is not part of a building that mass needs to be added to the building. Or if they are both already part of different buildings I want to throw and error. Etc.. etc..
Here's a diagram:
http://dl.getdropbox.com/u/113068/Visio-Building%20Structure%20Diagram.pdf
So now I have a
ProjectClass
in which contain a list of all the current Building and Mass instances. Any manipulation like adding a Building or associating/dissociating a Mass to/from a building is done through methods attached to the ProjectClass. Each of those methods contains a bunch of nested if statements and foreach loops to figure out what should be done when objects are added, removed, or associated with one another.
This method, however, is getting really really messy so I'm wondering if there is a better way? Although it's not obvious to me how you could get behavior like this simply through the class structure. I'm thinking it would be better to have one "Validate" or "Purge" method attached to the ProjectClass that is run after any change that will automatically purge Buildings with out related Masses, or make other changes to make sure everything fits within the "rules".
Eric
Reply
Answers (
0
)
N-Tier Building
Do more with less