MY OOP LEARNING JOURNEY


This will be my first repo of this type, which is a book summary with the questions and exercise solutions. And I will support my reading with mentor guidance Like Dr.Mostafa Saad and Eng.Adel Nasiem and Eng.Mohammed Taher.

Objectives From this Repo

  • Master C++ Concepts by practice
  • Master OOP Concepts by practice
  • Design a C++ and OOP reference for me.
  • Give me new ideas for C++, OOP projects.
  • Implement many C++ and OOP projects.
  • Increase my technical writing skills in English.





What is OOP (Object Oriented Programming)?


Object-oriented programming is a way of programming that enables developers to build things using entities or objects. In real life, people have the knowledge and can do several works. In OOP, objects have attributes to store information and can execute tasks (methods).


✏️ Basic of OOP

  • Object:

It’s the instance of a class or working entity of a class.

  • Class:

It is a template about the capability of what an object can do.

  • Method:

The behaviors of a class and tell what it can do.

  • Instance:

Objects are things in memory and instances are things that reference them.





🔍 Concepts

  1. Object
  2. class
  3. Encapsulation
  4. Abstraction
  5. Inheritance
  6. Polymorphism

Object

Class

📦 Encapsulation

Encapsulation can be described as a protective barrier that prevents the code and data from being randomly accessed by other code defined outside the class. Access to the data and code is tightly controlled by a class.

The main purpose of encapsulation is you would have full control over data by using the code. In encapsulation, the variables of a class can be made hidden from other classes and can be accessed only through the methods of their current class.

About Access Modifiers




Example - Encapsulation presented in this OOP project



👻 Abstraction

Abstraction is a process of hiding the implementation details from the user, only the functionality will be provided to the user. In other words, the user will have the information on what the object does instead of how it does it.

By hiding complex steps/details/computations/statements inside your classes and creating public methods to access them. Ex: Wrapper Classes


🔗 Inheritance

Inheritance can be defined as the process where one class acquires the properties (methods and fields) of another.

In object-oriented programming, inheritance is when an object or class is based on another object (prototypal inheritance) or class (class-based inheritance), using the same implementation (inheriting from an object or class) specifying implementation to maintain the same behavior

The idea of inheritance implements is a relationship. For example, mammal IS-A animal, dog IS-A mammal hence dog IS-A animal as well.

Example - Inheritance presented in this OOP project



⚔️ Polymorphism

In object-oriented programming, polymorphism is the characteristic of being able to assign a different meaning or usage to something in different contexts.

It is specifically, to allow an entity such as a function, or an object to have more than one form.

Example - Inheritance presented in this OOP project



The big book I have read to learn and study object oriented programming

Object-Oriented Programming in C++, Fourth Edition , Robert Lafore


This book teaches object-oriented programming with the C++ programming language. It also introduces the UML and software development processes, so we will know thats chapters :


Introduction

As programming projects became large and more complicated, it was found that this approach did not work very well. The problem was complexity.

Three major innovations in programming have been devised to cope with the problem of complexity. They are

  • Object Oriented Programming (OOP) it is a programming style that views the program as a group of objects that have certain properties.
  • Unified Modeling Language (UML) it is a graphical language used to help clarify OOP concepts.
  • Software Development Process