This course takes Java beginners to the next level by covering object-oriented analysis and design. You will discover how to create modular, flexible, and reusable software, by applying object-oriented design principles and guidelines. And you will be able to communicate these designs in a visual notation known as Unified Modelling Language (UML).
You will be challenged in the capstone project to apply your knowledge of object-oriented design by evolving and documenting a Java codebase with corresponding UML documentation.
After completing this course, a learner will be able to:
• Apply the CRC (Class Responsibility Collaborator) technique to analyze and design the object-oriented model for a problem.
• Construct an object-oriented model to represent the information structure of a real world problem.
• Explain object-oriented modeling constructs and their purpose (e.g., abstraction, encapsulation, decomposition, generalization).
• Explain the difference between association, aggregation, and composition dependencies.
• Distinguish different types of inheritance
• Express object-oriented models as UML (Unified Modeling Language) class diagrams.
• Translate UML class diagrams to equivalent Java code.
• Translate Java code to UML class diagrams.
• Apply design guidelines for modularity, separation of concerns, information hiding, and conceptual integrity to create a flexible, reusable, maintainable design.
• Explain the tradeoff between cohesion and coupling.
• Apply inheritance appropriately.
Who is this class for: This course is primarily for learners with beginner level of object-oriented programming experience in Java, that are interested in software engineering through the application of design principles, patterns, and architectures, to create reusable, flexible and testable software applications and systems.
Course 1 of 4 in the Software Design and Architecture Specialization
Object-Oriented Analysis and Design
Good software design begins before coding. After establishing the initial software requirements, design practices involve two main activities: conceptual design and technical design. In this module, you will realize the importance of design and object-oriented thinking, and learn how to design software using techniques like CRC cards.
Graded: Module 1 Review
Best software design practices have evolved alongside programming languages. Today, all developers should be familiar with abstraction, encapsulation, decomposition, and generalization, which are fundamental principles in object-oriented design. You will learn all of these principles and how they are expressed in Java and communicated visually in Unified Modelling Language.
Graded: Capstone Assignment 1.1 – UML Class Diagram
Graded: Module 2 Review
Additional design principles will help you to create code that is flexible, reusable, and maintainable. In this module you will learn about coupling and cohesion, separation of concerns, information hiding, and conceptual integrity. You will also learn to avoid common pitfalls with inheritance, and ways to express software behavior in UML.
Graded: Capstone Assignment 1.2 – UML Sequence Diagram
Graded: Capstone Assignment 1.3 – UML State Diagram
Graded: Module 3 Review
In the previous modules you were introduced to object-oriented analysis and design, object-oriented modeling, and design principles. To cement your understanding of this material, you created a UML class diagram from an example Android code base, and used your understanding of the code base to make sequence and state diagrams to model its behavior. Now, in the final module of the course, given a description of new functionality and an updated UML class diagram, you will implement the updated design into the Android code base. After completing this development task, you will be ready to complete the final exam.
Graded: Capstone Assignment 1.4 – Update the Application
Graded: Final Exam