Académique Documents
Professionnel Documents
Culture Documents
Concepto de Objeto
Si miramos a nuestro alrededor casi todo puede ser considerado un objeto. El dinero, un helicptero, una bicicleta, un coche. Los objetos representan cosas, simples o complejas, reales o imaginarias. Una antena parablica es un objeto complejo y real. Un objeto Profesor, representa los detalles y actividades de una persona, no es esa persona en s misma, es pues, imaginario. Una frase, un nmero complejo, una receta y una cuenta bancaria tambin son representaciones de cosas intangibles. Todas son objetos.
Algunas cosas no son objetos, sino atributos (valores o caractersticas de objetos), como el color, el tamao y la velocidad. Los atributos reflejan el estado de un objeto, la velocidad del objeto avin, o el tamao de un objeto edificio. Normalmente no tiene sentido considerar la velocidad como un objeto.
En trminos mas generales, un objeto es una abstraccin conceptual del mundo real que se puede traducir a la representacin de un modelo de anlisis y diseo OO o a un lenguaje computacional o de programacin OO. Los objetos tienen una funcionalidad o comportamiento definido, y se espera que siempre se comportarn de acuerdo a las especificaciones que estn definidas para ellos. Por ejemplo, el cambiador de CD nunca provocar que el coche acelere, y pisar el pedal del freno no colgar el telfono. Esta es la forma de gestionar la complejidad en la vida real, que trasladada al campo del software, funciona igual de bien. Es as que traducimos el concepto de objeto en el mundo real al de la informtica como una entidad provista de propiedades (datos, atributos) y comportamiento (funcionalidad, mtodos).
Programacin IV
Tema 2
El estado de un objeto define la situacin del mismo en un momento establecido en el tiempo. Los valores que toma un objeto se almacenan en variables internas llamadas atributos.
El comportamiento describe las acciones y reacciones de un objeto. Es la manera en que responde a mensajes o estmulos recibidos, bsicamente enviando mensajes a otros objetos, respondiendo al que le enva el mensaje o cambiando de estado. Las distintas formas de respuesta se denominan mtodos, y corresponden a procedimientos o funciones. Se dice que el comportamiento indica lo que el objeto sabe hacer.
La identidad es lo que diferencia a un objeto de todos los otros del mismo tipo. Hablando en trminos computacionales, la identidad del objeto se puede interpretar como la referencia, es decir los valores concretos que toma un objeto. Dos objetos son distintos incluso an en el caso de que los valores de todos sus atributos (p. ej. nombre y tamao) coincidan. Dos manzanas pueden ser totalmente idnticas pero no por eso pierden su identidad: nos podemos comer una u otra. Los atributos y los mtodos son las propiedades que dan estructura al objeto. Atributos: todo objeto puede tener cierto nmero de atributos. En POO los atributos corresponden a las clsicas "variables" de la programacin estructurada. Los atributos de un objeto pueden tener un valor nico o pueden contener un conjunto de valores ms o menos estructurados (matrices, vectores, listas, etc.). Adems, los valores pueden ser de cualquier tipo (numrico, alfabtico, etc.), o pueden a su vez ser objetos. Sin embargo, existe una diferencia con las "variables", y es que los atributos se pueden heredar de unos objetos a otros. En consecuencia, un objeto puede tener un atributo de maneras diferentes: o Atributos propios: estn creados dentro de la cpsula del objeto. o Atributos heredados: estn definidos en un objeto diferente, antepasado de ste (padre, abuelo, etc.). A veces estos atributos se llaman atributos o variables miembro, porque el objeto las posee por el mero hecho de ser miembro de una clase.
Mtodos: Los mtodos especifican la forma en que se manipulan y controlan los datos de un objeto. Los mtodos en un tipo de objeto slo hacen referencia a la estructura de datos de ese tipo de 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 un mensaje a ste.
Ejemplo: un mtodo asociado con el tipo de objeto factura podra ser aquel que calcule el total de la factura. Otro podra transmitir la factura a un cliente. Otro podra verificar de manera peridica si la factura ha sido pagada y, en caso contrario, aadir cierta tasa de inters. El mtodo es una operacin que realiza el acceso a los datos. Podemos definir mtodo como un programa procedimental o procedural escrito en cualquier lenguaje, que est asociado a un objeto determinado y cuya ejecucin slo puede desencadenarse a travs de un mensaje recibido por ste o por sus descendientes. Son sinnimos de 'mtodo' todos aquellos trminos que se han aplicado tradicionalmente a los programas, como procedimiento, funcin, rutina, etc. Sin embargo, es conveniente utilizar el trmino 'mtodo' para que se distingan claramente las propiedades especiales que adquiere un programa en el entorno POO, que afectan fundamentalmente a la forma de invocarlo (nicamente a travs de un mensaje) y a su campo de accin, limitado a un objeto y a sus descendientes.
Objeto y encapsulacin
Un objeto es una unidad que combina datos (atributos) y las operaciones (mtodos) que operan sobre esos datos. Los objetos encapsulan sus operaciones y atributos. Encapsulacin es el trmino de orientacin a objetos que describe la vinculacin de unas operaciones y estado a un objeto particular. Est ntimamente relacionada con la ocultacin de la informacin, definiendo qu partes de un objeto son visibles y qu partes estn ocultas. Esta propiedad permite asegurar que el contenido de la informacin y los detalles de implementacin de un UDT (User Data Type o Tipo de Dato definido por el Usuario1) estn ocultos al exterior. Si se desea
1
Un UDT es un tipo de dato que no est predefinido en el lenguaje utilizado. La ventaja es que el programador puede definir un tipo que se adapte a sus necesidades.
Programacin IV
Tema 2
modificar los datos de un objeto, slo pueden utilizarse las funciones definidas que interactan con el mismo. Ninguna otra funcin puede acceder a los datos. Un objeto es un TAD al que se aaden caractersticas propias de la POO como la herencia, el paso de mensajes, el polimorfismo y la ligadura dinmica. Recordemos que un TAD es un tipo de dato definido por las operaciones que se pueden llevar a cabo sobre los elementos del mismo. Es decir, los TAD engloban dos conceptos: la representacin de los datos y las operaciones permitidas sobre ellos. Por ejemplo, los tipos de datos int tienen una forma particular de representacin, y las operaciones que soporta son por ejemplo la suma, resta, divisin, etc. Mientras que el tipo de datos char tiene otro modo de representacin (por ej el ASCII de 7 bits 128 caracteres), y una operacin por ejemplo puede ser concatenar. Los objetos tienen una interfaz pblica, que es la que indica su funcionalidad (qu estn dispuestos a hacer), y una representacin privada, que es la implementacin (cmo lo hacen). Esto permite ocultar la informacin que se desee al exterior. Haciendo una analoga con la industria automotriz, quien provee a una fbrica de automviles los equipos de audio, no suelen especificar cmo estn construidos los mismos. Slo deben asegurar una serie de conectores o interfaces que permiten su instalacin y una serie de caractersticas y funcionalidades a prestar. De este modo, el fabricante del equipo de audio puede realizar cambios en los circuitos internos sin necesidad de que el fabricante de autos deba modificar nada si se respetan las interfaces y las funcionalidades a prestar. Esto se logra porque el equipo de audio, desde el punto de vista de la fbrica de automviles, es una caja negra, que se testea cerrada, teniendo en cuenta solamente que cumpla con las prestaciones establecidas por un contrato, y que tenga las interfaces necesarias para conectarlo. Trasladando este concepto a la industria del software, se evita que el cliente pueda manipular los datos y las implementaciones de los mtodos en los objetos. Esto implica que se pueden usar las interfaces de los tipos de datos definidos por el programador, pero no la implementacin. De este modo, la interfaz se convierte en una especie de contrato entre las partes, que debe ser respetado. El ocultamiento implica separar el qu del cmo. Es decir, el cliente debe conocer qu hace el mdulo, pero no cmo lo hace. Las ventajas del ocultamiento son: permite cambios de implementacin impide violaciones de restricciones entre datos internos
Interfaces
La encapsulacin abarca la ocultacin de la informacin: Algunas partes son visibles (el interfaz pblico) Otras partes son ocultas (o privadas) Estas partes pblicas y privadas a menudo son llamadas miembros.
Miembros Pblicos: Los miembros pblicos (interfaz o mtodos) de una clase describen qu es lo que pueden hacer los objetos de esa clase. Miembros Privados: Los miembros privados de una clase describen la implementacin, el cmo lo hace.
En sistemas orientados a objeto puros, todo el estado es privado y slo se puede acceder a travs de operaciones del interfaz pblico. Por ejemplo, un mtodo frenar puede cambiar el estado del atributo velocidad. La ventaja de la ocultacin de los detalles de implementacin es que el objeto puede cambiar, y el interfaz pblico proporcionado ser compatible con el original. Entonces los programas que utilizaban el objeto pueden seguir funcionando sin alteracin alguna. Esto es extremadamente til al modificar cdigo, ya que se restringe la propagacin de cambios. Tambin se fomenta la reusabilidad, ya que el cdigo puede ser utilizado como una tecnologa de caja negra
Programacin IV
Tema 2
(como los circuitos integrados en la industria electrnica). Desde el punto de vista econmico, esto representa una ventaja de indudable valor.
Los objetos pueden ser muy complejos, puesto que pueden contener muchos sub-objetos, stos a su vez pueden contener otros, etc. Sin embargo, gracias a la propiedad de encapsulacin, la persona que utilice un objeto no necesita conocer su complejidad interna, sino la forma de comunicarse con l y la forma en que responde.
Concepto de Clase
Una clase es una descripcin de un conjunto de objetos (o tipo de objeto) con caractersticas comunes. Es una abstraccin que describe un grupo de instancias con propiedades (atributos) comunes, comportamiento (operaciones) comn, relaciones comunes con otros objetos y (lo que es ms importante) una semntica comn. As un caballo y un establo tienen los dos un costo y una edad, pero no es probable que pertenezcan a la misma clase. La agrupacin o clasificacin tiene que tener sentido para el problema en cuestin. Por ejemplo, una clase Transporte puede incluir objetos tren, objetos coche o incluso, objetos caballo. El hecho de que esos objetos funcionen de forma diferente es irrelevante para el problema que se intenta resolver. Si Transporte slo se preocupa del traslado de un sitio a otro, la implementacin subyacente no importa.
Programacin IV
Tema 2
Una clase es similar a los tipos de datos de la programacin estructurada. La definicin de una clase no crea ningn objeto, de igual modo que una declaracin de variables, tampoco crea variables. Son modelos o plantillas que describen cmo se construyen ciertos tipos de objetos. Tambin se puede ver una clase como un molde, esquema, o un patrn que define la forma de sus objetos. O bien, como la estructura esttica que define qu esquema de estado y comportamiento van a tener los objetos y, a partir de ese esquema, dinmicamente durante la ejecucin de un programa, se van a ir creando objetos que pertenezcan a esa clase. Las Clases son entidades conceptuales que sirven para abstraer y modelar un Sistema. Los problemas se pueden modelar en los trminos especficos del dominio. Precisamente, una de las ventajas de la aproximacin orientada a objetos es que permite que el problema sea representado en trminos especficos del dominio. Esto permite a los diseadores construir modelos que se proyectan directamente en el problema de la aplicacin. Ejemplos: Sistema escuela Clase Libro Clase Pizarra Clase Tiza Clase Diploma Clase Borrador Sistema Administracin de hotel Clase Conserje Clase Habitacin Clase Cliente Clase Botones Clase Mucama La ventaja de crear modelos cercanos al dominio es que son fciles de comprender, hay menor probabilidad de cometer errores y descuidos, y los modelos pueden ser verificados por los usuarios que definen los requisitos.
Programacin IV
Tema 2
objeto 1
objeto 2
objeto 3
El smbolo grfico para representar clases es un rectngulo, en el que figura el nombre de la clase, comenzando siempre en mayscula. Las clases se representan en los diagramas de clases, que son plantillas que describen un sistema. El Lenguaje de Modelado Unificado (UML) es en la actualidad el esquema de representacin grfica ms utilizado para modelar sistemas orientados a objetos. Fue desarrollado en forma conjunta por Booch, Jacobson y Rumbaugh, tres de los metodologistas ms reconocidos en el desarrollo del A/DOO. El UML es el estndar propuesto por el OMG (Object Management Group), organizacin internacional sin fines de lucro que promueve el uso de la TOO. La notacin UML para clases es la siguiente:
Nombre-clase Nombre-atributo-1: tipo-dato-1 Nombre-atributo-2: tipo-dato-2 ... Nombre-operacin1 (argumento): Nombre-operacin2 (argumento):
Los atributos se representan en el segundo rea de los smbolos de clase. Figurar el nombre del atributo, el tipo y el valor por defecto, si lo tuviera. En la tercer rea se detallan las operaciones o mtodos de la clase.
Programacin IV
Tema 2
Encapsulacin Visibilidad
La encapsulacin u ocultacin de la informacin se implementa en los lenguajes OO a travs de la visibilidad o acceso a las variables miembro o atributos. La visibilidad es precisamente la propiedad que define si un atributo u operacin de un objeto es visible desde fuera del propio objeto. Los lenguajes generalmente proporcionan tres niveles de visibilidad: public, protected y private. Las caractersticas pblicas (public) son accesibles a cualquier usuario de la clase. Constituyen la interfaz de la clase. Pueden ser funciones y atributos. Los miembros dato (atributos) nunca deberan serlo. Las caractersticas protegidas (protected) estn ocultas al mundo exterior pero son accesibles a la clase que los contiene y a cualquier clase derivada de la misma. Es un status mixto entre public y private. Las caractersticas privadas (private) slo son accesibles desde las funciones de la propia clase. class nombre_clase { //miembros privados private tipo atributo-1; private tipo atributo-2; //miembros pblicos public tipo-retorno metodo-1(){} public tipo-retorno metodo-2(){}
Programacin IV
Tema 2
Constructores
Los objetos son entidades que existen en el tiempo; por ello, deben ser creados o instanciados. Un objeto (entidad real) se crea a partir de la definicin de la clase (molde) a la que pertenece. Esta operacin se hace a travs de operaciones especiales llamadas constructores en Java o inicializadores. Pueden existir varios constructores (varias formas diferentes de crear objetos a partir de una clase). En java los constructores son mtodos especiales que deben tener siempre el mismo nombre de la clase, y no tienen ningn tipo de retorno. La instanciacin la ejecutar implcitamente el compilador o explcitamente el programador, mediante la invocacin a los constructores. Cuando se crea una instancia de una clase, se llama automticamente al constructor de la misma. El propsito de un constructor es inicializar los miembros dato del objeto de la clase cuando se crea el objeto. En Java se realiza mediante el operador new.
Programacin IV
Tema 2
Programacin IV
Abstraccin de datos: un coche tiene las siguientes caractersticas o atributos: Color Velocidad Tamao Carburante
Tema 2
La manera en que se almacenan o definen esos atributos, tambin es irrelevante para el diseo del objeto. Por ejemplo, el color puede definirse como la palabra rojo, o como un vector RGB (255,0,0). La forma en que el objeto almacena el atributo color es irrelevante para el programador. Este proceso de despreocupacin de cmo se almacena el color es lo que se llama abstraccin de datos. 2) ENCAPSULAMIENTO Principio por el cual se modelan al mismo tiempo y de forma inseparable mtodos y datos. El objeto esconde 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. La Interface representa la frontera y el lugar de paso en la comunicacin del objeto con el mundo exterior. Ante la activacin de ciertos Eventos tan solo se podrn consultar y modificar los Datos almacenados en los Atributos exclusivamente a travs de las Funciones que determinen los Mtodos correspondientes al Objeto en cuestin.
El encapsulamiento evita la corrupcin de los datos de un objeto. Si todos los programas pudieran tener acceso a los datos de cualquier forma que quisieran los usuarios, los datos se podran corromper o utilizar de mala manera. El encapsulado protege los datos del uso arbitrario y no pretendido. El encapsulado oculta los detalles de su implantacin interna a los usuarios de un objeto. Los usuarios se dan cuenta de las operaciones que puede solicitar del objeto, pero desconocen los detalles de cmo se lleva a cabo la operacin. Todos los detalles especficos de los datos del objeto y la codificacin de sus operaciones estn fuera del alcance del usuario. Esto no quiere decir, sin embargo, que sea imposible conocer lo necesario respecto a un objeto y a lo que contiene. Si as fuera no se podra hacer gran cosa con l. Lo que sucede es que las peticiones de informacin a un objeto deben realizarse a travs de mensajes dirigidos a l, con la orden de realizar la operacin pertinente. La respuesta a estas rdenes ser la informacin requerida, siempre que el objeto considere que quien enva el mensaje est autorizado para obtenerla. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstraccin. El encapsulado, al separar el comportamiento del objeto de su implantacin, permite la modificacin de sta sin que se tengan que modificar las aplicaciones que lo utilizan. 3) MODULARIDAD Es una propiedad que permite subdividir una aplicacin en partes ms pequeas (llamadas mdulos), cada una las cuales debe ser tan independiente como sea posible de la aplicacin en s y de las restantes partes. Consiste en dividir un programa en mdulos que se pueden compilar por separado, pero que tienen conexiones con otros mdulos.
10
Programacin IV
Tema 2
La Modularidad es una particin funcional de todo el sistema. Cada mdulo o parte del sistema debe contar tanto con una funcionalidad clara y relativamente sencilla como con una facilidad de combinarse con otros mdulos. Condicionantes tales como limitacin de memoria o dadas por compiladores o lenguajes particulares inducen a la modularidad, pero el principio en la Tecnologa Orientada a Objetos es dividir funcionalmente buscando la interrelacin ms rica entre mdulos. A los mdulos se le ha llamado tambin paquetes unidades. Una divisin temtica de los mdulos es una manera muy conveniente de equilibrar la modularizacin, de esta manera, un mdulo puede ser el de los clculos numricos mientras que otro, el de las operaciones con cadenas, o bien: un mdulo puede ser el de las variables generales y de arranque y configuracin de un sistema, un segundo mdulo alojar las clases primitivas, de las cuales se derivarn siempre para su uso otras clases y un tercer mdulo tendr las clases que usan a las primitivas. La modularidad es una de las medidas de calidad en programacin. Puede llevar a que el programador tarde ms en terminar un programa, sin embargo, el beneficio es que permite que el mantenimiento del programa sea mucho ms simple. 4) JERARQUIA Es la propiedad que permite una ordenacin de las abstracciones. Las dos jerarquas destacadas de un sistema complejo son: generalizacin/especializacin (herencia) y agregacin. Herencia: Permite a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que reimplementar su comportamiento. Esto suele hacerse habitualmente agrupando los objetos en clases y las clases en rboles o enrejados que reflejan un comportamiento comn. Esta propiedad organiza y facilita el polimorfismo y la encapsulacin. Se da cuando un objeto de una clase es un objeto de otra clase tambin. Agregacin: A veces se desea modelar una relacin de tipo "todo/parte", en la cual una clase representa algo grande (el todo), que consta de elementos ms pequeos (las partes). Este tipo de relacin se denomina agregacin, y es una relacin "tiene-un". 5) POLIMORFISMO Una de las caractersticas fundamentales de la POO es el polimorfismo, que no es otra cosa que la posibilidad de construir varios mtodos con el mismo nombre, pero con relacin a la clase a la que pertenece cada uno, con comportamientos diferentes. Esto conlleva la habilidad de enviar un mismo mensaje a objetos de clases diferentes. Estos objetos recibiran el mismo mensaje global pero responderan a l de formas diferentes; por ejemplo, un mensaje "+" a un objeto ENTERO significara suma, mientras que para un objeto STRING significara concatenacin ("pegar" strings uno seguido al otro) Por ejemplo, un arreglo de objetos pueden contener objetos de diferentes tipos, y la invocacin de un comportamiento en una referencia producir el comportamiento correcto para el tipo real del referente.
11