Ingeniera de Software III
UNIVERSIDAD DE OCCIDENTE ANALISIS Y DISEO ORIENTADO A OBJETOS
PROGRAMACIN ORIENTADA A OBJETOS
Conceptos Generales Teora y Prctica
Objetivos
Conocer los conceptos fundamentales de la teora de orientacin a objetos. Diferenciar los distintos conceptos utilizados en la programacin orientada a objetos (POO). Entender el paradigma de POO. Su aplicacin en distintos tipos de problemas. Analizar como la orientacin a objetos contribuye en los diferentes niveles de reutilizacin. Aplicar los conceptos de orientacin a objetos para el diseo y programacin de sistemas.
Conceptos Generales
Objetos y clases Atributos Mensajes y mtodos Encapsulacin y ocultamiento Interfaces Herencia de clases Polimorfismo Vinculacin dinmica Composicin de objetos
Por qu la orientacin a objetos
La tcnica orientada a objetos sigue con frecuencia el mismo mtodo que aplicamos en la resolucin de problemas de la vida diaria. El anlisis y diseo orientado a objetos modela el mundo en trminos de objetos que tienen estado y comportamiento, y eventos que activan operaciones que modifican el estado de esos objetos. Los objetos interactan de manera formal con otros objetos mediante mensajes.
Algunos beneficios de la orientacin a objetos
Reutilizacin. Permite la reusabilidad de cdigo y la herencia ahorrando dinero y empleando menos tiempo de desarrollo. Integridad. Los mecanismos de encapsulacin protegen sus propios componentes contra los procesos que no tengan derecho a acceder a ellos. La forma de pensar en objetos es ms natural. El diseador piensa en trminos de objetos y no en detalles de bajo nivel. Programacin ms sencilla. Los programas se crean a partir de piezas pequeas.
Otros beneficios de la tecnologa OO
Los mtodos de los objetos pueden ser polimrficos, es decir, tienen la habilidad de enviar un mismo mensaje a objetos de clases diferentes, se comportan de distintas maneras. Es ms sencillo modificar cdigo existente, cada clase efecta sus funciones independientemente de las dems. Se construyen clases cada vez ms complejas a partir de otras ms sencillas ya existentes. Confiabilidad. Generalmente las clases ya estn probadas. Estabilidad de los modelos respecto a entidades del mundo real.
Motivos que han conducido al xito la tecnologa de objetos
Avances en arquitectura de computadores Avances en lenguajes de programacin (Smalltalk, C++, Java, Eiffel, ...). Ingeniera del software (modularidad, encapsulado de la informacin, proceso de desarrollo incremental) Los lmites de la capacidad de gestionar la complejidad de los sistemas simplemente con tcnicas de descomposicin algortmica
Qu es la Programacin Orientada a Objetos
Organizacin de los programas de manera que representan la interaccin de las cosas en el mundo real. Un programa consta de un conjunto de objetos. Los objetos son abstracciones de cosas del mundo real. Nos interesa qu se puede hacer con los objetos ms que cmo se hace. Cada objeto es responsable de unas tareas. Los objetos interactan entre s por medio de mensajes. Cada objeto es un ejemplar de una clase. Las clases se pueden organizar en una jerarqua de herencia. La programacin OO es una simulacin de un modelo del universo.
Una manera de ver el mundo
Paradigma orientado a objetos
En el paradigma de la orientacin a objeto, un sistema se concibe como un conjunto de objetos que se comunican entre si mediante mensajes.
Objetos + Mensajes = Programa.
Mediante este modelo se construyen ms fcilmente sistemas complejos a partir de componentes individuales.
Qu es un Objeto?
Las personas tenemos una idea clara de lo que es un objeto: conceptos adquiridos que nos permiten sentir y razonar acerca de las cosas del mundo. Un objeto podra ser real o abstracto, por ejemplo una organizacin, una factura, una figura en un graficador, una pantalla de usuario, un avin, un vuelo de avin, una reservacin erea.
Software orientado a objetos
Dentro del software orientado a objeto, un objeto es cualquier cosa, real o abstracta, acerca de la cual almacenamos datos y los mtodos que controlan dichos datos.
Un objeto puede estar compuesto por otros objetos y estos a su vez por otros ms. Esta estructura nos permite construir objetos muy complejos.
Programacin orientada a objetos
La programacin orientada a objetos (POO) encapsula datos (atributos o propiedades) y mtodos (comportamientos o acciones) en objetos; de esta manera los datos y mtodos de un objeto estn intimamente relacionados entre s.
Clases y objetos
Una clase es una descripcin generalizada de un conjunto de objetos similares. Es la descripcin de un conjunto de objetos que comparten los mismos atributos, operaciones, relaciones y semntica. Todos los objetos son ejemplares de una clase. Un objeto es una instancia o variable de una clase. Un objeto se distingue de otros miembros de la clase por sus atributos.
Ejemplo de clases y objetos
Clase: Coche
Objeto: Ferrari
Ejemplo de objeto con sus mtodos y propiedades
Propiedades o atributos
Tipo de pantalla Espacio de memoria Cantidad de tonos Tipo de antena Cantidad de idiomas, etc. Iniciar alarma Asignar tonos Registrar llamadas Iniciar Juego Utilizar Calculadora Enviar mensajes, etc
Mtodos o comportamientos
Superclase: Telfono Clase: Telfono Celular Subclase: Telfono Celular Digital
Superclases, clases y subclases
Una clase de alto nivel puede especializarse en clases de bajo nivel. Es decir, un clase puede tener subclases. Por ejemplo, una clase Persona puede tener subclases Estudiante y Empleado. A su vez, la clase Estudiante puede tener como subclase a Estudiante de pregrado y Estudiante de postgrado, mientras que Empleado puede tener como subclase a Acadmico y Administrativo. Existe de este modo una jerarqua de clases y subclases.
Clases y subclases
Las subclases Ftbol, Rugby, PingPong son especializaciones de la clase Pelota
Clase principal
Subclases
Mtodos
Los mtodos son comportamientos o acciones, especifican la forma en que se controlan los datos de un objeto. Los mtodos en un objeto slo hacen referencia a la estructura de datos de ese objeto, no deben tener acceso directo a las estructuras de datos de otros objetos. Para utilizar la estructura de datos de otro objeto, deben enviar mensajes a ste. Desde el punto de vista de la programacin, los mtodos son funciones o procedimientos que pueden ser llamadas dentro de una clase o por otras clases.
Mensajes y mtodos
En la programacin orientada de objetos, la accin se inicia mediante la transmisin de un mensaje a un agente (un objeto) responsable de la accin. El mensaje tiene codificada la peticin de una accin y se acompaa de cualquier informacin adicional (argumentos) necesaria para llevar a cabo la peticin. El receptor es el agente al cual se enva el mensaje.
Si el receptor acepta el mensaje, acepta la responsabilidad de llevar a cabo la accin indicada.
En respuesta a un mensaje, el receptor ejecutar algn mtodo para satisfacer la peticin.
Encapsulacin
El encapsulado es el resultado de ocultar los detalles de implementacin (estado interno) de un objeto respecto de su usuario. El empaque conjunto de datos y mtodos se llama encapsulacin. El objeto esconde (protege) sus datos de los dems objetos y permite el acceso a los datos mediante sus propios mtodos. Esto recibe el nombre de ocultamiento de informacin y evita la corrupcin de los datos de un objeto. Esto facilita el cambio (de implementacin), mejora la modularidad.
Herencia
La herencia es un mecanismo que permite la definicin de una clase a partir de la definicin de otra ya existente. Es la caracterstica clave de los sistemas orientados a objeto para propiciar la reusabilidad. Una subclase puede heredar la estructura de datos y los mtodos, o algunos mtodos, de su superclase. Tambin puede tener mtodos y tipos de datos propios.
Herencia
Una clase puede tener sus propios mtodos y estructura de datos, as como tambin heredarlos de su superclase.
Para modelar las relaciones de herencia
Dado un conjunto de clases, hay que buscar atributos y operaciones comunes a dos o ms clases y elevar a una clase ms general. Indicar que las clases ms especficas heredan de la clase ms general a travs de una relacin de generalizacin desde cada clase especializada a su padre.
Polimorfismo
Polimorfismo se aplica a mtodos que adoptan varias formas de implementacin segn el tipo de objeto, pero cumple siempre el mismo objetivo. Los mtodos son polimrficos si se aplican a objetos de distintas clases para conseguir el mismo significado semntico. Por ejemplo, lanzar puede ser implementado tanto para un objeto Tenis como para el objeto Bisbol o Ftbol. Una de las ventajas del polimorfismo es que se puede hacer una solicitud de una operacin sin conocer el mtodo que ser llamado, es decir, existe un enlace tardo entre el mensaje y el mtodo.
Mtodo rea, en una clase Figura, y subclases Cuadrado y Rectngulo.
Abstraccin
Es el conocimiento que se tiene de una cosa prescindiendo de las dems que estn con ella. La abstraccin localiza y oculta los detalles de un modelo o diseo para generar y manipular objetos. Conocemos un objeto vindolo, sabemos qu es sin necesidad de ver su interior, su implementacin o su forma de construccin.
Tipos de datos abstractos
Los tipos de datos abstractos (TDA) permiten describir una estructura de datos en funcin a las operaciones que pueden efectuar, dejando a un lado su implementacin. Los TDA mezclan estructuras de datos junto a una serie de operaciones de manipulacin. Incluyen una interfaz pblica, que es lo que ver el usuario, y una implementacin (algoritmos de operaciones sobre las estructuras de datos y su representacin en un lenguaje de programacin), que el usuario no tiene necesariamente que conocer para manipular correctamente los tipos de datos abstractos. Los objetos estn representados por medio de los TDA y se caracterizan por el encapsulamiento.
Consejos Prcticos para la Abstraccin
Identificar los objetos principales. Definir propiedades y mtodos principales de cada objeto. Clasificar los objetos segn sus semejanzas/diferencias. Establecer cmo se relacionan entre s, cmo se comunican (eventos)..
Clases Abstractas
Una clase abstracta es una descripcin incompleta de un objeto. Un conjunto de operaciones y atributos que por s solos no describen nada. Las clases abstractas no pueden ser instanciadas, no es posible crear objetos o variables (no se puede usar new). Creadas por generalizacin, tienen caractersticas comunes, pero no completas. Son utilizadas para definir operaciones comunes y aplicar polimorfismo.
Interfaces
Coleccin de operaciones que se utiliza para especificar un servicio de una clase. Se trata de declarar mtodos abstractos y constantes que posteriormente puedan ser implementados de diferentes maneras segn las necesidades de un programa. Una interface sirve para establecer un 'protocolo' entre clases. Un interface se implementa (implements) no se extiende (extends) por sus subclases. Una clase puede implementar ms de un interfaz en Java, pero slo puede extender una clase.
Resumen de conceptos de POO
Un programa orientado a objetos es un conjunto de clases que describe el comportamiento de los objetos del sistema Los objetos se comunican mediante mensajes Cada objeto tiene su propio estado, que consta de otros objetos Cada objeto es un ejemplar de una clase (agrupacin de objetos) Todos los objetos que son ejemplares de una misma clase pueden realizar las mismas acciones Las clases estn organizadas en una jerarqua de herencia
Polimorfismo
Abstraccin Estructura de grandes programas
Conceptos bsicos sobre programacin orientada a objetos
Herencia
Encapsulacin
Clases
son
Tipos de datos abstractos
Instancias de
Objetos
tienen
Propiedades
Mtodos
Bibliografa
Timothy Budd. Introduccin a la Programacin orientada a objetos. Wilmington: Addison-Wesley Iberoamericana, 1994.
Angel Morales y Francisco Segovia. Programacin orientada a objetos, Aplicaciones con Smalltalk. Madrid: Ed. Paraninfo, 1993. H. Deitel y P. Deitel. Cmo programar en JAVA. Mxico: Prentice Hall, 1998. Weiss, Mark Allen. Estructura de datos: compatible con Java 2 / Mark Allen Weiss. Madrid : Addison Wesley, 2000. 776 p. Bertrand Meyer. Construccin de software orientado a objetos. 2a. ed. Madrid: Prentice Hall, 1998. James Martin y James Odell. Anlisis y diseo orientado a objetos. Mxico: Prentice Hall, 1992.
Bibliografa (Internet)
Anlisis de la estructura de un objeto http://www.inf.udec.cl/~mvaras/estprog/cap42.html Anlisis del comportamiento de un objeto http://www.inf.udec.cl/~mvaras/estprog/cap43.html
Conceptos bsicos de Objetos http://www.inf.udec.cl/~mvaras/estprog/cap41.html
Tutorial de java http://members.es.tripod.de/froufe/index.html Ingeniera de software orientada a objeto http://www.monografias.com/trabajos10/soft/soft OO.shtml Programacin Orientada a Objetos http://www.desarrolloweb.com/articulos/499.php