Object Oriented Programming in Java syllabus
Browse the units
Object Oriented Programming in Java
9 units
1 Introduction to Java (5 LHs)
- The Creation of Java
- Java's lineage and its influence on modern programming
- Java's impact on the Internet
- Java Buzzwords
- Java Virtual Machine
- Compilation model vs. interpretation model
- Platform independence
- Writing, Compiling, and Running Simple Java Programs using Command Line and IDE
- Object-Oriented Programming Paradigm
- Using Command Line Arguments
- Reading Input with Scanner
- Writing Output with System.out
2 Fundamental Programming Structures (6 LHs)
- Writing Comments
- Primitive Data Types (byte, short, int, long, float, double, char, boolean)
- Variables and Constants
- Type Conversion and Casting
- Automatic Type Promotion Rules
- Operators
- Operator Precedence and Associativity
- Control Statements
- Iteration Statements
- Jump Statements
- Working with Big Numbers (BigInteger, BigDecimal overview)
- Declaration, Initialization, and Processing of One Dimensional and Multidimensional Arrya
- Passing Arrays to Methods
3 Classes and Objects (8 LHs)
- Object Oriented Principles
- Defining Classes
- Creating Objects and Accessing Class Members
- Assigning Object Reference Variables
- Methods
- Constructors
- Constructor Overloading
- Variable Length Arguments
- Access Control
- JavaBeans convention
- Static Fields and Methods
- Final Variables, Methods, and Classes
- Nested and Inner Classes
- Garbage Collection and Finalization
- Creating and Using Packages
4 Inheritance and Interfaces (7 LHs)
- Inheritance Basics
- Using super
- Method Overriding
- Dynamic Method Dispatch
- Why overridden methods matter
- Abstract Classes
- Using final with Inheritance(preventing overriding and subclassing)
- Interfaces
- Default and Static Methods in Interfaces (Java 8+)
- Multiple interface inheritance
- Functional Interfaces and the @FunctionalInterface annotation
- Sealed Classes overview
- Liskov Substitution Principle
5 Exception Handling (4 LHs)
- Exception Handling Fundamentals
- Exception Hierarchy
- Checked vs. Unchecked Exceptions
- Understanding uncaught exceptions and stack traces
- Using try, catch, and finally blocks
- Multiple catch clauses
- Nested try statements
- Multi catch (Java 7+)
- Try with resources for automatic resource management
- Throw and throws keywords
- Exception chaining (initCause, getCause)
- Java's Built in Exceptions overview
- Creating Custom Exception Subclasses
- Best practices for exception design
6 Generics and Collections (5 LHs)
- Importance of Generic Programming
- Defining Generic Classes and Methods
- Bounded Wildcards (extends/super)
- Type erasure and heap pollution
- Restrictions and Limitations of Generics
- Inheritance Rules with Generics
- The Java Collections Framework
- Iterators and the Iterable interface
- Enhanced for loop with collections
- Type Wrappers
- Autoboxing and Unboxing
- Autoboxing in expressions
- Autoboxing with Boolean and Character
9 File Handling (5 LHs)
- Introduction to Files
- File class
- File Modes and I/O Exceptions
- AutoCloseable, Closeable, and Flushable Interfaces
- Byte Streams
- PrintStream, DataOutputStream, DataInputStream
- RandomAccessFile for random access
- Character Streams
- FileReader, FileWriter, PrintWriter, BufferedReader, BufferedWriter
- Reading from standard input and writing formatted output
- NIO.2 API (java.nio.file)
- Sequential and Random Access to Files
- Serialization
- I/O Classes and Interfaces review
1. Introduction to Java (5 LHs)
- The Creation of Java
- The Creation of Java
- Java's lineage and its influence on modern programming
- Java's lineage and its influence on modern programming
- Java's impact on the Internet
- Java's impact on the Internet
- Java Buzzwords
- Java Buzzwords (Simple, Object-Oriented, Robust, Multithreaded, Architecture Neutral, Interpreted, High Performance, Distributed, Dynamic)
- Java Virtual Machine
- Java Virtual Machine (JVM), Java Runtime Environment (JRE), and Java Development Kit (JDK) architecture and roles
- The Bytecode
- Compilation model vs. interpretation model
- compilation model vs. interpretation model
- Platform independence
- Platform independence
- Writing, Compiling, and Running Simple Java Programs using Command Line and IDE
- Writing, Compiling, and Running Simple Java Programs using Command Line and IDE
- Object-Oriented Programming Paradigm
- Object-Oriented Programming Paradigm: Overview of OOP principles (Encapsulation, Inheritance, Polymorphism, Abstraction)
- Using Command Line Arguments
- Using Command Line Arguments
- Reading Input with Scanner
- Reading Input with Scanner
- Writing Output with System.out
- Writing Output with System.out
2. Fundamental Programming Structures (6 LHs)
- Writing Comments
- Writing Comments
- Primitive Data Types (byte, short, int, long, float, double, char, boolean)
- Primitive Data Types (byte, short, int, long, float, double, char, boolean)
- Variables and Constants
- Variables and Constants
- Type Conversion and Casting
- Type Conversion and Casting
- Automatic Type Promotion Rules
- Automatic Type Promotion Rules
- Operators
- Operators: Arithmetic, Bitwise, Relational, Logical (short-circuit), Assignment, Conditional (?:), sizeof equivalent
- Operator Precedence and Associativity
- Operator Precedence and Associativity
- Using Parentheses
- Control Statements
- Control Statements: if, if else, nested if else, else if ladder, switch
- Iteration Statements
- Iteration Statements: while, do while, for, enhanced for each loop, nested loops
- Jump Statements
- Jump Statements: break, continue, return
- Working with Big Numbers (BigInteger, BigDecimal overview)
- Working with Big Numbers (BigInteger, BigDecimal overview)
- Declaration, Initialization, and Processing of One Dimensional and Multidimensional Arrya
- Declaration, Initialization, and Processing of One Dimensional and Multidimensional Arrya
- Passing Arrays to Methods
- Passing Arrays to Methods.
3. Classes and Objects (8 LHs)
- Object Oriented Principles
- Object Oriented Principles: Encapsulation, Abstraction, Inheritance, Polymorphism
- Defining Classes
- Defining Classes: fields, methods, and the general form of a class
- Creating Objects and Accessing Class Members
- Creating Objects and Accessing Class Members
- Assigning Object Reference Variables
- Assigning Object Reference Variables
- Methods
- Methods: Adding Methods, Returning Values, Method Parameters and Return Types
- Method Overloading
- Constructors
- Constructors: Default and Parameterized
- Constructor Overloading
- Constructor Overloading
- the this Keyword
- Variable Length Arguments
- Variable Length Arguments
- Access Control
- Access Control: public, private, protected, default
- JavaBeans convention
- JavaBeans convention
- Static Fields and Methods
- static Fields and Methods
- Final Variables, Methods, and Classes
- final Variables, Methods, and Classes
- The Object Class
- Nested and Inner Classes
- Nested and Inner Classes: static nested, inner, local, and anonymous classes
- Garbage Collection and Finalization
- Garbage Collection and Finalization
- Object Lifecycle
- Creating and Using Packages
- Creating and Using Packages
- import statements
- CLASSPATH.
4. Inheritance and Interfaces (7 LHs)
- Inheritance Basics
- Inheritance Basics: extends keyword, member access, IS-A relationship
- Using super
- Using super: calling superclass constructors and overridden methods
- Method Overriding
- Method Overriding: rules, @Override annotation, covariant return types
- Dynamic Method Dispatch
- Dynamic Method Dispatch: runtime polymorphism
- Why overridden methods matter
- why overridden methods matter
- Abstract Classes
- Abstract Classes: abstract methods and the template method concept
- inheritance types
- Using final with Inheritance(preventing overriding and subclassing)
- Using final with Inheritance(preventing overriding and subclassing)
- Interfaces
- Interfaces: defining, implementing, and extending interfaces
- Default and Static Methods in Interfaces (Java 8+)
- Default and Static Methods in Interfaces (Java 8+)
- Multiple interface inheritance
- multiple interface inheritance
- Functional Interfaces and the @FunctionalInterface annotation
- Functional Interfaces and the @FunctionalInterface annotation
- Sealed Classes overview
- Sealed Classes overview
- Liskov Substitution Principle
- Liskov Substitution Principle.
5. Exception Handling (4 LHs)
- Exception Handling Fundamentals
- Exception Handling Fundamentals
- Exception Hierarchy
- Exception Hierarchy: Throwable, Error, Exception, Runtime Exception
- Checked vs. Unchecked Exceptions
- Checked vs. Unchecked Exceptions
- Understanding uncaught exceptions and stack traces
- understanding uncaught exceptions and stack traces
- Using try, catch, and finally blocks
- Using try, catch, and finally blocks
- Multiple catch clauses
- multiple catch clauses
- Nested try statements
- nested try statements
- Multi catch (Java 7+)
- Multi catch (Java 7+)
- Try with resources for automatic resource management
- try with resources for automatic resource management
- Throw and throws keywords
- throw and throws keywords
- Exception chaining (initCause, getCause)
- exception chaining (initCause, getCause)
- Java's Built in Exceptions overview
- Java's Built in Exceptions overview
- Creating Custom Exception Subclasses
- Creating Custom Exception Subclasses
- Best practices for exception design
- best practices for exception design
6. Generics and Collections (5 LHs)
- Importance of Generic Programming
- Importance of Generic Programming
- Defining Generic Classes and Methods
- defining Generic Classes and Methods
- type parameters
- Bounded Wildcards (extends/super)
- Bounded Wildcards (extends/super)
- Type erasure and heap pollution
- type erasure and heap pollution
- Restrictions and Limitations of Generics
- Restrictions and Limitations of Generics
- Inheritance Rules with Generics
- Inheritance Rules with Generics
- The Java Collections Framework
- The Java Collections Framework: List, Set, Map, Queue, and Deque interfaces
- Iterators and the Iterable interface
- Iterators and the Iterable interface
- Enhanced for loop with collections
- enhanced for loop with collections
- Type Wrappers
- Type Wrappers: Character, Boolean, numeric wrappers
- Autoboxing and Unboxing
- Autoboxing and Unboxing
- Autoboxing in expressions
- Autoboxing in expressions
- Autoboxing with Boolean and Character
- autoboxing with Boolean and Character
- preventing errors.
7. Multithreaded Programming (5 LHs)
- The Java Thread Model
- The Java Thread Model: threads vs. processes
- Benefits of multithreading
- benefits of multithreading
- Thread Priorities
- synchronization
- Messaging between threads
- messaging between threads
- The Thread Class and the Runnable Interface
- The Thread Class and the Runnable Interface
- the main thread
- Creating Threads
- Creating Threads: implementing Runnable
- Extending Thread class
- extending Thread class
- Creating Multiple Threads
- Creating Multiple Threads
- Using isAlive() and join()
- using isAlive() and join()
- Thread Priorities and scheduling
- Thread Priorities and scheduling
- Synchronization
- Synchronization: synchronized methods and synchronized statements.
8. Essential Java Classes (3 LHs)
- String Class
- String Class: constructors, length, special operators (concatenation, conversion, toString())
- Character extraction
- Character extraction: charAt() and getChars()
- String comparison methods
- String comparison methods
- Modifying Strings
- Modifying Strings: substring(), concat(), replace(), trim()
- StringBuffer and StringBuilder
- StringBuffer and StringBuilder: mutable strings, performance considerations
- String Handling Library Functions overview
- String Handling Library Functions overview
- Math Class
- Math Class: commonly used mathematical methods
- Primitive Type Wrappers
- Primitive Type Wrappers: Character, Boolean, Integer, Double methods and conversions
- Introduction to Lambda Expressions and Stream API (overview for modern Java awareness)
- Introduction to Lambda Expressions and Stream API (overview for modern Java awareness).
9. File Handling (5 LHs)
- Introduction to Files
- Introduction to Files
- File class
- File class: creating, deleting, listing files and directories
- File Modes and I/O Exceptions
- File Modes and I/O Exceptions
- AutoCloseable, Closeable, and Flushable Interfaces
- AutoCloseable, Closeable, and Flushable Interfaces
- Byte Streams
- Byte Streams: InputStream, OutputStream, FileInputStream, FileOutputStream
- PrintStream, DataOutputStream, DataInputStream
- PrintStream, DataOutputStream, DataInputStream
- RandomAccessFile for random access
- RandomAccessFile for random access
- Character Streams
- Character Streams: Reader, Writer
- FileReader, FileWriter, PrintWriter, BufferedReader, BufferedWriter
- FileReader, FileWriter, PrintWriter, BufferedReader, BufferedWriter
- The Console Class
- Reading from standard input and writing formatted output
- reading from standard input and writing formatted output
- NIO.2 API (java.nio.file)
- NIO.2 API (java.nio.file): Path, Files, Paths modern file operations
- Sequential and Random Access to Files
- Sequential and Random Access to Files
- Serialization
- Serialization: Serializable interface, ObjectOutputStream, ObjectInputStream
- I/O Classes and Interfaces review
- I/O Classes and Interfaces review.