If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register or Login
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

need an Opinion about how to start this project i`m practicing..

ok, so i have this project ' i need to print Salary of Employees ,production employees , quality control employees , sales employees ,and director employes in every Department
production employees: hour payment ,hours.
quality control employees: day payment , days.
Salary of Employees : hour payment ,hours, bonus for this month.
director of the Department (in each Department there is an director): global payment for 1 month, bonus for Achievements of the Department

Re: need an Opinion about how to start this project i`m practicing..

Re: need an Opinion about how to start this project i`m practicing..

I'd start by understand what and why an Interface is used. You've got the Director interface used in several classes that aren't implementing the full interface. If you were to write the code for this model, you'll find it doesn't compile.

As far as the model, you need to define what the interface is going to do and then apply where it is needed. It is unlikely that the Director interface is used everywhere you are using it. Perhaps you need to create other interfaces that do other specific tasks?

In addition, I would also get rid of the naming inconsistencies within your interfaces and classes. You've got a mix between uppercase and lower case. Read up on .Net naming conventions so you understand when to use each and why. Sure, you can be sloppy and mix whatever you want, but if you want to learn and become a professional, you'll probably want to write professional quality code (and part of writing professional quality code is following a consistent naming convention).

Re: need an Opinion about how to start this project i`m practicing..

Well, we normally can't tell if you have mistakes without knowing what the system is supposed to do and how it's supposed to function in more detail - because there's no one specific design that is right; you can approach the problem in different ways. So elaborate a bit on the requirements.

To figure out the correct class diagram, you have to first understand how your system will be used, and how it will work; what components are supposed to interact, etc. Now, as for the diagram you've posted: I'm kind of guessing that all of those relationships are simply associations, but note that you've used the UML relationship symbol for generalization - so you might want to fix that to get your point across better (if your UML is a bit rusty, you really only need to look up 3 types of relationships: association, composition, and generalization).

What Arjay said about naming inconsistencies refers to public class/interface members - the C# naming convention is to use PascalCasing for all public members. Anyway, if you want to represent private members, use a third subsection reserved for class fields (you can put properties in the method section, cause they are really methods).

Once you've have a fleshed out design - start by writing the classes and their public members according to your specification. Interfaces will have to be implemented by something, of course, but you can write code for the other classes against those interfaces even if they aren't implemented yet - you just will not be able to run it. Make sure you figure out the interactions reasonably right (and that mostly means what public members allow the classes to interact with each other ), because this will be harder to change later on if needed, while the implementations behind them can change relatively easily.

(BTW: Public members of a class are known as the class' interface, but this is not the same concept as C# interface types that appear in your diagram, although they are related, so I was purposely avoiding to use the designation to avoid confusion. But in short, what I said above is that you need to figure out how classes interact, and they always rely on their interfaces (public members) to interact.)