This repository contains a collection of projects, assignments, and class materials from my Object-Oriented Programming coursework at Ariel University.
Object-Oriented Programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code. The data is in the form of fields (often known as attributes or properties), and the code is in the form of procedures (often known as methods). This repository demonstrates OOP principles and best practices through various implementations and projects.
The repository is organized by projects and assignments:
- Ex0-Java: Introduction to Java and OOP basics
- Ex1-Java: More advanced OOP concepts in Java
- Ex2-Java: Data structures and algorithms with OOP
- Ex3-Python: OOP principles implemented in Python
- Utilities: Common classes and utilities used across projects
- Design Patterns: Implementations of various design patterns
-
OOP Core Concepts:
- Encapsulation
- Inheritance
- Polymorphism
- Abstraction
-
Design Principles:
- SOLID Principles
- DRY (Don't Repeat Yourself)
- KISS (Keep It Simple, Stupid)
- YAGNI (You Aren't Gonna Need It)
-
Design Patterns:
- Creational Patterns (Factory, Singleton, Builder)
- Structural Patterns (Adapter, Decorator, Composite)
- Behavioral Patterns (Observer, Strategy, Command)
-
Advanced OOP Concepts:
- Generic Programming
- Reflection
- Event-Driven Programming
- Unit Testing in OOP
- Java: Primary programming language for OOP implementation
- Python: For exploring OOP in a dynamically typed language
- JUnit: For unit testing
- UML: For system design and class diagrams
- Git: For version control
- Maven/Gradle: For dependency management and build automation
- JavaFX: For GUI applications (where applicable)
- JDK 11 or higher
- Python 3.x (for Python assignments)
- IDE (IntelliJ IDEA, Eclipse, or similar)
- Maven or Gradle (depending on the project)
Most Java projects can be built using Maven:
# Navigate to a specific project
cd Object_Oriented_Programming/Ex1-Java
# Build the project
mvn clean install
# Run the tests
mvn testFor Python projects:
# Navigate to the Python project directory
cd Object_Oriented_Programming/Ex3-Python
# Run the Python script
python main.pyObject-oriented implementations of various data structures:
- Linked Lists
- Trees
- Graphs
- Hash Tables
A complete library management system that demonstrates:
- Class hierarchy and inheritance
- Interface implementation
- Database integration
- GUI using JavaFX
A small game that showcases:
- Game objects and inheritance
- Event-driven programming
- Design patterns in action
- Graphics and animation
The repository includes UML diagrams for major projects:
- Class diagrams
- Sequence diagrams
- Activity diagrams
- State diagrams
- Course: Object-Oriented Programming
- Institution: Ariel University
- Instructor: [Instructor Name]
- Academic Year: [Year]
- Design and implement object-oriented solutions to complex problems
- Apply appropriate design patterns to improve code quality
- Write maintainable, extensible, and reusable code
- Develop robust testing strategies for OOP applications
- Model real-world entities and relationships using OOP principles
- Understand the advantages and limitations of OOP
This project is available for educational purposes. Please respect academic integrity policies when using this code.
Special thanks to the course instructors and teaching assistants for their guidance throughout this learning journey.