Java is an Object Oriented Programming (OOP) language. Mastering OOP concepts and know how to apply those concepts into programming is trivial skills if you want to be a Java professional.
In this course you will not only learn all the core OOP concepts, but you will also learn how and when to transfer those concepts into Java language.
Also, I will use real life examples with images to demonstrate and elaborate on those concepts so that you can get the best understanding of OOP model.
Not only OOP concepts will be demonstrated fully in this course, you will also learning many other useful techniques such as static members, inner class, anonymous class, final modifiers, and effectively final.
I will also show you some new features in Java 8 including static and default methods in interface, and the omitting of the final keyword with the effectively final variable.
Also, I will show you with example of one of the most important principles in OOP: the open_closed principle so that you can see the power of OOP paradigm.
And most importantly, I will walk you through step by step in building a complete and working application called Book Management System. The application includes common features such as add a new book, update a book based on its ISBN, remove a book based on its ISBN, and list all the book information.
How to get the most benefits of the course?
To get the most benefits of the course, before starting the first lecture, I would recommend you to take the 50 question quiz first. Don't worry if you never learned Object Oriented Programming before or you just have a little bit skills. Just do the quiz, if you don't know, just guess.
After finishing the quiz, don't worry about the results then, just take all lectures one by one to learn all the fundamentals as well as advanced techniques.
After completing all the lectures, take the quiz again to see if you make a progress. Each question in the quiz also has explanation for answers, and I would highly recommend you to read these explanations to revise what you have learned.
Test your OOP skills with 50 questions including answer explanations
This lecture shows you general concepts about Objects and Classes, and how they are related to each other.
In this lecture, I will use real life examples to demonstrate the inheritance concepts and what it is used for in OOP.
At the end of this lecture, you will be able to:
Using class and objects are basic skills in order to work with any OOP languages. In this lecture, you will learn:
Java source code files are organized into packages. Package is also related to other concepts that we will come across in other topics in this course. This lecture will show you how to create packages in Java and how to use classes that are in different packages with the import statement.
One of the fundamental concepts in OOP model is Inheritance. It is allowed code re-using. In this lecture, you will learn:
This lecture will discuss:
What is method overriding and how it is used in Java?
What is method overloading and how it is used in Java class?
When to use method overriding and method overloading as well as the differences between the 2 techniques?
At the end of this lecture, you will be able to apply access modifiers to implement the Encapsulation concept. The four access modifiers will be discussed in this lectures include: public, protected, default, and private.
This lecture is a continuation of the Lecture 9. In this lecture, you will learn how to apply access modifiers into encapsulation implementation with getter and setter methods. You will also learns a tip in Netbeans that can be used to quickly generate getter and setter methods.
There are many ways to implement the polymorphism concept in Java. This lectures will show you how to use abstract class and how to achieve polymorphism using abstract class.
In the last lecture, you learned how to implement polymorphism using abstract class. This lecture will show you how to achieve polymorphism concept using interface. Also, you will learn how interface can inherit from other interfaces so that it can reduce the number of interfaces a class can implement.
Prior to Java 8, it is not allowed to have implementation methods in an interface. However, Java 8 now supports new features, in which it allows have implementation methods in interface: static and default methods.
This helps to add more methods to the interface without breaking the code in the implementing classes.
In this lecture, I will show the Open_Closed principle with examples. The principle can be used as a guide that helps developers to design OOP applications that are easy to extend, upgrade, and maintain.
To understand the differences between abstract class and interface, I will use an example of when to use abstract class and when to use interface. Those concepts usually confuse beginners
At the end of this lecture, you will be able to:
I will introduce the final modifier and how it is applied on variables, methods, and classes. I'll also introduce the Math class in this lecture.
In this lecture, we will discuss:
This lecture will discuss of how to implement abstract methods in an interface or an abstract class using Anonymous class, which is a kind of local inner classes we have discussed in the last lecture.
In will introduce the 2 most commonly used methods in the Object class:
In this lecture, you will:
I will walk you through step by step in building the BookInterface, Book class, and the Menu class.
We will implement the class BookListWithArray. This class contains all the implementations in our program.
Hi, my is Sera Nguyen and I have a big interest in Software Programming. After completing my Computer Science degree, I was employed as Embedded Software Engineer at Renesas Corporation, then Software Architect at CSC Corporation. After more than 6 years in the Software Industry and completing my Master degree, I became a full time University Professor specializing in Software Engineering Faculty. Currently, I am still working full time as Professor and contracting trainer for software companies and doing research for my PhD degree in software architecture design field.