Object Oriented Programming using Java - Course Outine

Object Oriented Programming in Java - Complete Course in Urdu

YouTube Playlist Link:

Lecture 1 - Introduction to Java
What is pre-requisite to learn OOP
What are the benefit of learning OOP
Benefits and brief history of Java
How Java program can run on multiple platforms without recompile
How to write Hello World program, compile and run it in Java
How to use basic DOS commands e.g. cd, dir, change drive, mkdir etc.

Lecture 2 - Primitive Types ranges, sizes and literals
Four things about variables: name type, size and value
Two types of variables in Java: primitive and reference type
Details of primitive types e.g. names, defining, ranges, sizes, and their literals
Brief introduction to reference types (details would be covered after discussing class/object concept)
Escape sequences in Java

Lecture 3 -print* methods, format specifiers and and getting user input
What is difference between System.out.print, println, and prinf methods
How to use Scanner class to get different types of input from user

Lecture 4 - if else, loops and defining functions in Java
How to use if, if else, and else if in Java
How boolean interpretation is different in Java from C/JavaScript etc.
How to define functions, return value from function and how to call it.
List of programs to practice basics of Java syntax are given

Lecture 5 - Concept of Class and Object
Why primitive types are not enought to develop real life softwares
What is a class.
What is an object. 
How we can create objects using classes
Memory map of object. What happen when we create an object

Lecture 6 - Adding Behavior in Objects
What is behavior in object oriented design context
What is the benefit of defining actions/behavior in related class
How we add methods to represent the behavior inside class
How to call methods using object reference
Why we should not pass data in methods, that the object already hold
What are instance variables and local variables

Lecture 7 - Data Hiding and Encapsulation
Why we may need to hide some attributes or methods of an object
What are access modifiers and how they are used
How access modifiers are used to hide attributes and methods
How we can enforce some policy or contraint on an object attribute. How set methods are created and used.
How we give read access to private attributes using get method
What are some conventions that Java developers follow for naming get and set methods

Lecture 8 - Defining Constructors in Java Classes
What is object declaration, instantiation, and initialization
What is constructor, how it is created, when its called. 
What is benefit of making constructors
How to make multiple constructors in same class
How to call a constructor from another constructor
Why we prefer calling setter methods from constructor to initialize instance variables
What is default constructor, when its provider by compiler and when its not provided
How constructors can enforce certain data must be initialized at the time of object construction
What is no argument constructor, and when we must define it
What is method overloading

Lecture 9 - Write Maintainable Code
Why meeting the functional requirement is not enough, specifically if you are writing your software using object oriented paradigm
How we can simplify our code while achieving same functionality
How shifting the domain logic to related classes help in better design and less code
How we decompose our logic to multiple methods to simplify code and improve its readability
Why excellence is not an option if you want a better career in software e.g. Remote Jobs, Technology Business and Freelancing etc.
How better code help us to manage complexity
Focus on details is life long skill and help in other areas of life

Lecture 10 -  Variables, Methods and Blocks in Java
What are static variables
What happens when static variables are not used when required
How to declare and instantiate static variables
What are static methods and when they are used
Can a static method call another static method
Why a static method can't call non-static method
Can non-static methods call static methods
What are static blocks
Why sometime using static block becomes a requirement
How to decide what to keep at static level and what to keep at object level
Why we call static variables and static methods, as class variables and class method

Lecture 11 - Composition in Java
What is composition and how it help to reduce code size.
How composition makes our code reuseable.
Memory map of our objects when we compose them using other classes' objects as instance variables

Lecture 12 - Packages in Java
What is package in java and why we need packages
What is package hierarchy
How to place class in a package and compile itPlacing .class files in separate from source
How to use classes placed in other packages
What is NoClassDefFoundError
How to use classpath to link classes placed outside the project

Lecture 13 - Java API Docs and using JAR files
What is API? What are Java API Docs? How to read/use it?
What is a JAR file and how to use classes from a JAR file?

Lecture 14 - Introduction to IDE (IntelliJ IDEA) for Java Development
Creating New Project
Create New Class, Generate Constructor & Get/Set Methods.
Compile / Run Java File
Some common windows: Project Explorer, Structure, Output
Move to other files. Alt + Left/Right Arrow
Move to Last/Next Cursor Location. Ctrl + Alt + Left/Right Arrow
How to attach libraries e.g. JAR Files. And use them.
How to link documentation with IDE
Open File / Class… Ctrl + N. Ctrl + Shift + N
Encapsulate - Refactor Menu - Encapsulate

Lecture 15 - Arrays
15.1 - Single Dimension Arrays
Array Declaration. Instantiation and Initialization
Details of primitive type elements' array and reference type elements' arrays and concept/memory map.

15.2 Multidimensional Arrays
Introduction to Multidimensional Arrays
Memory Map of Multidimensional Arrays
Non-Rectangular Multi-Dimensional Arrays
Iterating using 'for' and 'enhanced for' loop

Lecture 16 - Command Line Arguments
16.1 How to pass command line argument to a Java program. 
16.2 Variable Length Arguments
16.3 Utility Methods of Arrays class
16.4 Wrapper Classes in Java
16.5 AutoBoxing and UnBoxing of Primitive and their Wrapper Types
16.6 Life without ArrayList
16.7 Using ArrayList
16.8 Final Variables (also called constants)

Lecture 17 - Enumerations
17.1 Enums Introduction
17.2 How Enum work internally
17.3 How to add methods and attributes in Enum constants

Lectuer 18 - Inheritance
18.1 - Introduction to Inheritance in Java
18.2 Calling Parent Class Constructor in Java
Does a public constructor inherited in child class
What is super keyword, when and how to use it in context of constructors
How to use parent class constructor to initialize inherited attributes
In which order different constructors of parent and child class are called
When no-argument constructor of parent class is automatically called
18.3 Inherit without Compromising Encapsulation
18.4 Using Protected Access Modifier in Java
18.5 Method Overriding in Java
18.6 Object and Reference Variable Type, Type Conversion, instanceof
18.7 Object class and toString method
18.8 Overriding equals method of Object class

Lecture 19 - Polymorphism
19.1 - Polymorphism with Example
19.2 - Polymorphism Example 2 - Employees' Payroll Processing
19.3 - Abstract Methods, Abstract Class, Final Classes and Methods

Lecture 20 - Interfaces in Java

Lecture 21 - Exception Handling
21.1 What is an Exception and How to Handle using try/catch block
21.2 What are Unchecked Exceptions and How to throw an Exception
21.3 What are Checked Exceptions. How to handle and delegate
21.4 How to create our own checked and unchecked exceptions

------ Below Topics - Coming Soon -----

Database Introduction and Connectivity
Benefits of saving data in database over file-handling
Introduction to database server and client.
Concept of port#, IP Address and Database user
Interacting with database using GUI based client e.g. MySQL Workbench
Java Database Connectivity (JDBC) API 
Insert, Delete, Update, and Fetch records using JDBC

GUI Programming
Introduction to JavaFX and its evolution in different Java versions
What is SceneGraph, UI controls, and Panes
What are Scene, Stage and Application
Using BorderPane, GridPane, StackPane, HBox, VBox
UI controls: TextField, PasswordFiled, RadioButton, CheckBox, ComboBox, etc.
DatePicker, TextArea component, FileChooser and HTML Editor
MenuBar, Menu, and MenuItem, ContextMenu, Event handler
How to read and write value of UI controls
How to defne event handlers and bind with components
Concept of Observer and Observable in general and how it work in JavaFX
Binding ListView and TableView with Model and handling their different events
What are lambda expressions and how to define event handlers using Lambda

WebView component and its benefits