Object oriented programmingWatch
It's important to know how to use these features in a language first, otherwise the OO design concepts won't mean very much to you.
There's an intro to Java here which covers a lot of the core language features:
- https://eu.udacity.com/course/java-p...-basics--ud282 (Language basics)
- https://eu.udacity.com/course/object...in-java--ud283 (Classes / OO features)
If you end up using a different language like C#, VB.NET, Python, Swift or C++, then the concepts will be the same even if the syntax may be different. (C# looks almost identical to Java for this kind of thing).
Make sure you understand Abstraction and Encapsulation in relation to Class design:
Also understand the advice to 'program to an interface':
Then look at the different approaches to making relationships between different classes: Association, Aggregation and Composition
Make sure you understand the advice to "prefer composition over inheritance":
Afterwards, look at the five S.O.L.I.D. principles,
And look at common 'OO Design Patterns':
Once you understand the concepts, look at UML, which is a standard notation for expressing those ideas in a diagram :
Try this (it's free - sign up, click "Enrol" and then choose the 'Audit' option to unlock all the videos and course material)
The course is generally good and covers a lot of important concepts, although the explanations are a bit hit-and-miss in places
There's some other OO design tutorials here: https://www.youtube.com/watch?v=fJW6...4xDp7T9lCk9PgE