Orientado a objetos

Es un estilo de programación que permite a los desarrolladores agrupar información, acciones y/o tareas similares en clases.

Objetos

Es la representación de algún elemento real en nuestro mundo. Cada objeto contiene atributos el cual crea una diferencia entre otros objetos. Los objetos con atributos similares los clasificamos por clases para englobar estos objetos similares con atributos similares y comportamiento similares.

Clases

Es la definición de cómo un objeto debe ser al momento de crearse. Para crear una clase en C++ necesitamos primero utilizar la palabra reservada class luego el nombre de la clase y prosigue llaves (bloque de código) el cual es el contenido de la definición de la clase para crear un objeto.

#include <iostream>

using namespace std;

class Book {};

class Customer {};

int main() 
{
    cout << "Class example" << endl;
}

Para inicial una instancias de la clases y poder crear un objeto utilizamos el nombre de la clase seguido el nombre del objeto.

#include <iostream>

using namespace std;

class Book {};

class Customer {};

int main() 
{
    Book book;
    Customer customer;

    cout << "Class example" << endl;
}

Propiedades

Las variables dentro de una definición de clase se le conocen como propiedades, también utilizan el nombre de atributos o campo. La propiedades pueden definirse dentro de la clase utilizando cualquiera de las siguiente palabras reservada public private protected. Cada una de estas palabras reservada especifica cómo debemos manejar estas propiedades dentro y fuera del objeto o otras clases.

#include <iostream>

using namespace std;

class Book {
    public:
        long isbn;
        string title;
        string author;
        bool available;
};

int main() 
{
    Book book;

    book.isbn = 9785267006323;
    book.title = "1986";
    book.author = "George Orwell";
    book.available = true;

    cout << book.isbn << endl;
    cout << book.title << endl;
    cout << book.author << endl;
    cout << book.available << endl;

    return 0;
}

Configurar valor de propiedades de objeto

book.isbn = 9785267006323;
book.title = "1986";
book.author = "George Orwell";
book.available = true;

Acceso a propiedades de objeto

Para acceder a propiedades o métodos dentro de nuestros objetos utilizamos el operador .

cout << book.isbn << endl;
cout << book.title << endl;
cout << book.author << endl;
cout << book.available << endl;

Métodos

Las funciones el cual definimos dentro de las clases, les llamamos método.

#include <iostream>

using namespace std;

class Book {
    public:
        long isbn;
        string title;
        string author;
        int available;

        bool getCopy() {
            if(available < 1) {
                return false;
            }
            else {
                available--;
                return true;
            }
        }
};

int main() 
{
    Book book;
    book.available = 12;

    if(book.getCopy()) {
        cout << "Here, your copy." << endl;
        cout << "Copy available: " << book.available << endl;
    }
    else {
        cout << "I am afraind that book is not available." << endl;
    }

    return 0;
}
//-> Here, your copy.
//-> Copy available: 11

Acceso a propiedades y métodos

Las palabras reservadas también la utilizamos con los métodos de una clase, estas palabra especifican la visibilidad o uso de las propiedades y métodos cuando combinamos clases o queremos utilizar propiedades de los objetos creados por la clases.

  • public

Esta especifica que esa propiedad o metodo no tiene restriccion de uso, puede ser utilizada o llamada de cualquier punto de la aplicación. También puede ser modificada en cualquier punto.

  • protected

Esta especifica que la propiedad o método puede ser utilizado o modificada exclusivamente dentro de la misma clase el cual fue definida, o clases derivadas de la cual la propiedad fue definida.

  • private

Esta especifica que la propiedad o método puede ser utilizado o modificada exclusivamente dentro de la misma clase el cual fue definida, no puede ser modificada o usada fuera de la misma clase en la cual se formo.

Declaración de objetos con punteros

Además de declarar objeto de la manera común, también podemos declarar objeto a puntero de la siguiente manera. Utilizando el símbolo * antes del nombre del objeto y asignando al puntero la clase usando la palabra reservada new

#include <iostream>

using namespace std;

class Book {
    public:
        long isbn;
        string title;
        string author;
        bool available;
};

int main()
{
    Book *book = new Book;

    book->isbn = 9785267006323;
    book->title = "1986";
    book->author = "George Orwell";
    book->available = true;

    cout << book->isbn << endl;
    cout << book->title << endl;
    cout << book->author << endl;
    cout << book->available << endl;

    return 0;
}

Operadores para acceso a propiedades o métodos

Los operadores . punto y -> flecha son utilizado para acceder a propiedades de nuestro objetos una vez ya creados. Ellos tienen algunas diferencias y es que el operador . punto lo usamos para acceder a los objetos creado de manera común y el operador -> flecha lo usamos para acceder a propiedades de objetos creados por medio de punteros.

Asignación dinámica

Para explicar este tema vamos a estar basado en los ejemplo pasado, cuando declaramos de la siguiente manera un objeto Objeto myObjeto; en algún bloque de código, este objeto es creado y guardado durante el tiempo el cual el objeto esté en el enfoque del bloque creado, una vez fuera del enfoque trabajado este objeto automaticamente sera destruido de la memoria.

Cuando usamos la siguiente forma de declarar un objeto por medio de puntero new Objeto() este objeto se guardará de forma dinámica y este objeto estará accesible hasta que explícitamente utilicemos la palabra reservada delete . Nosotros como programadores debemos declarar objeto de duración en memoria automática.

Existen dos situaciones el cual se requiere la asignación dinámica:

  1. Cuando necesitas utilizar un objeto fuera del enfoque el cual estés utilizando.
  2. Cuando necesites asignar mucha memoria.

results matching ""

    No results matching ""