We may earn an affiliate commission when you visit our partners.
Course image
Kenny Wong

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).

Read more

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 the Java codebase for an Android application with corresponding UML documentation.

After completing this course, you will be able to:

• 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).

• Explain and apply different types of inheritance

• Explain the difference between association, aggregation, and composition dependencies.

• Express object-oriented models as Unified Modeling Language (UML) class diagrams.

• Translate between UML class diagrams and equivalent Java code.

• 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.

Enroll now

What's inside

Syllabus

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.
Read more
Object-Oriented Modeling
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.
Design Principles
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.
Capstone Challenge
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.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Suitable for continuing Java learners who have an interest in object-oriented design
Taught by Kenny Wong, who is recognized for their expertise in object-oriented programming and design
Covers a range of topics relevant to object-oriented design, such as modeling, principles, and patterns
Includes a Capstone Project that provides hands-on experience in applying the concepts learned
Offers a strong foundation in object-oriented design and modeling
Requires learners to have a basic understanding of Java

Save this course

Save Object-Oriented Design to your list so you can find it easily later:
Save

Reviews summary

Robust software engineering

learners say this course elevates software design and programming skills, particularly in Java and through the application of object-oriented analysis and design principles. According to students, a strength of the course is the capstone project, which involves evolving and documenting a Java codebase for an Android application, accompanied by comprehensive UML documentation. Other key takeaways include, development of advanced object-oriented design skills and proficiency in communicating complex designs through the use of Unified Modeling Language (UML).
This course also covers the crucial tradeoff between cohesion and coupling in software design. Cohesion refers to the degree to which a module or class is focused on a single responsibility. Coupling refers to the degree to which a module or class depends on other modules or classes. Finding the right balance between cohesion and coupling is essential for creating high-quality, maintainable software.
"Insight into the crucial tradeoff between cohesion and coupling in software design."
The course's capstone project challenges learners to evolve and document a Java codebase for an Android application, accompanied by comprehensive UML documentation.
"Capstone Project Challenge: Application of acquired knowledge through a challenging Capstone Project involving the evolution and documentation of a Java codebase for an Android application, accompanied by comprehensive UML documentation."
"practical experience in Android which is useful to apply theoretical concept in real programming"
In addition to OO concepts, this course also covers Unified Modeling Language (UML), a standard visual notation for software modeling. Students will learn how to use UML to communicate complex designs. This is a valuable skill for software engineers, as it allows them to create visual representations of their designs that can be easily understood by other team members.
"Unified Modeling Language (UML): Proficiency in communicating complex designs through the use of Unified Modeling Language (UML), a standard visual notation for software modeling."
This course provides a deep dive into object-oriented (OO) analysis and design principles, with a focus on Java programming. Students will learn how to create modular, flexible, and reusable software through the application of OO design principles and guidelines. They will also acquire the skills to analyze and design sophisticated software systems.
"Advanced Object-Oriented Design: Mastery of creating modular, flexible, and reusable software through the application of object-oriented design principles and guidelines."
"Acquisition of skills to analyze and design sophisticated software systems."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Object-Oriented Design with these activities:
Attend a study group
Enhance your learning by discussing course material with your peers.
Browse courses on Object-oriented Design
Show steps
  • Identify or create a study group
  • Meet regularly to discuss course material
Participate in a coding competition
Develop your skills under pressure by participating in a coding competition.
Browse courses on Java
Show steps
  • Find an appropriate competition
  • Prepare for the competition
  • Participate in the competition
Read a reference book
Reinforce your understanding of the principles of object-oriented programming and design by reading a foundational text.
Show steps
  • Identify key concepts
  • Review examples
  • Create your own UML diagrams
Five other activities
Expand to see all activities and additional details
Show all eight activities
Solve object-oriented design problems
Develop your problem-solving skills by practicing object-oriented design problems.
Browse courses on Object-oriented Design
Show steps
  • Find a set of practice problems
  • Work through the problems
  • Check your solutions
Build a simple Java application
Apply the design principles you learn in this course to a practical project.
Browse courses on Java
Show steps
  • Design and plan your application
  • Implement your design in Java
  • Test and debug your application
Follow tutorials on advanced Java topics
Expand your knowledge of Java and object-oriented programming by following tutorials.
Browse courses on Java
Show steps
  • Identify areas where you need additional knowledge
  • Find relevant tutorials
  • Complete the tutorials
Write a blog post about object-oriented design
Deepen your understanding of object-oriented design by explaining it to others in a blog post.
Browse courses on Object-oriented Design
Show steps
  • Choose a specific topic
  • Research and gather information
  • Write your blog post
  • Share your blog post
Create a cheat sheet for object-oriented design
Reinforce your understanding of object-oriented design by creating a quick reference for yourself.
Browse courses on Object-oriented Design
Show steps
  • Gather relevant information
  • Organize the information in a logical way
  • Create a visual and concise cheat sheet

Career center

Learners who complete Object-Oriented Design will develop knowledge and skills that may be useful to these careers:
Software Architect
Software Architects design and build the structure and overall architecture of software systems. This course teaches the foundational principles that most modern software and programming languages are built upon, making it a valuable resource for an aspiring or practicing Software Architect.
Software Developer
Software Developers design, develop, and test software and applications. As most software today is built on object-oriented languages, this course will teach you the principles of OOP. This forms a solid foundation for your career as a Software Developer, preparing you to work on the development of new software.
Software Engineer
Software Engineers design, develop, maintain, and test software solutions. To be successful in this role, you will need to understand the principles of OOP. This course teaches you these foundational principles and how to apply them to software engineering.
Systems Analyst
Systems Analysts study an organization's current business processes and solve problems by developing software solutions. This course will equip you with the skills necessary for designing and developing object-oriented solutions to meet the needs of the business.
Technical Architect
Technical Architects design and implement technology solutions for organizations. This course can help you develop the skills to design software solutions that are modular, flexible, and reusable. You will also learn how to apply design guidelines for maintainability and conceptual integrity, which are essential for Technical Architects.
Web Developer
Web Developers design and develop websites and web applications. This course can be a valuable foundation for your career as a Web Developer, which typically involves using object-oriented programming languages to build dynamic web applications.
Mobile Application Developer
Mobile Application Developers design, develop, and maintain software applications for mobile devices. If you want to break into this field, this course can help teach you the principles of object-oriented programming. You will also learn how to design and develop modular, flexible, and reusable software solutions.
Data Analyst
Data Analysts collect, clean, and analyze data to identify trends and patterns. This course can teach you how to use object-oriented programming principles to design and develop software solutions for data analysis.
Business Analyst
Business Analysts work with stakeholders to define, gather, and document the business requirements for software solutions. To be successful in this role, you will need to be able to understand and communicate object-oriented design concepts. This course can act as a springboard in your career as a Business Analyst by teaching you the principles of object-oriented design, which are essential for understanding and documenting software requirements.
Information Security Analyst
Information Security Analysts design, implement, and maintain security measures to protect an organization's information systems. This course may be useful in this role, as it can teach you how to design and develop object-oriented solutions for information security.
Database Administrator
Database Administrators design, implement, and maintain databases. This course may be useful in this role, as it can teach you how to design and develop object-oriented solutions for data management.
Network Administrator
Network Administrators design, implement, and maintain computer networks. This course may be useful in this role, as it can teach you how to design and develop object-oriented solutions for network management.
Computer Support Specialist
Computer Support Specialists provide technical support to users of computer systems. This course may be useful in this role, as it can teach you how to troubleshoot and resolve technical issues related to object-oriented software.
Quality Assurance Analyst
Quality Assurance Analysts test and evaluate software to ensure that it meets the requirements and standards. This course may be useful in this role, as it can teach you how to design and develop object-oriented software that meets quality standards.
Project Manager
Project Managers plan, execute, and close projects. This course may be useful in this role, as it can teach you how to manage projects related to object-oriented software development.

Reading list

We've selected 14 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Object-Oriented Design.
This classic book on object-oriented design approaches the topic from a holistic perspective, covering analysis, design, and implementation. It comprehensive reference that can be used to supplement the course material.
This approachable book uses real-world examples and a conversational tone to explain design patterns. It valuable resource for beginners who want to understand the concepts and practical applications of design patterns.
Covers the principles and practices of agile software development, including object-oriented design. It provides insights into how to create flexible and responsive software systems that meet the changing needs of users.
Provides a set of principles and practices for writing clean and maintainable code. It covers topics such as naming conventions, code organization, and error handling, which are essential for creating well-designed software.
Provides techniques and strategies for refactoring existing code to improve its design and maintainability. It valuable resource for developers who want to enhance the quality of their codebase.
Introduces a domain-driven design approach that focuses on understanding the business domain and modeling it effectively in software. It provides valuable insights into how to create software that is aligned with business needs and easy to maintain.
This introductory book on Java programming great resource for beginners who want to learn the basics of object-oriented programming. It provides clear explanations and real-world examples to help students understand the concepts and syntax of Java.
This comprehensive reference book covers all aspects of the Java programming language. It provides detailed explanations of syntax, semantics, and the Java class library. It valuable resource for developers who want to deepen their understanding of Java.
Provides a collection of best practices and tips for writing effective Java code. It covers topics such as object creation, memory management, and concurrency. It valuable resource for developers who want to improve the quality and performance of their code.
Provides a comprehensive guide to concurrency in Java. It covers topics such as thread synchronization, deadlock avoidance, and performance optimization. It valuable resource for developers who want to create concurrent and scalable software systems.
Provides a collection of heuristics and guidelines for object-oriented design. It covers topics such as class design, inheritance, and polymorphism. It valuable resource for developers who want to improve the quality of their object-oriented designs.
Provides a clear and concise explanation of design patterns. It covers topics such as creational, structural, and behavioral patterns. It valuable resource for developers who want to understand and apply design patterns in their own code.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Object-Oriented Design.
Java Design Patterns & SOLID Design Principles
Most relevant
UML and Object-Oriented Design Foundations
Most relevant
Advanced Object Oriented Analysis of Hard Problems using...
Most relevant
Software Architecture
Most relevant
Fundamentals of Object Oriented Programming in Java
Most relevant
Design Patterns in Java
Most relevant
Java Class Library
Most relevant
UML Class Diagrams for Software Engineering
Most relevant
Experience Design Patterns In Java
Most relevant
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser