We may earn an affiliate commission when you visit our partners.
Course image
Karoly Nyisztor • Professional Software Architect

The best-selling UML and Object-Oriented Design course on Udemy. Companion eBook included.

Read more

The best-selling UML and Object-Oriented Design course on Udemy. Companion eBook included.

Explore the fundamental concepts behind modern, object-oriented software design best practices. Learn how to work with UML to approach software development more efficiently.

This course will help you become familiar with the fundamentals of object-oriented design and analysis*. I'll introduce each concept using simple terms, avoiding confusing jargon. We'll focus on the practical application, using hands-on examples you can use for reference and practice. 

(*)Many universities across the world require their students to complete this course as part of their Systems Analysis and Design curriculum.

Throughout the course, I'll walk you through several examples related to software design and UML. Plus, we'll delve into a case study to review all the steps of designing a real software system from start to finish.

What qualifies me to teach you? I have more than 25 years of software development expertise. I've worked for companies like Apple, Siemens, and SAP. As a software architect, I have designed and built several enterprise systems and frameworks, including core components of Siemens Healthcare's syngo image processing system. I'm one of the senior software architects behind the SAP Cloud Platform SDK for iOS, a framework built by Apple and SAP. I currently hold twelve patents related to inventions in the field of mobile computing.

Topics include:

  • Understanding software development methodologies

  • Choosing the right methodology: Waterfall vs. Agile

  • Fundamental object-Orientation concepts: Abstraction, Polymorphism, and more

  • Collecting requirements

  • Mapping requirements to technical descriptions

  • Unified Modeling Language (UML)

  • Use case, class, sequence, activity, and state diagrams

  • Designing a Note-Taking App from scratch

You will acquire professional and technical skills, together with an understanding of object-orientation principles and concepts. After completing this course, you'll be able to understand the inner workings of object-oriented software systems. You will communicate easily and effectively with other developers using object-orientation terms and UML diagrams.

I also recommend it to anyone who's thinking of recording a tutorial." - Colin Hughes

"This was great and helped me crack an interview. Thank you so much. " - Ashutosh Bhokare

"I was looking for a course on UML to refresh my knowledge in UML. My main expectation was a concise course that touched on all the aspects of UML; I am glad to say that this course met and exceeded my expectations." - Faithman Stephen Narte

"Excellent course. It helps me to retrieve some UML concepts that I've forgotten, and I'll apply them in my work with future projects. Thanks a million. " - Ernesto Antonio Rodriguez Acosta

"I am a software development college student and this course helped me A LOT with my studies and tests. The content is clear, essential and to the point. Thank you very much. " - Miriam Wojcik

"Great course, I particularly like the fact that Mr. Nyisztor began with the concepts of OO design outside UML." - Randall Reed

"This course is the best online course I have ever taken." - Syed Aqib

"Good course. Easy to understand and apply. You'll get up and running quickly with UML diagrams." - Panos Filippakos

"I was amazed by the clarity of the explanation of the terminology - pokemon rules ;)" - Adam Rudnicki

  • Personalized supportAs a student of this course, you’ll get access to the course's private forum, where I answer questions and provide support if necessary.

  • The companion eBook

  • Downloadable resourcesYou get downloadable UML cheat sheets you can use as quick reference guides.

  • Continuous updatesI keep enhancing this course to provide fresh and up-to-date content.

  • OUR 30-DAY MONEY- We want to make sure you're completely satisfied with the course. That's why we're happy to offer you this money-back guarantee.

    Go ahead and click the enroll button. See you in the first lesson.

    Enroll now

    What's inside

    Learning objectives

    • Learn uml from a leading expert
    • Think as professional software designers
    • Gain a working knowledge of object-oriented design and uml 2.0
    • Communicate more clearly and eliminate misunderstandings
    • Get the companion ebook for free! (sells for $28.80 on amazon)
    • Get ready for technical job interviews
    • Increase your software development productivity
    • Create professional uml diagrams

    Syllabus

    Welcome to my course! In this section, I'm going to briefly walk you through the main course topics. I'll also talk about the tools I use and some of the prerequisites of this course.
    Read more

    Here's a brief overview of the main topics we're going to discuss.

    Before starting the course, you should be aware of some prerequisites.

    Please join our official group to get even more feedback and support!

    Picking the right approach and structure for your software projects is essential. This module provides an overview of Waterfall and Agile.

    Managing complex projects wouldn't be possible without systems and rules. In this section, we'll talk about the traditional and the agile approach used for developing software systems.

    Dive in to understand how choosing the right development process can streamline your project, whether you're working solo or in a team. This video serves as a primer, establishing a clear contrast between Waterfall's structured phases and Agile's flexible, iterative process.

    Let's take a closer look at the Waterfall model, which is being used successfully in life-control, medical and military systems.

    Waterfall's rigidity doesn't fit every project. Enter Agile, a dynamic alternative for when flexibility is key.

    Has Waterfall become obsolete? Is Agile always the best option? The answer to both questions is "No." 
    And here's why.

    How Well Do You Know the Waterfall and Agile Software Development Methodologies?
    You'll learn about the fundamental concepts of Object-Oriented software design and development. Understanding them will allow you to design and implement better, easier to enhance software systems.

    Although software engineering is a relatively new field, computer programs are present in nearly every aspect of our lives. This lecture is a brief walkthrough of the history of programming. 

    While structured programming relies on actions, Object-Oriented programming is organized around objects. So, let's talk about objects.

    OOP is all about objects. But, to create an object, we need to have a class first.

    Abstraction is one of the fundamental concepts in Object-Oriented programming. This lesson will clarify the "whys" and "hows".

    Encapsulation and data hiding are the other pillars of OOP.

    Inheritance is a key concept in Object-Oriented Programming. Without inheritance, we’d end up redundant code over and over again.

    Polymorphism is the final object-orientation term we discuss. In this lesson, we'll also use a coding example to demonstrate how polymorphism works.

    Object-orientation skill tests

    Learn the various steps of the Object-Oriented software analysis and design process. Mastering these concepts will let you design your software systems more efficiently.

    How should we start creating an object-oriented system? Is there any recipe for it? In this lecture, I'm going to provide the answer.

    The requirements collection or requirements analysis phase paves the road for all the other phases of the object-oriented software design.

    Once we gathered the requirements, we can feed them to the next step of the software design process.

    Here's why we need a common design language like the Unified Modeling Language.

    Let's dive into UML. You'll learn about the core UML concepts and the fundamental UML diagram types. This UML introduction will make it easier for you to understand the upcoming detailed lectures.

    The Unified Modeling Language is a graphical notation rather than a textual programming language. In this lecture, we'll see how UML helps us in describing the structure and the functionality of a software system.

    The use case diagram visualizes the functional requirements of the system. Although it's simple, it's quite powerful. Let's see how it works.

    Let's put what you've learned into action by solving a challenge. Your goal is to draw a use case diagram that provides an overview of an elevator system.

    In this video, I show you how I would approach this challenge.

    In this lecture, we'll delve into class diagrams, the most frequently used UML diagram types. 

    Your goal for this challenge is to create the class diagram of an elevator maintenance robot.

    Check out my solution for the Elevator Maintenance Robot class diagram.

    UML allows us control who can access the attributes and the methods of our classes. This lecture is about visibility.

    The next logical step after identifying the key classes in our system is figuring out the relationships between them.
    First, we'll talk about associations.

    In UML, we use generalization to express that one model element is based on another model element.

    In this video, we'll talk about the other UML relationships: dependency, aggregation, composition and realization.

    UML provides dynamic diagrams to represent how objects communicate with each other. The most common dynamic diagram is the sequence diagram.

    The activity diagram is a useful technique to represent behavioral logic.

    Statechart diagrams describe the states of an object while identifying the events responsible for the state changes.

    Various quizzes to verify your knowledge about the most frequently used UML diagrams.

    Solidify the concepts you learned by designing a real application from scratch

    I firmly believe that the best way to learn is by doing. In this module, I'll walk you through the process of designing a note-taking application. This exercise will allow you to practice the concepts you've learned so far.

    In this lecture, I’m going to illustrate the requirements collection phase through a real example.

    Now that we've got the requirements, let's write some user stories.

    In this lecture, we’re going to represent our user stories as use case diagrams.

    Let’s create the static structure of our system. We’ll identify the main classes and the relationships between them.

    We'll describe the note creation scenario in the form of a sequence diagram.

    The possible states of a note object expressed through a statechart diagram.

    The case study as downloadable PDF.

    In this section, I answer questions asked by students enrolled in my course "UML and Object-Oriented Design Foundation"

    I’ve got a question in the Q&A section. The student could not create associations in the use case diagram. So, here’s a quick video showing how to do that.

    You reached the end of this course. Yet learning never ends. Here are some additional tools and resources that will help you in deepening your knowledge.

    UML can help us express our ideas clearly. But how much UML do you actually need to know to become a successful software developer?

    Closing thoughts.

    Design an application of your choice

    Useful quick reference guides.

    Here's the companion eBook as a special gift to you (129 pages print length, sells for $28.80 on Amazon).

    Access links to free resources and coupon codes for discounts on my other courses.

    Good to know

    Know what's good
    , what to watch for
    , and possible dealbreakers
    Clearly teaches core concepts of OOP which are concepts all software developers need to know no matter their roles
    Teaches Waterfall and Agile methodologies, which are valuable to software developers of all levels
    Develops solid fundamentals in object-oriented software design and analysis, providing a foundation for advanced learning
    Taught by Karoly Nyisztor, a professional software architect with over 25 years of software development expertise working with companies such as Apple, Siemens, and SAP
    Examines UML, which is a standard notation for software design, widely used in industry
    Provides personalized support through a course forum where students can ask questions and get feedback from the instructor

    Save this course

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

    Reviews summary

    Clear uml introduction

    Learners say that this course is a clear introduction to UML. They find the presentation of the course to be helpful and say that topics flow well from one to another.
    Topics in the course flow well from one to another.
    "each topic tied very well with the next."
    The course presents UML concepts in a clear way.
    "The presentation of the course was very clear..."
    "It was a very good entry point for UML, having not applied it for many years."

    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 UML and Object-Oriented Design Foundations with these activities:
    Organize and Review Course Materials
    Enhance your retention and understanding by organizing and reviewing your class notes, assignments, quizzes, and exams.
    Show steps
    • Gather all relevant course materials.
    • Organize the materials in a logical manner.
    • Review the materials regularly.
    Refresher - Object-Oriented Programming Concepts
    Review the foundational principles of object-oriented programming, including encapsulation, inheritance, and polymorphism, to strengthen your grasp of the concepts covered in this course.
    Show steps
    • Revisit online tutorials or textbooks on OOP principles.
    • Work through practice problems or coding exercises to reinforce your understanding.
    • Review notes or materials from previous OOP courses or workshops.
    Review - Head First Object-Oriented Analysis and Design
    Enhance your understanding of object-oriented design and analysis by exploring real-world examples and practical techniques explained in this book.
    Show steps
    • Read selected chapters or sections that align with the topics covered in the course.
    • Summarize key concepts and principles in your own words.
    • Apply the concepts to practical examples or scenarios.
    Four other activities
    Expand to see all activities and additional details
    Show all seven activities
    UML Diagram Exercises
    Sharpen your skills in creating and interpreting UML diagrams through guided exercises and practice problems.
    Browse courses on UML
    Show steps
    • Find online resources or textbooks that provide UML exercises.
    • Practice drawing use case, class, and sequence diagrams.
    • Analyze and interpret existing UML diagrams to understand their structure and meaning.
    Design a UML Model for a Real-World System
    Apply your UML knowledge by designing a UML model for a real-world system, such as a library management system or an e-commerce platform.
    Browse courses on UML
    Show steps
    • Identify a suitable real-world system to model.
    • Gather requirements and analyze the system's functionality.
    • Create use case, class, and sequence diagrams to represent the system's structure and behavior.
    • Validate your model by presenting it to peers or instructors for feedback.
    Attend a UML Workshop
    Participate in a UML workshop led by experienced instructors to gain hands-on experience and deepen your understanding.
    Browse courses on UML
    Show steps
    • Research and identify relevant UML workshops in your area or online.
    • Register and attend the workshop.
    • Actively participate in the exercises and discussions.
    Advanced UML Design Techniques
    Expand your UML skills by exploring advanced topics such as design patterns, component diagrams, and state machines through guided tutorials.
    Browse courses on UML
    Show steps
    • Find online tutorials or courses that cover advanced UML techniques.
    • Follow the tutorials step-by-step, creating diagrams and applying the concepts.
    • Experiment with applying these techniques to your own design projects.

    Career center

    Learners who complete UML and Object-Oriented Design Foundations will develop knowledge and skills that may be useful to these careers:
    Software Engineer
    Software Engineers are responsible for designing, developing, and maintaining software systems. This course provides a strong foundation in object-oriented design principles and the Unified Modeling Language (UML), which are essential skills for Software Engineers. The course also covers the software development process, from requirements gathering to design and implementation. This knowledge can help Software Engineers succeed in their roles by enabling them to design and develop software systems that are efficient, reliable, and maintainable.
    Software Architect
    Software Architects are responsible for designing the overall architecture of software systems. This course provides a strong foundation in object-oriented design principles and the Unified Modeling Language (UML), which are essential skills for Software Architects. The course also covers the software development process, from requirements gathering to design and implementation. This knowledge can help Software Architects succeed in their roles by enabling them to design software systems that are efficient, reliable, and maintainable.
    Systems Analyst
    Systems Analysts are responsible for analyzing and designing business systems. This course provides a strong foundation in object-oriented design principles and the Unified Modeling Language (UML), which are essential skills for Systems Analysts. The course also covers the software development process, from requirements gathering to design and implementation. This knowledge can help Systems Analysts succeed in their roles by enabling them to design and implement business systems that are efficient, effective, and meet the needs of the organization.
    Business Analyst
    Business Analysts are responsible for analyzing business needs and translating them into technical requirements. This course provides a strong foundation in object-oriented design principles and the Unified Modeling Language (UML), which are essential skills for Business Analysts. The course also covers the software development process, from requirements gathering to design and implementation. This knowledge can help Business Analysts succeed in their roles by enabling them to effectively communicate with both business and technical stakeholders.
    Project Manager
    Project Managers are responsible for planning, executing, and controlling software development projects. This course provides a strong foundation in the software development process, from requirements gathering to design and implementation. The course also covers project management techniques, such as risk management and quality assurance. This knowledge can help Project Managers succeed in their roles by enabling them to manage software development projects effectively and efficiently.
    Database Administrator
    Database Administrators are responsible for designing, developing, and maintaining database systems. This course provides a strong foundation in object-oriented design principles and the Unified Modeling Language (UML), which can be useful for designing database schemas. The course also covers the software development process, from requirements gathering to design and implementation. This knowledge can help Database Administrators succeed in their roles by enabling them to design and implement database systems that are efficient, reliable, and meet the needs of the organization.
    Web Developer
    Web Developers are responsible for designing, developing, and maintaining websites and web applications. This course provides a strong foundation in object-oriented design principles and the Unified Modeling Language (UML), which can be useful for designing the architecture of web applications. The course also covers the software development process, from requirements gathering to design and implementation. This knowledge can help Web Developers succeed in their roles by enabling them to design and implement web applications that are efficient, reliable, and meet the needs of the organization.
    Mobile Developer
    Mobile Developers are responsible for designing, developing, and maintaining mobile applications. This course provides a strong foundation in object-oriented design principles and the Unified Modeling Language (UML), which can be useful for designing the architecture of mobile applications. The course also covers the software development process, from requirements gathering to design and implementation. This knowledge can help Mobile Developers succeed in their roles by enabling them to design and implement mobile applications that are efficient, reliable, and meet the needs of the organization.
    Game Developer
    Game Developers are responsible for designing, developing, and maintaining video games. This course provides a strong foundation in object-oriented design principles and the Unified Modeling Language (UML), which can be useful for designing the architecture of video games. The course also covers the software development process, from requirements gathering to design and implementation. This knowledge can help Game Developers succeed in their roles by enabling them to design and implement video games that are efficient, reliable, and meet the needs of the organization.
    Technical Writer
    Technical Writers are responsible for creating documentation for software systems. This course provides a strong foundation in object-oriented design principles and the Unified Modeling Language (UML), which can be useful for understanding the technical details of software systems. The course also covers the software development process, from requirements gathering to design and implementation. This knowledge can help Technical Writers succeed in their roles by enabling them to create documentation that is clear, concise, and accurate.
    User Experience Designer
    User Experience Designers are responsible for designing the user interface of software systems. This course provides a strong foundation in object-oriented design principles and the Unified Modeling Language (UML), which can be useful for understanding the technical details of software systems. The course also covers the software development process, from requirements gathering to design and implementation. This knowledge can help User Experience Designers succeed in their roles by enabling them to design user interfaces that are intuitive, easy to use, and meet the needs of the organization.
    Quality Assurance Analyst
    Quality Assurance Analysts are responsible for testing software systems for bugs and defects. This course provides a strong foundation in the software development process, from requirements gathering to design and implementation. The course also covers testing techniques, such as unit testing and integration testing. This knowledge can help Quality Assurance Analysts succeed in their roles by enabling them to effectively test software systems and identify and fix bugs.
    IT Consultant
    IT Consultants are responsible for providing advice and guidance to organizations on how to use technology to improve their business. This course provides a strong foundation in the software development process, from requirements gathering to design and implementation. The course also covers IT consulting techniques, such as project management and risk management. This knowledge can help IT Consultants succeed in their roles by enabling them to effectively advise and guide organizations on how to use technology to achieve their business goals.
    Data Scientist
    Data Scientists are responsible for collecting, analyzing, and interpreting data to extract insights and knowledge. This course provides a strong foundation in the software development process, from requirements gathering to design and implementation. The course also covers data science techniques, such as machine learning and data mining. This knowledge can help Data Scientists succeed in their roles by enabling them to effectively collect, analyze, and interpret data to extract valuable insights and knowledge.
    Computer Teacher
    Computer Teachers are responsible for teaching students about computers and technology. This course provides a strong foundation in the software development process, from requirements gathering to design and implementation. The course also covers teaching methods and techniques. This knowledge can help Computer Teachers succeed in their roles by enabling them to effectively teach students about computers and technology.

    Reading list

    We've selected 16 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 UML and Object-Oriented Design Foundations.
    This classic text provides a comprehensive overview of object-oriented analysis and design, with a focus on the Unified Modeling Language (UML). It valuable resource for readers who want to learn more about the theory and practice of object-oriented software development.
    Great resource for readers who want to learn more about the best practices of software development. It provides a comprehensive overview of the principles of clean code and how to write code that is easy to read, maintain, and extend.
    Great resource for readers who want to learn more about domain-driven design, a software development approach that focuses on the domain of the problem being solved. It provides a comprehensive overview of the domain-driven design process and how to use it to improve software quality.
    Great resource for readers who want to learn more about test-driven development, a software development approach that emphasizes the importance of writing tests before writing code. It provides a comprehensive overview of the test-driven development process and how to use it to improve software quality.
    Great resource for readers who want to learn more about software architecture. It provides a comprehensive overview of the different principles of software architecture and how to use them to design high-quality software.
    Great introduction to design patterns for readers who are new to the concept. It uses a friendly and engaging style to explain the different types of design patterns and how to use them in software development.
    Great resource for readers who want to learn more about software testing. It provides a comprehensive overview of the different software testing techniques and how to use them to improve software quality.
    Great resource for readers who want to learn more about the best practices of software development. It provides a comprehensive overview of the different aspects of software development and how to do them well.
    Great resource for readers who want to learn more about the best practices of Java development. It provides a comprehensive overview of the different features of Java and how to use them effectively.
    Great resource for readers who want to learn more about concurrency in Java. It provides a comprehensive overview of the different concurrency features of Java and how to use them to write concurrent software.
    Great introduction to Java for readers who are new to the language. It uses a friendly and engaging style to explain the different features of Java and how to use them to write software.
    Great resource for readers who want to learn more about Scrum, a popular agile software development framework. It provides a comprehensive overview of the Scrum process and how to use it to improve software development productivity.
    Great resource for readers who want to learn more about software engineering. It provides a comprehensive overview of the different software engineering practices and how to use them to develop high-quality software.

    Share

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

    Similar courses

    Here are nine courses similar to UML and Object-Oriented Design Foundations.
    Object-Oriented Design
    Most relevant
    Advanced Object Oriented Analysis of Hard Problems using...
    Most relevant
    Software Engineering: Implementation and Testing
    Most relevant
    Software Engineering: Software Design and Project...
    Most relevant
    Software Engineering: Modeling Software Systems using UML
    Most relevant
    Practice Java by Building Projects
    Most relevant
    Software Development From A to Z - Beginner's Complete...
    Most relevant
    302: Software Engineeri
    Most relevant
    Software Architecture
    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