Tema 3: Introducción a la programación orientada a objetos. (El lenguaje C++) 1 Tema 3: Introducción a la POO Mariano Pérez Índice 1. Técnicas de Programación: Programación no estructurada. Programación orientada a procedimientos. Programación modular. Programación orientada a objetos. 2. Conceptos de programación orientada a objetos. Abstracción de datos. Encapsulamiento. Clase Objeto Mensaje. 2 Tema 3: Introducción a la POO Mariano Pérez 1. Técnicas de programación Programación no estructurada Pequeños programas con: Una sola función principal (main), con secuencias de instrucciones que modifican: Variables globales. Programa programa principal datos Poco eficiente para grandes programas: Necesidad de repetir las secuencias de instrucciones Solución Extraer las secuencias de instrucciones que se repiten fuera del programa principal->procedimientos 3 Tema 3: Introducción a la POO Mariano Pérez 1. Técnicas de programación Programación orientada a procedimientos Descomponemos un problema en subproblemas, y repetimos el proceso hasta codificarlo todo . Creamos un conjunto de funciones (o procedimientos) que se comunican a través de argumentos y variables. Soportada tanto por C como por C++. Programa: secuencia de procedimientos. El programa ppal pasa los datos a los procedimientos, que los procesan. Programa Ej. Calcular área de figura ‘f’: 4 a= Area(f); switch(f.tipo_figura){ case rectang: a=AreaRect(f); break; case circulo: a= AreaCirc(f); break;} Tema 3: Introducción a la POO programa principal datos datos AreaRect datos AreaCirc proc Mariano Pérez 1. Técnicas de programación Programación modular • Los procedimientos con una funcionalidad común se agrupan en módulos. • El programa ppal llama a los procedimientos de los módulos. • Los módulos contienen datos y procedimientos. • Cada módulo sólo tiene un estado, y sólo existe una vez como máximo durante el programa. • Módulo con dos ficheros: interfaz (*.h) implementación (*.c ó *.cpp) 5 Programa programa principal datos módulo datos proc módulo proc 1 Tema 3: Introducción a la POO proc 3 Mariano Pérez 1. Técnicas de programación Programación orientada a objetos Se centra más en los datos que en los procedimientos. Los datos, y las operaciones aplicables a ellos, son objetos. Sobre los objetos se realizan peticiones, y devuelven datos. Cada objeto gestiona las peticiones de forma distinta. Ejemplo: a=f.Area(); -> a la figura f se le pide que devuelva su área, sin importar de qué tipo de figura se trate. Abstracción de datos Ocultación de la información. Herencia. Enlace dinámico de los mensajes a procedimientos. 6 Tema 3: Introducción a la POO Mariano Pérez Índice 1. Técnicas de Programación: Programación no estructurada. Programación orientada a procedimientos. Programación modular. Programación orientada a objetos. 2. Conceptos de programación orientada a objetos. Abstracción de datos. Encapsulamiento. Clase Objeto Mensaje. 7 Tema 3: Introducción a la POO Mariano Pérez 2. Conceptos de programación orientada a objetos Abstracción de datos • Resolución de problemas: creamos un modelo abstracto del problema. Abstracción Problema Modelo • Propiedades del problema: datos y operaciones. - Ej: programa para la gestión de empleados. Modelo del empleado: propiedades necesarias para resolver este problema-> datos. Empleado abstracto. Operaciones sobre los empleados abstractos. 8 Tema 3: Introducción a la POO Mariano Pérez 2. Conceptos de programación orientada a objetos • Tipo abstracto de datos: estructura de datos con unas operaciones sobre ellos definidas. • Operaciones sobre los datos = interface ->parte visible. Modelo de empleado: - Datos: nombre, DNI, sueldo... - Operaciones: crear empleado nuevo, borrar existente.... tipo de datos abstracto Estructura de datos abstracta Operaciones instancia instancia interfaz Empleados concretos -Empleado 1: Juan, ... -Empleado 2: Vicente,... • En POO: tipo de datos abstracto = Clase. 9 Tema 3: Introducción a la POO Mariano Pérez 2. Conceptos de programación orientada a objetos Encapsulamiento = ocultación de información. • Ocultación de información: sólo mostramos la interfaz de la estructura de datos (las operaciones) y ocultamos lo datos. • Ventajas: al usar la clase no nos preocupamos de cómo se realizan internamente las operaciones. - Ej: clase complejo Datos: parte real (r) , y parte imaginaria (i ). Operaciones: suma, resta, etc. Instancias: complejos A , B y C C = A + B-> no importa cómo se haga internamente la suma. 10 Tema 3: Introducción a la POO Mariano Pérez 2. Conceptos de programación orientada a objetos Clase • Representación de un tipo abstracto de datos. • Contiene atributos (=datos) y métodos (=operaciones). • Instancias de las clases = objetos. • Clase: define las propiedades y el comportamiento de un conjunto de objetos. class Empleado { // Atributos (Datos): string nombre; int DNI; .............. // Métodos (Operaciones): insertar_nombre(..); }; 11 Tema 3: Introducción a la POO Mariano Pérez 2. Conceptos de programación orientada a objetos Objeto. • Instancia de una clase: “ejemplos” reales de la clase abstracta. • Identificados por medio de un nombre. • Estado del objeto: valores de sus atributos. Mensaje. • Solicitud a un objeto para invocar a uno de sus métodos. • Contiene: nombre del método, y argumentos del método. 12 Tema 3: Introducción a la POO Mariano Pérez 2. Conceptos de programación orientada a objetos Programa. • Conjunto de objetos interactuando. • Los objetos reaccionan al recibir mensajes cambiando su estado. Programa Objeto 1 Objeto 3 Objeto 4 Objeto 2 13 Tema 3: Introducción a la POO Mariano Pérez