Skip to content

Daruuu/OOP-with-C-Plus-PLus-98

Repository files navigation

🚀 C++98 Core Concepts & Object-Oriented Programming (OOP)

This repository contains my progress through the C++ modules from 42 School, implemented in C++98.
It showcases fundamental concepts of Object-Oriented Programming (OOP), memory management, and good coding practices following Clean Code principles.

📚 Documentation

🔧 Setup and Tools

📖 Key Concepts Learned

  • Object-Oriented Programming (OOP)
  • Encapsulation, Abstraction, Inheritance and Polymorphism
  • Dynamic memory management in C++98
  • Function and operator overloading
  • Abstract classes vs Interfaces
  • Best practices with Makefile and compilation flags
  • Standard I/O (iostream)
  • Using new / delete
  • Introduction to dynamic memory

📦 C++ Modules

  • Namespaces and basic classes
  • Member functions and methods
  • Standard I/O (iostream)
  • Basic classes (PhoneBook, Contact)
  • Using new / delete
  • Pointers and references
  • Stack vs Heap
  • Constructors and destructors
  • Exercises with objects (Zombie, Weapon, Human)
  • Operator overloading
  • Copy, assignment and object lifetime
  • Fixed-point number implementation
  • Encapsulation best practices
  • Base and derived classes
  • Single and multiple inheritance
  • virtual keyword and diamond problem
  • Exercises with ClapTrap, ScavTrap, FragTrap, DiamondTrap
  • Dynamic polymorphism
  • virtual methods and override
  • Abstract classes and interfaces
  • Composition vs aggregation (Animal, Brain, Cat, Dog)
  • Magical materials (AMateria, Cure, Ice, Character, MateriaSource)


🛠️ Technologies Used

  • C++98 - Programming standard
  • Makefile - Build system
  • CMake - Build system generator
  • CppUnit - Unit testing framework
  • GDB - Debugger
  • Valgrind - Memory analysis tool
  • Git - Version control

📌 Future Work

  • Continue with modules cpp05 – cpp09
  • Add UML diagrams for each module
  • Improve testing with assert and doctest
  • Implement more design patterns
  • Add performance benchmarks

🤝 Contributing

This repository is part of my learning journey at 42 School. Contributions and suggestions are welcome to improve documentation and examples.


📄 License

This project is part of the 42 School curriculum and is intended solely for educational purposes.

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •