- The aim of the course is to make students discover how to create modular, flexible, and reusable software, by applying object-oriented design principles and guidelines, as well as to communicate these designs in a visual notation known as Unified Modelling Language (UML)
- Apply design guidelines for modularity, separation of concerns, information hiding, and conceptual integrity to create a flexible, reusable, maintainable design
- Apply the Class Responsibility Collaborator (CRC) technique to analyze and design the object-oriented model for a problem.
- Explain and apply object-oriented modeling principles and their purpose (e.g., abstraction, encapsulation, decomposition, generalization).
- Translate between UML class diagrams and equivalent Java code.
- Gamma, E., Helm, R., Johnson, R. E., & Vlissides, J. (2009). Design Patterns : Elements of Reusable Object-Oriented Software. Reading, MA: Addison-Wesley Professional. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1599365
- Marc Loy, Patrick Niemeyer, & Daniel Leuck. (2020). Learning Java : An Introduction to Real-World Programming with Java. O’Reilly Media.