- Description
- Installation Instructions
- Usage Instructions
- Key Features
- Contribution Guidelines
- License Information
- Contact Information
- Project Development
Before you begin, ensure you have met the following requirements:
- Download the project: You can clone the project from GitHub using the following command in your terminal:
git clone https://github.com/Vpekdas/CPP-Modules.git
- Install a C++ compiler: If you don't already have a C compiler installed, you will need one to build and use this library. You can install the Clang compiler.
-
On a Mac, you should already have Clang installed as part of Xcode Command Line Tools. You can confirm this by running clang --version in your terminal. If it's not installed, you'll be prompted to install it.
-
On a Linux machine, use the package manager for your distribution. For example, on Ubuntu:
sudo apt install clang
-
This project consists of multiple smaller projects called modules.
-
Since each module and exercise may take arguments or not, there is no single usage instruction. You can explore any module and exercise to see how it works. Explicit error messages and usage instructions have been added if something goes wrong.
-
Module 00: Basics of C Programming
- Introduction to the fundamentals of C programming.
-
Module 01: Memory Allocation and Pointers
- Memory allocation, references, pointers to members, and the usage of the
switch
statement.
- Memory allocation, references, pointers to members, and the usage of the
-
Module 02: Ad-hoc Polymorphism
- Overloads and orthodox canonical classes.
-
Module 03: Inheritance
- Concepts and implementation of inheritance in programming.
-
Module 04: Subtype Polymorphism
- Abstract classes and interfaces.
-
Module 05: Exception Handling
- Try/Catch blocks and exception handling mechanisms.
-
Module 06: Type Casting
- Different types of casts in programming.
-
Module 07: Templates
- Introduction to templates and their usage.
-
Module 08: Templated Containers and Algorithms
- Templated containers, iterators, and algorithms.
-
Module 09: Containers
- Various types of containers and their applications.
I welcome contributions from everyone. Here are some guidelines to follow:
-
Fork the repository: Start by forking the repository to your own GitHub account.
-
Clone the repository: Clone the forked repository to your local machine.
git clone https://github.com/Vpekdas/CPP-Modules.git
- Create a new branch: Create a new branch for each feature or bug fix you're working on. Do not make changes directly on the master branch
git checkout -b your-branch-name
- Commit your changes: Commit your changes regularly with clear, descriptive commit messages.
git commit -m "Your commit message"
- Push your changes: Push your changes to your forked repository on GitHub.
git push origin your-branch-name
- Create a pull request: Go to your forked repository on GitHub and create a new pull request against the master branch. Please note that this project has a code of conduct, and contributors are expected to adhere to it. Any contributions you make are greatly appreciated.
This project is licensed under the MIT License.
The MIT License is a permissive license that is short and to the point. It lets people do anything they want with your code as long as they provide attribution back to you and don’t hold you liable.
For the full license text, see the LICENSE file.
If you have any questions, issues, or if you want to contribute, feel free to reach out to me:
The development of the "CPP-Modules" project began with understanding the differences between C and C++.
The main challenge was transitioning from coding statements learned in C to C++. In C++, everything seems to be an object.
Additionally, I had to adapt from creating char[] arrays to using std::string.
As a result, I used fewer structures and more classes.
The "CPP-Modules" project was developed using C++ 98.
In the end, I enjoyed learning JavaScript, so learning C++ was even more rewarding. I learned many functions from C++11, although we were only allowed to use C++98 features, and only two modules allowed us to use containers.
Now, C++ is my favorite language, and I love object-oriented programming (OOP)!
There are currently no plans to further improve the "CPP-Modules" project. The experience gained from this project has been invaluable and will be applied to future projects.
The project is currently complete and not in active development. However, maintenance and updates will be done as needed.
Plans for future development include improving performance and expanding the documentation.
There are currently no known issues. If you find a bug, please report it in the issue tracker.
Contributions are always welcome! See the Contribution Guidelines for more information.