Java Fundamentals: Object-oriented Design

Java Fundamentals: Object-oriented Design

English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 1h 59m | 385 MB

Simply programming in an OO language does not make your program object oriented. This course teaches you how to leverage essential object-oriented principles to write solid, maintainable code, while avoiding common pitfalls.

Simply using an OO language like Java does not make your program object oriented. In fact, when used incorrectly, OO-language features can make your program bloated, overly complex, and impossible to maintain. This course, Java Fundamentals: Object-oriented Design, teaches you how to write effective production-quality OO systems by leveraging the basic principles of good OO design. It assumes you know the nuts and bolts of Java, and goes beyond those to teach you how to write effective, production-quality code in Java, or any other OO language. You will learn how to structure your code to be highly maintainable and easy to modify. You’ll learn about the pitfalls of many common idioms (like getters and setters and too-open subclassing). You’ll also see the SOLID principles used to solve real-world programming issues as well as see a lot of code that demonstrates the principles. When you’re done with the class, you’ll have a solid understanding of good OO structure and principles, and be able to apply those principles to your own work.

Table of Contents

01 – Course Overview – Course Overview
02 – Introduction – Java Fundamentals – Object-oriented Design
03 – Thinking in Objects – Basics
04 – Thinking in Objects – Coherence, Coupling, and God Classes
05 – Thinking in Objects – What Is an Object
06 – Defining Behavior and State – Problems with println()
07 – Defining Behavior and State – Money and Delegation – Getters and Setters Are Evil
08 – Extending Classes – The Is-a Test
09 – Extending Classes – Simple Extension and Template Method
10 – Extending Classes – Delegation Under Inheritance – Shape
11 – Extending Classes – Liskov Substitution – Stack, Ver. 1
12 – Extending Classes – Fragile Base Classes – Stack, Ver. 2
13 – Defining Class Contracts with Interfaces – Defining Contracts
14 – Defining Class Contracts with Interfaces – Fixing Fragility
15 – Defining Class Contracts with Interfaces – Dependency Inversion
16 – Working Without Getters and Setters – The Open Closed Principle
17 – Working Without Getters and Setters – Builder
18 – Testing OO systems – Dependency Injection
19 – Testing OO systems – Summing Up