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

Online Course

Object-Oriented Design

University of Alberta via 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.

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.


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.

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.

Taught by

Kenny Wong

Related Courses


4.3 rating, based on 29 reviews

Start your review of Object-Oriented Design

  • Ronald Houde completed this course.

    This course is the first of four in the Software Architecture and Design Specialization offered by the University of Alberta on Coursera. The course starts with a "whopper" when students discover that they are expected to very rapidly understand Android...
  • Anonymous

    Anonymous completed this course.

    This object-oriented course is great!, yes you have to commit time to complete it, but what you receive in exchange for your time, is a rewarding experience that will help you be a better developer. As developers, we like to jump right into coding, but the course teaches you to hold back and take your time analyzing and thinking about your solution, it gives you tools to achieve this.

    You don't need Android experience to complete the course, yes you have to download Android Studio to finish the final assignment, but they give you an almost finished project, where you apply the knowledge given in the course, so if you never build Android before, don't worry, you can do this!
  • Farsan Rashid completed this course, spending 5 hours a week on it and found the course difficulty to be easy.

    3.5 out of five. There are two reasons for taking away 1.5 star. One is using android platform to teach object oriented design and another reason is putting too much importance on uml, sequence diagram than object orject oriented programming. Now using android studio is not a good idea because it is really resource intensive application and when you are using android you are unnecessarily complicating things to teach OOP which could have been easily achieved by selecting any of the core OOP language. Lectures are well organized and enjoyed interviews of veteran OOP programmers.
  • Anonymous

    Anonymous completed this course.

    The other reviews really explain it well. The choice of Android Studio for a development environment is really a poor choice. I'm sure at the time it was sexy, but I spent almost as much time getting the lousy environment running as working on the assignments.

    That said, I guess I can claim to have some Android development experience now.

    The material covered is very good and it was a good review and filled in a few gaps in my knowledge. The UML diagram were the most critical part of the course. That will be helpful for me in the future.
  • Profile image for Andres Wang
    Andres Wang

    Andres Wang completed this course, spending 2 hours a week on it and found the course difficulty to be easy.

    This course teaches a lot about UML, not quite sure if it's still relevant these days because I just started working as a software engineer and I haven't seen anyone here does that, or it's possible that we're not in the period of designing the entire software. Anyway it'll come in handy if one day it's needed. Overall the course is not that hard, the concepts are well explained with straightforward examples, and they put a lot efforts into graphics.
  • Anonymous

    Anonymous completed this course.

    I didn't quite understand the concept of nested activations. When an object is activated we use rectangles drawn along the object life line. I don't understand why and when we should use nested rectangles on an object's lifeline. Maybe these concepts should be explained in the video related to UML sequence diagrams with some examples.
  • Anonymous

    Anonymous completed this course.

    It's a really good course, the reason why I rate this course only with 3 stars is because android platform as a method to explain Design in OOP is not the best approach for people who dont know android. It should be only mandatory to have a good understanding of Java or other any OOP language.
  • Anonymous

    Anonymous completed this course.

    I found this course very helpful. Concepts are explained succinctly. The capstone projects ensure that you implement what you learnt . Plus point is emphasis on UML.. drawing UML Reinforcing what has been learnt .
  • Profile image for Md. Golam Hossain
    Md. Golam Hossain

    Md. Golam Hossain completed this course, spending 2 hours a week on it and found the course difficulty to be medium.

    Recommended for those who prefers design before starting coding. Those who are now responsible to design projects and guide fellow developers will be benefited.
    The only complication that one may face is the course's demand of using android studio. The course could be designed language or framework agnostic all the way.
  • Anonymous

    Anonymous completed this course.

    I attended the course to be able to communicate better with our developers. Since I regularly get to see the code I am now able to better understand it and discuss design approaches.
  • Anonymous

    Anonymous completed this course.

    It is an interesting and useful course to improve software design.
    The material is well written and easy to follow.
  • Anonymous

    Anonymous completed this course.

    I liked the course. Even the project is based on Android. But you can complete it even if don't have Android knowledge. All you need is understanding of JAVA.
  • Anonymous

    Anonymous completed this course.

    The course is challenging and requires to go through some topics several times, do a lot of reading , exams, and, whats the best, a lot of practical excerises. By the end of course you will have solid skills in UML Class Diagrams, UML Sequence Diagrams,...
  • Anonymous

    Anonymous completed this course.

    Hello , thanks for the opportunity to comment and suggest. Overall I was impressed by the way videos were created, presented and built, it was interesting, gradually built and added to my knowledge. Technical issues prevented me to participate in discussions,...
  • Profile image for Tanzim Mokammel
    Tanzim Mokammel

    Tanzim Mokammel completed this course and found the course difficulty to be medium.

    The course content is extremely useful. The lecture videos are very well done. I really enjoyed the interviews. The pdf notes will be will provide value to me for years to come, and I plan to distribute them to my coworkers to share a common design language....
  • Shreyansh Gupta completed this course, spending 2 hours a week on it and found the course difficulty to be easy.

    It was quiet basic course about Object Oriented Design, Although course content was good but assignments about android app added unnecessary complexity to the course. So, while doing assignment you would waste half the time figuring out how do I make this damn android studio work or how do I build this app without any errors. Although some textual tutorials are provided to get you started about the whole android thing but still, they could have chosen something basic which didn't require knowledge about some specific platform. I would have given it 5 stars but android just spoiled the whole course.
  • Anonymous

    Anonymous completed this course.

    I expected a little more from the course. On the positive side, I like how the basic concepts are addressed. Having all the material in PDF was really useful. On the negative side, the android code used for the exercises is not the best. All the exercises could have been done with plain java code. Overall, I enjoyed the course but there are areas to improve. Adding extra examples on how to differentiate the key concepts when you see it in code could have helped.
  • Profile image for Vishnuwardhan Srikanth
    Vishnuwardhan Srikanth
    This course covers all the fundamentals related to Object-Oriented design and provides good notes for clarity and revision. The assignments are well though out and involve analysing and enhancing an actual working Android app, allowing you to test your skills on something close to real life. Kudos to the course team, and I would definitely recommend the course for gaining a solid foundation in Object-Oriented Design.
  • Anonymous

    Anonymous completed this course.

    The content of this course is very helpful and clear. The assignments wouldn't take much time but fulfil the purpose of practice. However, the grade of the course totally depends on peer evaluation. Peer evaluation is good and helps you learn from others' work but I hope everyone will grade others' assignments responsibly.
  • Anonymous

    Anonymous completed this course.

    Course content is excellent. Videos present material in easy-to-understand, bite-size chunks.

    Assignments are helpful to solidify understanding.

    Grading of peer assignments can get confusing, because multiple different assignments sometimes are dumped into a common forum. Suggest each assignment should go to it's own forum.

Class Central

Get personalized course recommendations, track subjects and courses with reminders, and more.

Sign up for free

Never stop learning Never Stop Learning!

Get personalized course recommendations, track subjects and courses with reminders, and more.

Sign up for free