Skip to content

YairRaviv/Object_Oriented_Programming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Object-Oriented Programming Repository

This repository contains a collection of projects, assignments, and class materials from my Object-Oriented Programming coursework at Ariel University.

Overview

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.

Repository Structure

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

Key Topics Covered

  • 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

Technologies Used

  • 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)

Getting Started

Prerequisites

  • JDK 11 or higher
  • Python 3.x (for Python assignments)
  • IDE (IntelliJ IDEA, Eclipse, or similar)
  • Maven or Gradle (depending on the project)

Building the Projects

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 test

For Python projects:

# Navigate to the Python project directory
cd Object_Oriented_Programming/Ex3-Python

# Run the Python script
python main.py

Example Projects

Data Structures Implementation

Object-oriented implementations of various data structures:

  • Linked Lists
  • Trees
  • Graphs
  • Hash Tables

Library Management System

A complete library management system that demonstrates:

  • Class hierarchy and inheritance
  • Interface implementation
  • Database integration
  • GUI using JavaFX

Game Development

A small game that showcases:

  • Game objects and inheritance
  • Event-driven programming
  • Design patterns in action
  • Graphics and animation

UML Diagrams

The repository includes UML diagrams for major projects:

  • Class diagrams
  • Sequence diagrams
  • Activity diagrams
  • State diagrams

Course Information

  • Course: Object-Oriented Programming
  • Institution: Ariel University
  • Instructor: [Instructor Name]
  • Academic Year: [Year]

Learning Outcomes

  • 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

License

This project is available for educational purposes. Please respect academic integrity policies when using this code.

Acknowledgments

Special thanks to the course instructors and teaching assistants for their guidance throughout this learning journey.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published