Fundamentos de la Programación Orientada a Objetos Objetos y Clases Programación Orientada a Objetos Facultad de Informática Juan Pavón Mestras Dep. Ingeniería del Software e Inteligencia Artificial Universidad Complutense Madrid Conceptos fundamentales de la POO Objetos Clases Métodos Parámetros Tipos de datos Juan Pavón Mestras Facultad de Informática UCM, 2007-08 Programación Orientada a Objetos 2 Objetos Los objetos son/representan cosas Los objetos pueden ser simples o complejos Los objetos pueden ser reales o imaginarios Hola Mundo Juan Pavón Mestras Facultad de Informática UCM, 2007-08 3 Programación Orientada a Objetos Atributos Valores o características de los objetos Permiten definir el estado del objeto u otras cualidades Velocidad Aceleración Capacidad de combustible Marca Color Potencia Velocidad máxima Carburante constantes variables Juan Pavón Mestras Facultad de Informática UCM, 2007-08 Programación Orientada a Objetos 4 Mensajes Los objetos se comunican e interaccionen entre sí por medio de mensajes Si un objeto desea que otro objeto haga algo le envía un mensaje que puede tener información adicional en forma de parámetros Cuando un objeto recibe un mensaje ejecutará un método u operación Componentes de un mensaje Objeto destinatario del mensaje (miCoche) Método que se debe ejecutar como respuesta (cambiar marcha) Parámetros necesarios del método (segunda) Juan Pavón Mestras Facultad de Informática UCM, 2007-08 5 Programación Orientada a Objetos Métodos (u operaciones) Acciones que puede realizar un objeto Arrancar motor Parar motor Acelerar Frenar Girar a la derecha (grados) Girar a la izquierda (grados) Cambiar marcha (nueva marcha) método Juan Pavón Mestras Facultad de Informática UCM, 2007-08 Programación Orientada a Objetos argumentos o parámetros 6 Métodos (u operaciones) Los métodos pueden devolver un valor al acabar su ejecución Valor de retorno Juan Pavón Mestras Facultad de Informática UCM, 2007-08 Programación Orientada a Objetos 7 Clases Representan un tipo particular de objetos Objetos con características y comportamiento similar Categorías de objetos objetos de la clase Coche Juan Pavón Mestras Facultad de Informática UCM, 2007-08 Programación Orientada a Objetos 8 Clases Cada clase tiene asociado un código (definición de la clase), que determina Los atributos que tienen los objetos de la clase Los métodos que pueden ejecutar los objetos de la clase y cómo lo hacen Programar orientado a objetos consiste en escribir código de clases de objetos Juan Pavón Mestras Facultad de Informática UCM, 2007-08 Programación Orientada a Objetos 9 Definición de clases en C++ enum Carburante { diesel, super, sinplomo }; void frenar() { // instrucciones para frenar el coche }; class Coche { char* marca; double vel_max; int potencia; Carburante tipo_carburante; void acelerar() { // instrucciones para acelerar el coche }; void girar_derecha(short grados) { // instrucciones para girar a la derecha }; double velocidad; double aceleracion; public: void arrancar() { // instrucciones para arrancar el coche }; Juan Pavón Mestras Facultad de Informática UCM, 2007-08 // etc. }; // fin de definición de la clase Coche Programación Orientada a Objetos 10 Definición de clases en Java void frenar() { // instrucciones para frenar el coche }; class Coche { // atributos: String marca; double vel_max; int potencia; String tipo_carburante; void acelerar() { // instrucciones para acelerar el coche }; double velocidad; double aceleracion; void girar_derecha(short grados) { // instrucciones para girar a la derecha }; // métodos: void arrancar() { // instrucciones para arrancar el coche }; Juan Pavón Mestras Facultad de Informática UCM, 2007-08 // etc. }; // fin de definición de la clase Coche Programación Orientada a Objetos 11 Clases De cada clase pueden crearse múltiples objetos Cada objeto tiene valores propios asignados a los atributos: estado del objeto Juan Pavón Mestras Facultad de Informática UCM, 2007-08 Programación Orientada a Objetos 12 Tipos de datos Indican la naturaleza de los datos Hay algunos básicos (dependen del lenguaje de programación) Que se pasan como parámetro o que devuelven los métodos De los atributos de los objetos int boolean double String … Y otros los definen las clases Objetos de una clase determinada • Definida por el usuario • De una librería Juan Pavón Mestras Facultad de Informática UCM, 2007-08 Programación Orientada a Objetos 13 Un programa en POO Un programa consta de un conjunto de instancias o ejemplares de objetos (object instances) y un flujo de control principal (main) Durante la ejecución del programa: Los objetos se crean y se destruyen • Gestión dinámica de la memoria Se les solicita a los objetos que ejecuten métodos (operaciones) Juan Pavón Mestras Facultad de Informática UCM, 2007-08 Programación Orientada a Objetos 14 Un programa en C++ main() { Coche *c=new Coche(); // crea un objeto Coche c-> arrancar // utiliza el objeto // ... dispose(c); // elimina el objeto } Juan Pavón Mestras Facultad de Informática UCM, 2007-08 Programación Orientada a Objetos 15 Un programa en Java class Programa { public static void main(String args[]) { Coche c=new Coche(); // crea un objeto Coche c.arrancar(); // utiliza el objeto // ... } // se elimina el objeto cuando nadie lo puede utilizar // ¡ automáticamente ! } Juan Pavón Mestras Facultad de Informática UCM, 2007-08 Programación Orientada a Objetos 16 Ejercicios Instalar BlueJ Se puede encontrar en http://www.bluej.org/ Abrir el ejemplo que tiene el nombre shapes Crear objetos Seleccionar un objeto y ejecutar new ClaseObjeto() Ver atributos de objetos Invocar métodos en objetos Ver el código de las clases de objetos Crear un dibujo combinando varios objetos Juan Pavón Mestras Facultad de Informática UCM, 2007-08 Programación Orientada a Objetos 17 Bibliografía D.J. Barnes y M. Kölling, Programación orientada a objetos con Java. Una introducción práctica usando BlueJ. Pearson Educación, 2007 T. Budd, An introduction to Object-Oriented Programming (Third Edition). Pearson Education, 2001 E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Paterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994 B. Stroustrup, The C++ Programming Language (Third Edition). Addison-Wesley, 1997 Agustín Froufe. Java 2. Manual de usuario y tutorial. Ed. Ra-Ma J. Sánchez, G. Huecas, B. Fernández y P. Moreno, Iniciación y referencia: Java 2. Osborne McGraw-Hill, 2001. B. Meyer, Object-Oriented Software Construction (Second Edition). Prentice Hall, 1997 Juan Pavón Mestras Facultad de Informática UCM, 2007-08 Programación Orientada a Objetos 18