Tema 27 – Programación orientada a objetos.

Tema 27 – Programación orientada a objetos.

1. INTRODUCCIÓN.. 2

2. OBJETOS Y CLASES. 2

3. MÉTODOS Y MENSAJES. 3

4. ENCAPSULAMIENTO Y OCULTACIÓN.. 4

5. HERENCIA.. 4

6. POLIMORFISMO O VINCULACIÓN DINÁMICA.. 5

7. DISEÑO ORIENTADO AL OBJETO.. 5

8. LENGUAJES. 5

9. INTRODUCCIÓN AL C++. 5

10. OBJETOS Y CLASES EN C++. 5

11. CONSTUCTORES Y DESTRUCTORES EN C++. 6

12. SOBRECARGA EN C++. 7

13. HERENCIA.. 7

14. VENTAJAS Y DESVENTAJAS DE LA PROGRAMACIÓN ORIENTADA AL OBJETO.. 8

1. INTRODUCCIÓN

· Nueva filosofía frente a la programación tradicional o estructurada.

· En la programación tradicional los datos y las operaciones se encontraban separados. Por un lado, estaban las variables y por el otro las instrucciones.

· En la programación orientada a objetos los datos y el código se agrupan en objetos. Se unen en un módulo (clase).

Anteriormente disponíamos de 2 tipos de abstracción:

clip_image001clip_image002clip_image003clip_image004clip_image005

Abstracción funcional: Un nombre agrupa un conjunto de acciones. Son los procedimientos y funciones del lenguaje de programación.

Abstracción de datos: un nombre agrupa un conjunto de datos. Son las estructuras de datos.

2. OBJETOS Y CLASES

· En la vida real como en la programación existen objetos donde tiene una serie de características y podemos realizar una serie de operaciones con él.

· Una persona tiene una serie de características como nombre, edad, color del pelo, altura, peso, estudios, color de ojos, etc.

· En programación una clase se define por 2 características básicas:

Propiedades o atributos:

Características que definen un objeto.

Métodos u operaciones:

Acciones que podemos realizar con el objeto.

· Tanto las propiedades como los métodos pueden ser propios de un objeto o heredados de otro.

· Un objeto es una instancia particular de una clase.

clip_image007

· Un objeto no funciona de forma independiente, se tiene que comunicar con otro por medio de mensajes.

3. MÉTODOS Y MENSAJES

· Un método determina qué debe hacer un objeto cuando recibe un mensaje.

· El conjunto de mensajes que puede recibir un objeto es lo que denominamos protocolo.

· Dependiendo del acceso, tenemos 2 tipos de métodos:

o Públicos: Pueden ser activados por cualquier objeto del sistema.

o Privados: Sólo pueden ser activados por el mismo objeto.

· Los métodos pueden pertenecer a una clase o a un objeto. Los que pertenecen a la clase son los que se encargan de construir o destruir un objeto de la clase. (constructores o destructores).

· Constructor: Se encarga de crear un objeto de la clase.

· Destructor: Se encarga de eliminar el objeto del sistema.

Los métodos, atendiendo a la función que realizan, pueden ser:

Observadores:

No alteran ninguna propiedad del objeto.

Matadores:

Alteran alguna propiedad del objeto. Por ejemplo, en el objeto Esteban de la clase persona, podemos definir un método cumplir_años, que aumenta en un año la edad del objeto Esteban.

4. ENCAPSULAMIENTO Y OCULTACIÓN

· En un objeto clase, integramos tanto métodos como propiedades (encapsulamiento)

· Mediante la ocultación, separamos la implementación interna de un objeto de su uso.

5. HERENCIA

Permite reutilizar código y propiedades de una clase a otra.

Hay un padre que transmite sus propiedades y métodos a un hijo.

Disponemos de 3 niveles:

Raíz de la jerarquía: No tienen padre. Son el top.

Objetos intermedios: Tienen padres e hijos.

Objetos terminales: Tienen padres, pero no hijos.

Hay 3 tipos básicos de herencia:

clip_image009Herencia simple: Un hijo un único padre.

Herencia compuesta: Un hijo puede tener más de un padre.

clip_image011

Herencia selectiva: Se puede seleccionar que métodos o atributos vamos a heredar.

Las propiedades o métodos pueden ser:

1) Públicos: pueden acceder cualquier objeto.

2) Privados: Solo puede acceder el objeto que la posee.

3) Protegidos: A parte del propio objeto puede acceder cualquiera de sus hijos.

6. POLIMORFISMO O VINCULACIÓN DINÁMICA

Un método con un nombre simple es compartido por muchos objetos. La clase cuadrado y la clase rectángulo ambas tienen un método que se llama dibujar. Pero este método dibujará la figura geométrica de cada uno.

7. DISEÑO ORIENTADO AL OBJETO

El diseño orientado al objeto se basa en:

1) Identificar los objetos del sistema.

2) Identificar los mensajes que cada objeto puede tanto enviar como recibir.

3) Determinar la secuencia de mensajes de nuestro sistema.

1º FASE:

1) Escribir párrafos cortos y directos que describan lo que queremos hacer.

2) Cada párrafo representa un nivel de abstracción similar.

3) Los párrafos han de describir, de forma global, lo que hace nuestro sistema, pero sin detallar como lo vamos a hacer.

2º FASE:

1) Indicaremos los objetos

2) Identificaremos los mensajes

3) Identificaremos los atributos y los diferentes estados de los objetos.

4) Identificaremos la secuencia de mensajes de nuestro programa.

5) Construir una tabla de objetos, mensajes y atributos.

8. LENGUAJES

Los lenguajes orientados a objetos pueden ser:

Puros: La única forma de manipular los objetos creado en este sistema es mediante mensajes.

Híbridos: Podemos programas mediante la forma tradicional o POO.

9. INTRODUCCIÓN AL C++

Mantiene la compatibilidad con C.

Lenguaje híbrido.

10. OBJETOS Y CLASES EN C++

Normalmente las propiedades o atributos son privados y los métodos públicos.

clip_image013

11. CONSTUCTORES Y DESTRUCTORES EN C++

Constructores: métodos encargados de crear el objeto. Se emplea el operador new.

1) Tienen mismo nombre que la clase en que están definidos.

2) Un constructor puede recibir todos los parámetros que deseemos, pero no puede devolver ningún valor.

3) Un constructor puede sobrecargarse.

4) El constructor es llamado de forma automática cuando se crea un objeto de su clase.

5) Si no creamos ningún constructor para nuestra clase, C++ genera uno.

Destructores: Métodos que se encargar de liberar memoria, destruir datos o estructuras…Se emplea el operador delete.

1) Tiene el mismo nombre que la clase de la cual es miembro, pero precedido por la tilde “ ~ ”

2) No puede sobrecargarse.

3) Son llamados automáticamente cuando es necesario destruir el objeto.

4) Se ejecuta cuando aplicamos el operador delete.

5) Si no creamos ninguno, C++ genera uno.

#include <iostream>

using namespace std;

class pareja {

public:

// Constructor

pareja(int a2, int b2);

// Funciones miembro de la clase “pareja”

void Lee(int &a2, int &b2);

void Guarda(int a2, int b2);

private:

// Datos miembro de la clase “pareja”

int a, b;

};

pareja::pareja(int a2, int b2) { //constructor

a = a2;

b = b2;

}

void pareja::Lee(int &a2, int &b2) {

a2 = a;

b2 = b;

}

void pareja::Guarda(int a2, int b2) {

a = a2;

b = b2;

}

int main() {

pareja par1(12, 32);

int x, y;

par1.Lee(x, y);

cout << “Valor de par1.a: ” << x << endl;

cout << “Valor de par1.b: ” << y << endl;

return 0;

}

12. SOBRECARGA EN C++

Nos permite tener diferentes miembros con el mismo nombre.

2 tipos de sobrecarga:

Sobrecarga de funciones: 2 funciones con mismo nombre.

Sobrecarga de operadores: Caso especial. Se puede asignar nueva funcionalidad a operadores.

La sobrecarga siempre se aplica a un constructor, nunca a un destructor.

13. HERENCIA

Usaremos la siguiente sintaxis para usar la herencia en C++:

class ClaseDerivada : (public/private/protected ) ClaseBase
{
    //cuerpo de la nueva clase
}
 
//Primero creamos la clase VehiculoRodante
class VehiculoRodante
{
public:
.
.
.
……………
//Después creamos la clase Camión que hereda de VehiculoRodante
class Camion : public VehiculoRodante
 
{

Disponemos de 3 modificadores de acceso diferentes:

Public

Private

Protected

14. VENTAJAS Y DESVENTAJAS DE LA PROGRAMACIÓN ORIENTADA AL OBJETO

Ventajas:

Ocultación de la información.

Polimorfismo: Varios objetos pueden tener métodos con el mismo nombre

Herencia: Nos permite reutilizar parte de un objeto.

Desventajas:

Tiempo de ejecución del mecanismo de vinculación dinámica.

– Implementación más compleja

– Necesidad de aprender el uso de las librerías de clases.