Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/raveriss/cpp04
C++98 exercises on subtype polymorphism, abstract classes, and interfaces, demonstrating advanced object-oriented programming techniques.
https://github.com/raveriss/cpp04
class-abstraction cpp cpp98 ecole42 educational-project inheritance interfaces object-oriented-programming polymorphism software-engineering
Last synced: about 1 month ago
JSON representation
C++98 exercises on subtype polymorphism, abstract classes, and interfaces, demonstrating advanced object-oriented programming techniques.
- Host: GitHub
- URL: https://github.com/raveriss/cpp04
- Owner: raveriss
- Created: 2024-03-15T10:23:02.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-05-21T21:23:01.000Z (7 months ago)
- Last Synced: 2024-10-19T19:49:40.282Z (2 months ago)
- Topics: class-abstraction, cpp, cpp98, ecole42, educational-project, inheritance, interfaces, object-oriented-programming, polymorphism, software-engineering
- Language: C++
- Homepage:
- Size: 3.12 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# **Project CPP04 - École 42 | Paris**
## Introduction
CPP04 dives into advanced C++ concepts such as subtype polymorphism, abstract classes, and interfaces. The exercises are designed to provide practical experience in using these object-oriented programming techniques in compliance with the C++98 standard.## Project Structure
This module consists of a series of exercises that build on each other, illustrating different aspects of C++ inheritance and polymorphism:### Exercise 00: Polymorphism
- **Directory:** `ex00/`
- **Files to submit:**
- `Makefile`
- `main.cpp`
- Various class implementations (`*.cpp`, `*.h`, `*.hpp`)#### Functionality
Introduces basic polymorphism through the implementation of `Animal`, `Dog`, and `Cat` classes, with animals exhibiting behavior (making sounds) specific to their types.### Exercise 01: I Don't Want to Set the World on Fire
- **Directory:** `ex01/`
- **Files to submit:**
- All files from Exercise 00 plus
- Extended classes (`*.cpp`, `*.h`, `*.hpp`)#### Functionality
Expands upon the base classes by introducing a `Brain` class, exploring deep copying and dynamic memory management.### Exercise 02: Abstract Class
- **Directory:** `ex02/`
- **Files to submit:**
- All files from Exercise 01 plus
- Modifications to make `Animal` an abstract class#### Functionality
Transforms the `Animal` class into a true abstract class to prevent instantiation and ensures that subclasses provide specific implementations for virtual functions.### Exercise 03: Interfaces and Recap
- **Directory:** `ex03/`
- **Files to submit:**
- `Makefile`
- `main.cpp`
- Comprehensive implementations (`*.cpp`, `*.h`, `*.hpp`)#### Functionality
Implementation of purely abstract classes known as interfaces in C++, using them to enforce class structures and behaviors in derived classes.## Compilation and Execution
Navigate to the specific exercise directory and use the `make` command to compile the projects. Each executable can be run directly to demonstrate the functionalities implemented.## Ressources Utilisées
- [Apprenez à programmer en C++ sur OpenClassrooms](https://openclassrooms.com/fr/courses/1894236-apprenez-a-programmer-en-c)
- [Programmez en orienté objet avec C++ sur OpenClassrooms](https://openclassrooms.com/fr/courses/7137751-programmez-en-oriente-objet-avec-c)