|
The question I always ask myself to find out what kind of relationship two objects really have, is whether it's a 'is a' or 'has a' relationship. E. g. a Mercedes 'is a' car, so it inherits all methods and properties of a generic car. And it 'has a' three-pointed star. You wouldn't inherit a 'Mercedes' from a three-pointed star, would you?
Your case sounds more like a 'has a' relation ship, in that all the other classes 'have' an ID, title, etc.. The obvious way would be to just let every class have these members, but if all classes are going to have the same 3 or 4 member variables, then chances are these belong together in a class of it's own. or maybe just a struct:
struct ID {
int id;
std::string title;
};
class MyDialog {
ID id;
};
class MyButton {
ID id;
};
Now you need to decide if that is sufficient for the operations you want for these classes. You will get a bit of redundance this way: e. g. accessors for each class that uses ID. But I see no reason to have virtual methods or inheritance.
|
|
|
|
|
sexy girlï¼video for adult ï¼ more than 30 videos.http://sharecash.org/download.php?file=2531204
|
|
|
|
|
Hi,
I have a conflict while designing a tree, with each child has the option of getting deleted individually.
I have designed a tree view with say some 5 children to it, each having the option of getting deleted. At the same time for the whole tree view, I have the option of Saving the changes performed to the tree and Reset them to previous state.
I need a suggestion, is it wise to restore a deleted child, during the RESET of the tree view? I can foresee a design flaw in this.
Thanks
Ambe
|
|
|
|
|
I rarely have to support UnDo/Restore/Oops functionality as it has very limited use in LOB work. I usually take a copy of the data before loading the tree, if the user wants to cancel changes simply reload the tree from the copy. I do not allow them to undo past a save so after a save I update the copy with the current data.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
I total agree with this method. That is how I do it. Makes the logic a lot easier and usually makes the user happy.
|
|
|
|
|
Ambe wrote: I have designed a tree view with say some 5 children to it, each having the option of getting deleted. At the same time for the whole tree view, I have the option of Saving the changes performed to the tree and Reset them to previous state.
I need a suggestion, is it wise to restore a deleted child, during the RESET of the tree view? I can foresee a design flaw in this.
Not during the reset, but after. I'm usually copying the complete internal state into a Memento-pattern, simply restore from there when required. Yes, users can undo after they saved, marking the document dirty again.
Bastard Programmer from Hell
|
|
|
|
|
Hello all,
I have been assigned a task to work with few in-house developers in developing our internal Employee Portal which include, Time Tracker System, HR Portal, Performance Tracker and Asset management System, All deployed on one Windows Small Business Server.
The requirements gathering and documentation is almost done and we are about to start working on core development.
However, as I lack a project level knowledge while developing web applications. Can I get help on what best practices should I be implementing even from the database design stage?
The application is intended to be interacted by close to 200 people and half of them concurrently, at times. Most of the data tables are expected to be use by different modules of the same application.
Any help with guidelines to be followed while designing the database and application layers, will be greatly appreciated.
You can send me an email sunilsasadm@gmail.com
Thank you
|
|
|
|
|
First off I would look for an existing package and see if it meets your requirements.
If between you and Sunil Kokkiligadda wrote: few in-house developers you do not have any architecture skills I suggest getting in a consultant to do the initial work for you, at least the data structures. You are not going to be able to build such an application from forum support.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
My rates are pretty competitive if you need some professional help...
"If you think it's expensive to hire a professional to do the job, wait until you hire an amateur." Red Adair.
nils illegitimus carborundum
me, me, me
|
|
|
|
|
Can I have a detailed info on the services, in this context, that you can provide and your price?
You can send me a personal email.
|
|
|
|
|
I was being sarcastic.
BTW: you shouldn't put your email address in a post: you'll get spammed.
"If you think it's expensive to hire a professional to do the job, wait until you hire an amateur." Red Adair.
nils illegitimus carborundum
me, me, me
|
|
|
|
|
tart
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
It doesn't take a Sherlock level of intelligence to jump on an opportunity like that. (useewhatididthar?)
I personally commend him!
Don't forget to rate my post if it helped!
"He has no enemies, but is intensely disliked by his friends."
"His mother should have thrown him away, and kept the stork."
"There's nothing wrong with you that reincarnation won't cure."
"He loves nature, in spite of what it did to him."
|
|
|
|
|
Hi sunil,
Back end plays major role in any application. So while you are developing the Employee Portal ,take help from the experts and start learning from it.
Hope you will be good DB Designer.
Regards,
Srinivas
|
|
|
|
|
I currently working on a project in MVC .net and I found my self asking how far is to far for separation of concerns? A little back history. The project I am working on is separated into business logic, data access, and business entity layers. It is a web app that is developed using the MVC pattern so it also has Controllers and Views. We are currently using our business entity objects as our model for this project. But now one of the developers I work with wants to implement view models that inherit from the business entities. 99.9% of the time the view model will just be an empty class that inherits from the business entities. I am against using adding another layer to the app and I want to find out what some other peoples opinions are.
|
|
|
|
|
He says it is easy to code generate and we may use it in the future so why not just do it. To me it add more complexity to the project when 99 percent of the time we won't need the view models. I would rather just create the view models when we need them. The reason he would like to inherit from the business entities is so we don't need to map a view model to a business entity. We could just pass the view model to the business logic directly.
|
|
|
|
|
GateKeeper22 wrote: 99.9% of the time the view model will just be an empty class that inherits from
the business entities.
Presumably there is real business functionality represented by that 00.1% rather than pie in sky whimsy by developer(s) about some nebulous thing occuring in the future.
If no then absolutely not.
If yes then what happens to the funtionality represented by that 00.1% if you don't implement another layer? It is impossible to do or just a bit awkward? If impossible then do it. If just awkward then stick to awkward because nothing is perfect and that is what comments are for.
|
|
|
|
|
On the .1% of the time I add a view model to handle the difference and have a mapper function to copy the data from the business entity to the view model. It has only happened once so I only have one view model. I do it when it is need and the other developer wants to make it a standard an do it all the time even if it isn't needed.
|
|
|
|
|
You don't re-arch a system based on extreme corner cases when work around exists.
There are many real reasons why one doesn't do that for non-trivial applications which a multiple person system always is. Some of the ones that come to mind.
1. It adds complexity which increases maintenance cost.
2. There is no way to eliminate all corner cases.
3. A corner case can document itself but a re-arch requires much more explanation (and back to 1.)
4. The cost of a re-arch is much higher than implementing the corner case.
|
|
|
|
|
GateKeeper22 wrote: I am against using adding another layer to the app and I want to find out what some other peoples opinions are.
What value does it add, and what will it cost?
Good idea = (AddedValue > Cost)
Bastard Programmer from Hell
|
|
|
|
|
I can't see that it will add any value. It is pretty easy to implement if I do it by inheriting from the business entity. If I do it the way I have been by mapping the view model to the entity it would take more time but not to much. To me it isn't worth the extra work because we aren't really getting anything out of it expect another layer.
|
|
|
|
|
GateKeeper22 wrote: To me it isn't worth the extra work because we aren't really getting anything out of it expect another layer.
Sounds like a good idea to delay it until you do need it.
How much hours (and thus, money) would your co-worker spend on implementing it, and what benefit does he see in having that layer that's worth that cost?
Bastard Programmer from Hell
|
|
|
|
|
He would just add it to code generation so it wouldn't cost anytime. I haven't really gotten a good answer on what benefits it would give us. He just says it would be easy to generate and not take much time to implement so why not do it. To me that isn't a very good answer. I need to see the value that the layer will give us before I implement it. I would rather implement it on a case by case bases.
|
|
|
|
|
GateKeeper22 wrote: He would just add it to code generation so it wouldn't cost anytime.
"Does not cost any time"? So you are sure that it doesn't need maintenance and will not cause bugs?
GateKeeper22 wrote: I haven't really gotten a good answer on what benefits it would give us.
That makes it simple; we can generate a 2Gb data-file with random contents. That doesn't have much benefit either.
GateKeeper22 wrote: He just says it would be easy to generate and not take much time to implement so why not do it.
..because it doesn't add any value to the project, only extra code. That code has to be tested, and not having that extra load of code means that there cannot be any bugs in there
Bastard Programmer from Hell
|
|
|
|
|
That is a good point about adding more bugs even if it is generated. Thank you for the info. I am adding all of your points to my argument. I am also glad to see that I am not the only one out there that would be against this.
|
|
|
|