This repository contains my coursework, practice codes, and lab implementations for Object Oriented Concepts I (OOP-I) using Java, following the official syllabus of the Software Engineering program.
The goal of this repository is to master core object-oriented principles and apply them through clean, reusable, and maintainable Java code.
This course is centered around the four fundamental pillars of Object-Oriented Programming:
- 🔒 Encapsulation – Data hiding through access modifiers, interfaces, and controlled access
- 🧠 Abstraction – Abstract classes, interfaces, and minimal public interfaces
- 🔁 Polymorphism – Method overloading, method overriding, dynamic binding
- 🧬 Inheritance – Superclasses, subclasses, generalization, and specialization
Each concept is implemented with practical Java examples.
Course Title: Object Oriented Concepts I Credits: 2 Credit Theory + 1 Credit Lab
- Procedural vs Object Oriented Programming
- Objects: Data & Behavior
- Classes: Attributes, Methods, Messages
- UML Class Diagrams
- Interface vs Implementation
- Is-a and Has-a Relationships
- Default and Parameterized Constructors
- Multiple Constructors
- Constructor Design Principles
- Scope and Error Handling
- Anatomy of a Class
- Public Interfaces vs Private Implementations
- Composition and Object Collaboration
- Reuse, Extensibility, and Maintainability
- Modeling Real-World Systems
- Class Responsibility and Collaboration
- Frameworks, Abstract Classes, and Interfaces
- How Inheritance Weakens Encapsulation
- JVM, JRE, JDK
- Java Installation and IDE Setup
- Hello World Program
- Compilation and Execution
- Java Classpath & JVM Architecture
- Packages and Imports
- Fields, Methods, and Constructors
- Primitive Data Types
- Strings and Wrapper Classes
nulland Nonexistence Types
- String Creation & Operations
- Immutability of String
- Comparison and Searching
- StringBuffer & StringBuilder
try/catch- Checked vs Unchecked Exceptions
throwandthrows- Common Exceptions
- User-Defined Exceptions
- Streams (Input & Output)
- Files and Directories
- Path and Directory Tree
- Java Logger
- Log Levels
- Formatters & Filters
- Debugging Workflow
oop-i-java/
│── basics/
│── encapsulation/
│── inheritance/
│── polymorphism/
│── abstraction/
│── constructors/
│── exception-handling/
│── string-handling/
│── io-streams/
│── logging-debugging/
By completing this course and repository, I aim to:
- Think in objects, not procedures
- Design robust and reusable classes
- Apply OOP principles in real-world software systems
- Build a strong foundation for advanced software engineering courses
- The Object Oriented Thought Process — Matt Weisfeld
- Java How to Program — Paul Deitel & Harvey Deitel
- Java: The Complete Reference — Herbert Schildt
A.S.M. Morshed Software Engineering Student Aspiring Software Engineer & Academic Enthusiast