Practice in OOP and Design Patterns

This course gave me a solid foundation in advanced C, and Object Oriented Programming & Design Patterns in C++, Java, and Python. Below are some key projects from the course.

Projects

Custom Implementation of Munchkin Card Game (C++)

This project implements a popular card game using object-oriented programming techniques such as inheritance, abstract classes, virtual functions, smart pointers, and exception handling, as well as the Standard Template Library (STL).

Run-Length Encoding for ASCII Art (C)

Run-length encoding (RLE) is a lossless data compression technique where consecutive data elements with the same value are represented by a single value and its frequency rather than being stored individually. This project, written in C, allows a user to input an ASCII art text file, and a compressed version of the text file is returned.

Zoo Planner (Java)

Zooplanner is a system programming project that simulates the management of a zoo. It uses various software design patterns such as Factory, Observer, and Singleton, to achieve this.

Generic Queue (C++)

This project is an implementation of a generic FIFO queue from scratch, including use of templates, iterators, and operator overloading.

Skills Used/Learned

  • Object-Oriented Programming (OOP) concepts such as classes, objects, inheritance, polymorphism, and encapsulation.
  • Experience in Advanced C, C++, and Java
  • Memory handling (Valgrind)
  • Exception handling
  • Exposure to Design Patterns (Creational, Structural, Behavioral)