Project 1 -- Meows and Mutts : Frequently Asked Questions
 

1) How  do I get started at my  project?

      For any piece of software this is the sequence of steps that  are followed:

               The  project description given to you describes a problem that you are supposed  to solve.  So in the problem analysis phase, you should study the problem carefully and  figure out what all needs to be done to solve the problem.  So  the analysis will tell you what you need to  do to solve the problem. One helpful technique is to break up a big problem into  smaller ones and  analyse each of the smaller problems.  In short  analysis tells you what  needs to be done.                 Design provides a mapping from the problem domain to the implementation domain.  So in the design phase  you should figure out how to implement the solution you arrived at after the analysis phase. This is where you  choose your data structures and algorithms. This is where you decide the roles and responsibilities of  your classes and how they interact. So in summary,  the design phase  answers the following question :  "How do I implement the solution"?
                     Here you actually create your programs using your design. and the programming language of your choice.


2) Should I use any coding conventions?

        There is no strict requirement that you should use one. But it makes the code readable and easier to understand. Whatever convention you decide to use , be consistent in its use throughout your program. Here is one suggestion:



 3) Should I use any specific notation to depict my design ?

            Typically you will be using the following two relationships in your design

        Notation to depict inheritance

               class Base <-------- class Derived

          If more than one classes are derived from the same base class,  show it as follows:

             class Base  <---------   class Derived1
                                                                    class Derived2
                                                                    class Derived3

        If one class is derived from more than one base class i.e  muiltiple inheritance, show it as follows:
 
               class Base 1 <------------ class Derived
               class Base 2
               class Base 3

 
        Notation to depict containment     

        Eg: class Cage contains an object of class Animal as a data member  ( Containment by Value )
 
            class Cage  [ class Animal ]
 
       If class Cage contains a pointer to object of class Schedule , then show it as follows:
     ( Containment by Reference )

            class Cage [ class Schedule* ]
 
       You can combine the above two examples as:

            class  Cage [ class Animal, class Schedule* ]

       Note 1: Don't go below one level of nesting.  Eg: if class Animal  has some other objects as data
                        members, show them in a  different sketch.

       Note 2 : You can combine the notations till the whole thing is  readable.
                        Eg: the following is fine

                       class CObject <--------class Cage[class  Animal, class Schedule*]  


 
    SGI Webpage is a good reference site for STL.