The best-selling UML and Object-Oriented Design course on Udemy. Companion eBook included.
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.
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!
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.
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
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.
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.
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.
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.
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.
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.
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.
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.