21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

30
UNIDAD 4: PROGRAMACIÓN ORIENTADA A OBJETOS 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos

Transcript of 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

Page 1: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

UNIDAD 4: PROGRAMACIÓN

ORIENTADA A OBJETOS

21/10/2014Lcdo. Luis Peña Procesamiento de Datos

Page 2: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

La Programación Orientada a Objetos (POO u OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de 1990.  Porqué es importante? Un objeto encapsula tanto datos como los procesos que se aplican a esos datos. Esta importante característica permite construir clases de objetos e inherentemente construir bibliotecas de objetos y clases reutilizables.

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)

Page 3: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)

Page 4: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

Programación orientada a objetosSoporte sintáctico explícito para la abstracción de datosCambia el punto de vista: los programas son apéndices de los datosAparece un nuevo concepto: objetoObjeto = tipo abstracto de datos con estado (atributos) y comportamiento (operaciones) propios.Aparece el concepto de jerarquía de tipos, y con él:

Herencia de estructura y funcionalidad Polivalencia de los tipos Polimorfismo

Sintaxis del lenguaje: Definición de clases Funciones explícitamente asociadas a clases Creación de objetos Acceso a atributos, invocación de métodos Objeto

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)

Page 5: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

La P.O.O. es un paradigma de programación que se fundamenta en los conceptos de objeto y clase.

Objeto: Una entidad autónoma con una funcionalidad concreta y bien definida. Un objeto es una unidad de código compuesto de variables y métodos relacionados.

Clase: Especificación o definición de las características y comportamiento de un conjunto de objetos. Un objeto es una instancia de una clase. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas.

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)

Page 6: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)

Todo objeto del mundo real tiene 2 componentes: 1. Características2. Comportamiento.

Cuando a las características del objeto le ponemos valores decimos que el objeto tiene estados. Las variables almacenan los estados de un objeto en un determinado momento.

Page 7: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

Ejemplo de clase con sus atributos y métodos

class Vector {

private:

double x;

double y;

public:

Vector (double u1, double u2) {

x = u1; y = u2;

}

double modulo () {

return sqrt (x*x + y*y);

}

}; //Fin de la Clase

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)

void main () {

Vector u (4, -2);

cout << u.modulo ();

}//Fin del main

Page 8: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)

En resumen una clase es una descripción generalizada que describe una colección de objetos similares. Por definición, todos los objetos que existen dentro de una clase heredan sus atributos y las operaciones disponibles para la manipulación de los atributos. Una superclase es una colección de clases y una subclase es una instancia de una clase. Estas definiciones implican la existencia de una jerarquía de clases en la cual los atributos y operaciones de la superclase son heredados por subclases que pueden añadir, cada una de ellas atributos y métodos

EJEMPLO

Page 9: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)

Ejemplo de Jerarquía para la clase Mobiliario

Page 10: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)

Page 11: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

Conceptos fundamentales

Propiedad o atributo: Contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método.

Un atributo puede tomar un valor definido por un dominio enumerado. Es decir un conjunto de valores especificados.

Las características (valores de dominio) pueden aumentarse asignando un valor por defecto aun atributo.

Componentes de un objeto: Atributos, identidad, relaciones y métodos.

Representación de un objeto: Un objeto se representa por medio de una tabla o entidad que esté compuesta por sus atributos y funciones correspondientes.

 

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)

Page 12: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)

Conceptos fundamentales

  Operaciones, Métodos y Servicios: Un objeto encapsula datos

(representados como una colección de atributos) y los algoritmos que procesan esos datos. Estos algoritmos son llamados operaciones, métodos o servicios.

Mensaje: Una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó. Los mensajes son el medio a través del cual interactúan los objetos.

Un mensaje se genera de la forma: destino.operacion(parametros)

 

Page 13: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)

Ventajas de la Programación orientada a objetos:

Ventajas de la abstracción de datos + disciplina de programación

Reutilización de código, mantenimiento y extensión de las aplicaciones ya que las estructuras de datos están mezcladas en una entidad sencilla: la clase. (Encapsulamiento)

Desarrollo e integración de software orientado a componentes

Potencia del lenguaje: herencia, polimorfismo 

Page 14: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

Ciclo de vida de los objetos

Creación Reserva de memoria: Empleado x = crear Empleado (···) Inicialización de atributos: constructores

Un objeto se puede instanciar de una forma simple, declarando una variable del tipo de la clase.

void ejemplo (TObject *Sender) {nombre_clase ObjGraf1();

}

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)

Page 15: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

Manipulación Acceso a atributos: x.nombre Invocación de métodos: x.salario_neto ( )

Destrucción Liberar la memoria Destruir partes internas, si las hay Eliminar referencias al objeto destruido (p.e. jefe)

Destrucción de objetos  Cuando un objeto deja de ser útil hay que eliminarlo. De esta manera la aplicación recupera los recursos (memoria) que ese objeto había acaparado cuando se creó.La destrucción de objetos creados en tiempo de ejecución con new se realiza mediante el operador delete.

Ejemplo: void ~ nombre_clase (TObject *Sender)

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)

Page 16: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

Constructores y Destructores (Inicialización de Clases)

Son métodos que permiten establecer el estado inicial y final de un objeto. Los constructores se pueden definir con un conjunto de argumentos arbitrario, pero no pueden devolver nada. Y los destructores no pueden recibir ni devolver ningún valor.

El constructor debe llamarse igual que la clase, y el destructor el nombre de la clase precedido del carácter ~

Un constructor se ejecuta cuando se crea un nuevo objeto:

1. por declaración, ó

2. cuando se crea dinámicamente con el operador new.

Un destructor se ejecuta cuando el objeto deja de existir:

1. porque su ámbito acaba, ó

2. cuando se libera explícitamente con el operador delete.

TObjGraf :: TObjGraf (TColor _Color, int _X, int _Y){

Color = _Color; X = _X; Y = _Y;

}  

ObjGraf = new TObjGraf (clRed, 10, 10);

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)

Page 17: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

Pilares de la POO.

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)

Page 18: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

Abstracción: Denota las características esenciales de un objeto, donde se capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cómo se implementan estas características.

Pero ¿qué es realmente la abstracción? Básicamente es la capacidad de separar los elementos (al menos mentalmente) para poder verlos de forma singular. Como cuando describimos el cuerpo humano y decimos cabeza, brazo(s), pierna(s), etc.

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)

Page 19: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

Existen tres características de los sistemas orientados a objetos que los hacen únicos.

LA HERENCIA es una de las diferencias clave entre los sistemas convencionales y sistemas OO. La herencia es la propiedad que permite a los objetos construirse a partir de otros objetos. La herencia impone una relación jerárquica entre clases en la cual una clase hija hereda de su clase padre. Si una clase sólo puede recibir características de otra clase base, la herencia se denomina herencia simple.Si una clase recibe propiedades de más de una clase base, la herencia se denomina herencia múltiple

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)c

Page 20: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

Herencia de Estructura

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)c

Page 21: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)c

Page 22: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)c

Page 23: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

Encapsulamiento: Se dice que es el empaquetado de métodos y atributos dentro de un objeto, mediante una interfaz de mensajes. La clave está precisamente en el envoltorio del objeto.

En un objeto podemos distinguir dos aspectos bien diferenciados:◦ Estado -----------> Propiedades ◦ Comportamiento ---> Métodos

En P.O.O. los datos y los procedimientos que los gestionan están relacionados explícitamente y se "encapsulan" en un objeto. La especificación de las propiedades de un objeto y los métodos de acceso se realiza en la declaración de la clase de la que se instancia el objeto.

Propiedades y métodos de los objetos de una clase TObjGraf.

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)c

Page 24: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

POLIMORFISMO: Es una característica que reduce en gran medida el esfuerzo necesario para extender un sistema OO.

Para entender el polimorfismo, consideremos una aplicación convencional que debe dibujar 4 tipos diferentes de gráficos: gráficos de línea, gráficos de tarta, histogramas etc. Para realizar esto en una aplicación convencional sería necesario desarrollar módulos de dibujo para cada tipo de grafico, por ejemplo:

Case of tipo_grafico:If (tipo_grafico = grafico_linea) then

DibujarLinea(datos);If (tipo_grafico = grafico_tarta) then

DibujarTarta(datos);If (tipo_grafico = grafico_histograma) then

DibujarHistograma(datos); End case;

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)c

Page 25: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

Para resolver esto cada uno de los gráficos se convierte en una subclase de una clase general llamada Gráfico. Una subclase define una operación llamada Dibujar. Quedando de la sig manera:

Tipo_grafico dibujar.

En resumen el polimorfismo permite que un número de operaciones diferentes tengan el mismo nombre. Esto reduce el acoplamiento entre objetos, haciendo a cada uno más independiente.

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)c

Page 26: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

Sistema de Seguridad Hogar Seguro

El software Hogar seguro le permite al propietario de la casa configurar el sistema de seguridad una vez que este se instala, controla todos los sensores conectados al sistema de seguridad, e interactúa con el propietario a través de un teclado numérico y teclas de función contenidas en el panel de control de Hogar Seguro.

Durante la instalación, el panel de control Hogar Seguro se usa para "programar" y configurar el sistema. A cada sensor se le asigna un numero y tipo, se programa una contraseña maestra para activar y desactivar el sistema, y se introducen números de teléfonos a marcar cuando un sensor detecte un suceso.

Cuando se reconoce un suceso de sensor, el software involucra una alarma audible asociada al sistema. Después de un tiempo de espera especificado por el propietario durante las actividades de configuración al sistema, el software marca un número de teléfono de un servicio de control, proporciona información acerca de la localización, e informa de la naturaleza del suceso detectado.

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)c

Page 27: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

Sensor Panel de control Sistema de seguridad Suceso de sensor Alarma audible

Información de sensor: tipo de sensor + numero de sensor + umbral de alarma.

Información de respuesta de la alarma: tiempo de retardo + numero de teléfono + tipo de alarma.

Información de activación / desactivación: contraseña maestra + cantidad de intentos permitidos + contraseña temporal.

Información de identificación: ID del sistema + verificación de numero de teléfono + estado del sistema

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)c

Page 28: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)c

Sistema

ID del sistemaNumero de teléfono de verificaciónEstado del sistemaTabla de sensoresTipo de sensorNumero de sensorUmbral de alarmaContraseña maestraNumero de intentos

Programar()Mostrar()Reiniciar()Consultar()ModificarLlamar()

Algunas de las operaciones pueden determinarse a partir de comunicación semejantes entre objetos. Por ejemplo, el Suceso sensor enviara un mensaje a Sistema para mostrar en pantalla la localización y numero del suceso; el panel de control enviara un mensaje de reinicialización para actualizar el estado del sistema entre otros.

Page 29: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

Se requiere un programa que utilice la clase para un “Usuario” con dos atributos: LoginCorrecto y PasswordCorrecto y un método: Validar(login, pass) : bool, que se encargará de comparar los parámetros suministrados con los valores correctos. El valor de retorno será “true” si son iguales y “false” si son diferentes.

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)

class Usuario {Private:

string loginCorrecto;string passwordCorrecto;

Public: bool Validar(string log, string pass) { if (log == loginCorrecto && pass == passwordCorrecto) { return true; } else {

return false; }//Fin else }//Fin de Validar}//Fin de la clase

Page 30: 21/10/2014 Lcdo. Luis Peña Procesamiento de Datos.

Se desea desarrollar un sistema para una concesionaria de vehículos. Los vehículos se clasifican en: autos, camionetas y motocicletas. Todos los vehículos tienen un código, una marca, tipo (auto, camioneta, etc.), un modelo (año), una patente y un kilometraje. Además, la concesionaria lleva un registro de las ventas realizadas, cada registro consiste de la siguiente información: monto de la venta, vehículo vendido (código), apellido, nombre y cedula del comprador.

UNIDAD 4. PROGRAMACION ORIENTADA A OBJETOS (POO)c