In this exercise, you will work with your partner to come up with a design for the Slack API project. Once you have a design, we will provide our design, giving you a chance to compare and contrast the two.
While we encourage you to use the provided design for this project, there is much to be gained from going through the design process before seeing our version.
- Practice the object-oriented design process
- Compare and contrast different designs for the same program
- Implement a program from a provided UML diagram
Read through the project requirements with your partner, then follow our standard object-oriented design process.
- What are the nouns, and how are they composed into objects and relations?
- What are the verbs, and which verb belongs with which object?
Build a UML diagram with your partner.
Once you are happy with your design, click here to see the UML from the instructor implementation
Note that only public methods and attributes are shown.
With your partner, answer the following questions about the instructor design:
- What composition relations exist between objects in this design?
- What inheritance relations exist between objects in this design?
- How are the objects and the relations between objects, different than the design you and your partner came up with?
- Why do you imagine we did it this way?
- What are the pros and cons of each approach?
- How are the methods and the placement of methods within objects different than the design you and your partner came up with?
- Why do you imagine we did it this way?
- What are the pros and cons of each approach?
- What surprised you about this design?
- What questions do you have about this design?
We encourage you to use our design for this project, at least as a starting point. However, if there are changes you need to make, particularly things like helper methods or extra attributes, you are welcome to do so. It's your project, after all.