Skip to content
CourseraJavaFree courseCertificate

Object-Oriented Design

In the Software Design and Architecture Specialization, you will learn how to apply design principles, patterns, and architectures to create reusable and flexible software applications and systems. You will learn how to express and document the design and architecture of a software system using a visual notation.Practical examples and opportunities to apply your knowledge will help you develop employable skills and relevant expertise in the software industry.

Created by: Kenny Wong

icon
Quality Score

Content Quality
/
Video Quality
/
Qualified Instructor
/
Course Pace
/
Course Depth & Coverage
/

Overall Score : 88 / 100

icon
Course Description

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.

icon
Instructor Details

placeholder

Kenny Wong is an Associate Professor in the Department of Computing Science, at the University of Alberta, Canada. He received his B.Sc. and Ph.D. degrees in Computer Science from the University of Victoria, Canada. He has been a university instructor for 16 years, regularly teaching team-oriented, project-based software engineering courses, including several offerings of software process and product management. His research in software engineering focuses on analyzing the root causes of problems in the structure, behavior, and management of complex software systems.

icon
More Java courses

Free

$84.99

$119.99

$174.99

$17.99

$12.99

icon
Reviews

4.4

139 reviews in total

Select a bar to show only those reviews.Select the bar again to show every rating.

By Viviana D on 11-Nov-19

This course is a great introduction to OOP. I liked that all videos and all materials are well prepared, you can notice the effort and professionalism. The course is also very organized. Congratulations to the team. The methodology that coursera has to evaluate your knowledge is not the best since the peer reviews sometimes will not show feedback or where to improve.

By Stoyan K on 10-Nov-19

Really helpful. I give this curs the maximum though I thing that it would be better if there were more assignments to practice. Or more examples even they are not reviewed in the videos.

practical part of this course is not interesting because of android specific. From my point it should be more independent form any platform and frameworks

By Shelly S G on 6-Nov-19

I was able to grasp fundamentals in software design

By Luiger J R R on 6-Nov-19

Great course, very good thematic and phenomenal explanation

By Ashok on 1-Nov-19

Best course ever

By David P T on 29-Oct-19

I am an Experienced programmer; the course provided a pretty good review of basic OO programming techniques (Encapsulation, Inheritance, etc.). Not that much that was really new to me, but still useful.The Class assignments involve Android Software development, so if you are not an experienced Android developer you may spend more time learning Android than OO. If you have not done Android development and are not really interested in learning, this may not be the best class to take. I have a moderate amount of Android experience but not UI development so I spent a fair amount of time learning about Android App development, but since some of my job involves developing Android Apps it was probably worthwhile.So if you're considering this class and are not an experienced Android developer, consider whether you want to learn OO AND Android, or just OO. In the later case, this may not be the right class for you.

By Hang P on 28-Oct-19

It’s very brief for a course in ood and the reading materials are not the best but i still learn some from this course

By Gerald H on 18-Oct-19

The course content is good. The assignments are mainly drawing UML diagrams with peer review, where it can take quite long to get feedback. Overall a good course for beginners wanting to learn about good object oriented design.

By Pokala R N on 18-Oct-19

very helpful and learned new things

By Miguel A on 9-Oct-19

I spent a lot of time looking how to be better at practicing OOP and this course was exactly what I needed. The material was clear and well explained and just all around fun to learn. Those video transcripts are awesome. Thumbs up to the course developers. Great work and Thank you.

By Paddy M on 24-Sep-19

Good course - covers the key basic elements for oo design, and communicating those ideas. Practical coding assignments.

Showing 12 of 139 reviews