Object-Oriented Design (Coursera)

Offered by University of Alberta,
Object-Oriented Design (Coursera)

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.

Class Deals by MOOC List - Click here and see Coursera's Active Discounts, Deals, and Promo Codes.

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.

Course 1 of 4 in the Software Design and Architecture Specialization

Syllabus

WEEK 1
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.

WEEK 2
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.

WEEK 3
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.

WEEK 4
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.

Go to Class
MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Related Courses

Programming Reactive Systems (Scala 2 version) (Coursera) Coursera
École Polytechnique Fédérale de Lausanne

Programming Reactive Systems (Scala 2 version) (Coursera)

Reactive programming is a set of techniques for implementing scalable, resilient and responsive systems as per the Reactive Manifesto. Such systems are based on asynchronous message-passing, and their basic building-blocks are event handlers. This course teaches how to implement reactive systems in Scala and Akka by using high-level abstractions, such as actors, asynchronous computations, and reactive streams.

Aug 10th 2026
5-12 Weeks
Software Processes and Agile Practices (Coursera) Coursera
University of Alberta

Software Processes and Agile Practices (Coursera)

This course delves into a variety of processes to structure software development. It also covers the foundations of core Agile practices, such as Extreme Programming and Scrum. Upon successful completion of this course, you will be able to: distinguish between different process models for organizing software production; gauge the applicability of process models for a software development project; apply the fundamentals of Agile software development and management practices.

Aug 3rd 2026
4 Weeks
Agile with Atlassian Jira (Coursera) Coursera
Atlassian

Agile with Atlassian Jira (Coursera)

Agile teams use “just enough” planning and an incremental approach to accomplishing the work of the team. Every project and every team uses a custom agile methodology. This course discusses common foundational principles and practices used by agile methodologies, providing the student a flexible set of tools to use in any role (e.g. product owner, scrum master, project manager, team member) on any agile team.

Aug 3rd 2026
4 Weeks
UX / UI: Fundamentos para o design de interface (Coursera) Coursera
Universidade de São Paulo, Brasil

UX / UI: Fundamentos para o design de interface (Coursera)

Aprenda com uma das maiores startups do Brasil, a Taqtile sobre com criar a melhor experiência para o seu usuário, formas de gerar ideias, princípios básicos de design e como desenvolver interfaces de aplicativos e sites, esse curso introdutório é composto de aulas teóricas com exemplos práticos de aplicação de cada assunto abordado.

Aug 10th 2026
5-12 Weeks
Database Management Essentials (Coursera) Coursera
University of Colorado System

Database Management Essentials (Coursera)

Database Management Essentials provides the foundation you need for a career in database development, data warehousing, or business intelligence, as well as for the entire Data Warehousing for Business Intelligence specialization. In this course, you will create relational databases, write SQL statements to extract information to satisfy business reporting requests, create entity relationship diagrams (ERDs) to design databases, and analyze table designs for excessive redundancy.

Jul 27th 2026
5-12 Weeks
Internet of Things: Setting Up Your DragonBoard™ Development Platform (Coursera) Coursera
University of California, San Diego

Internet of Things: Setting Up Your DragonBoard™ Development Platform (Coursera)

Do you want to develop skills to prototype mobile-enabled products using state-of-the-art technologies? In this course you will build a hardware and software development environment to guide your journey through the Internet of Things specialization courses. We will use the DragonBoard™ 410c single board computer (SBC).

Jul 27th 2026
5-12 Weeks
Programming with Scratch (Coursera) Coursera
The Hong Kong University of Science and Technology - HKUST

Programming with Scratch (Coursera)

Learning coding is not only about understanding the programming language being used, but also developing important computational thinking skills, which are useful for problem solving across many disciplinary areas. In this course, students will learn basic programming skills by creating interactive storybooks, animations, and games with Scratch, which is a block-based visual programming language for anyone new to coding.

Aug 3rd 2026
5-12 Weeks
Introduction à la programmation orientée objet (en Java) (Coursera) Coursera
École Polytechnique Fédérale de Lausanne

Introduction à la programmation orientée objet (en Java) (Coursera)

Ce cours introduit la programmation orientée objet (encapsulation, abstration, héritage, polymorphisme) en l'illustrant en langage Java. Il présuppose connues les bases de la programmation (variables, types, boucles, fonctions, ...). Il est conçu comme la suite du cours « Initiation à la programmation (en Java) ».

Aug 16th 2026
5-12 Weeks
Software Architecture for the Internet of Things (Coursera) Coursera
EIT Digital

Software Architecture for the Internet of Things (Coursera)

This course will teach you how to design futureproof systems that meet the requirements of IoT systems: systems that are secure, interoperable, modifiable and scalable. Moreover, you'll learn to apply best-in-class software architecture methods to help you design complex IoT and other applications. Lastly, you'll come to understand the business impact of the technical decisions that you make as an IoT system architect.

Aug 3rd 2026
5-12 Weeks
Orientação a Objetos com Java (Coursera) Coursera
Instituto Tecnológico de Aeronáutica

Orientação a Objetos com Java (Coursera)

Neste curso, assumimos que você já sabe desenvolver programas pequenos em Java, mas você talvez não se sinta ainda confortável em projetar programas mais complexos com método e organização. O objetivo deste curso é fazer você compreender os princípios de orientação a objetos por meio da linguagem Java e saber como eficientemente aplicar esses princípios na prática quando projetando e desenvolvendo software de maneira ágil. Os conceitos discutidos e experimentados por você neste curso serão a base para você poder compreender os novos conceitos apresentados nos cursos seguintes desta especialização.

Aug 3rd 2026
5-12 Weeks