Encapsulation and SOLID

This course teaches how to write maintainable and flexible object-oriented code.
Course info
Rating
(1857)
Level
Intermediate
Updated
Aug 5, 2014
Duration
5h 10m
Table of contents
Course introduction
Encapsulation
The Single Responsibility Principle
The Open Closed Principle
The Liskov Substitution Principle
The Interface Segregation Principle
The Dependency Inversion Principle
The Coffee Maker Code Example
Description
Course info
Rating
(1857)
Level
Intermediate
Updated
Aug 5, 2014
Duration
5h 10m
Description

Learn how to write maintainable software that can easily respond to changing requirements using object-oriented design principles. First, you'll learn about the fundamental object-oriented design principle of Encapsulation, and then you'll learn about the five SOLID principles, also known as 'the principles of object-oriented design.' While this course is aimed at beginner to intermediate developers, it's based on decades of experience, so even advanced programmers can learn a thing or two. There are plenty of code examples along the way; while they're written in C#, they should be easily understandable to readers of Java or other curly-brace-based languages.

About the author
About the author

Mark Seemann is the author of Dependency Injection in .NET and the inventor of AutoFixture. He is a professional programmer and software architect living in Copenhagen, Denmark, and currently an independent advisor. He enjoys reading, drawing, playing the guitar, good wine, and gourmet food.

More from the author
Type-Driven Development with F#
Intermediate
3h 56m
17 Jul 2015
Test-Driven Development with F#
Intermediate
2h 17m
6 May 2015
Introduction to Property-based Testing with F#
Intermediate
1h 34m
17 Apr 2015
More courses by Mark Seemann
Section Introduction Transcripts
Section Introduction Transcripts

Encapsulation
Hello, my name is Mark Seemann, and this module is about Encapsulation. This is one of the topics that most programmers already think that they know a lot about because it's such a fundamental subject, but it actually turns out that when you start digging into what encapsulation is, most people actually turn out to be surprised because it was not what they thought it was. So in this module, I'm going back to basics and look at what encapsulation really means.

The Coffee Maker Code Example
Hello, my name is Mark Seemann, and this is the 8th and final module of the Encapsulation and SOLID course. This module is about the Coffee Maker code example. So what exactly is the Coffee Maker code example? Well, the Coffee Maker code example is a published problem description about this Mark IV Special Coffee Maker, and the problem description was created by Robert C. Martin and I think he originally described the problem in his book Agile Principles, Patterns, and Practices in C#. This is a book I highly recommend if you're interested in learning more about SOLID because Robert C. Martin is the author who originally assembled and described the five SOLID principles, and this is the book where he describes the SOLID principles in terms of C#. There's also an older version of this book that describes the same principles in terms of Java code, but in this case you can learn about them in C#. So I highly recommend that you read this book and you can also read about the Mark IV Special Coffee Maker there, but if you don't want to do that and you just want to see what's the Mark IV Special Coffee Maker all about. The problem statement in itself is also available directly on the internet and it's called Heuristics and Coffee, and that download link there is going to point you straight to a PDF file that not only describes the problem, but also provides Robert C. Martin's sample implementation of that particular problem. So that's actually pretty interesting, and if you really want to have an exercise out of this, then go and download that PDF file and do the exercise and see where you end up with before you actually continue looking at this module, and then afterwards you can come back and compare your implementation with the implementation that I created.