martes, 5 de julio de 2016

"OBJETO"



En el paradigma de programación orientada a objetos (POO, o bien OOP en inglés), un objeto es una unidad dentro de un programa de computadora que consta de un estado y de un comportamiento, que a su vez constan respectivamente de datos almacenados y de tareas realizables durante el tiempo de ejecución. Un objeto puede ser creado instanciando una clase, como ocurre en la programación orientada a objetos, o mediante escritura directa de código y la replicación otros objetos, como ocurre en la programación basada en prototipos.

Estos objetos interactúan unos con otros, en contraposición a la visión tradicional en la cual un programa es una colección de subrutinas (funciones o procedimientos), o simplemente una lista de instrucciones para el computador. Cada objeto es capaz de recibir mensajes, procesar datos y enviar mensajes a otros objetos de manera similar a un servicio.

En el mundo de la programación orientada a objetos (POO), un objeto es el resultado de la instanciación de una clase.1 Una clase es el anteproyecto que ofrece la funcionalidad en ella definida, pero ésta queda implementada sólo al crear una instancia de la clase, en la forma de un objeto. Por ejemplo: dado un plano para construir sillas (una clase de nombre clase_silla), entonces una silla concreta, en la que podemos sentarnos, construida a partir de este plano, sería un objeto de clase_silla. Es posible crear (construir) múltiples objetos (sillas) utilizando la definición de la clase (plano) anterior. Los conceptos de clase y objetos son análogos a los de tipo de datos y variable; es decir, definida una clase podemos crear objetos de esa clase, igual que disponiendo de un determinado tipo de dato (por ejemplo el tipo entero), 



podemos definir variables de dicho tipo:


int a,b;
( 'int' es un tipo de dato y 'a' y 'b' son variables de tipo entero con las que podemos operar)

Para utilizar la funcionalidad definida en una clase en particular (salvo en las clases abstractas), primeramente es necesario crear un objeto de esa clase. De la misma manera, para una persona que desea sentarse, las especificaciones para construir una silla serán de poca utilidad; lo que se necesita es una silla real construida a partir de esas especificaciones. Siguiendo con la analogía anterior, también se puede decir que para hacer operaciones aritméticas, de nada sirve por sí solo el tipo entero (int); para ello necesitamos variables (o constantes) con las que operar. Un objeto en POO representa alguna entidad de la vida real, es decir, alguno de los objetos que pertenecen al negocio con que estamos trabajando o al problema con el que nos estamos enfrentando, y con los que podemos interactuar. A través del estudio de ellos se adquiere el conocimiento necesario para, mediante la abstracción y la generalización, agruparlos según sus características en conjuntos. Estos conjuntos determinan las clases de objetos con las que estamos trabajando. Primero existen los objetos; luego aparecen las clases en función de la solución que estemos buscando. Ésta es la forma más común de adquirir conocimiento aunque no es la única. En ocasiones, cuando el observador es un experto del negocio (o del problema), el proceso puede ser a la inversa y comenzar el análisis en una base teórica abstracta, sustentada por el conocimiento previo que da lugar primeramente a clases de objetos que satisfagan las necesidades de la solución.

 
Estos conceptos son parte de la base teórica de la idea de objeto y clase utilizados en la POO. Los objetos tienen características fundamentales que nos permiten conocerlos mediante la observación, identificación y el estudio posterior de su comportamiento; estas características son:


Identidad
Comportamiento
Estado


En las ramas de las ciencias de la computación más estrictamente matemáticas, el término objeto es usado en sentido puramente matemático para referirse a cualquier "cosa". Esta interpretación resulta útil para discutir sobre teorías abstractas, pero no es suficientemente concreta para servir como definición de un tipo primitivo en discusiones de ramas más específicas, como en la programación, que está más cerca de cálculos reales y el procesamiento de información.

Identidad

La identidad es la propiedad que permite diferenciar a un objeto y distinguirse de otros. Generalmente esta propiedad es tal, que da nombre al objeto. Tomemos por ejemplo el "verde" como un objeto concreto de una clase color; la propiedad que da identidad única a este objeto es precisamente su "color" verde. Tanto es así que para nosotros no tiene sentido usar otro nombre para el objeto que no sea el valor de la propiedad que lo identifica.

En programación la identidad de los objetos sirve para comparar si dos objetos son iguales o no. No es raro encontrar que en muchos lenguajes de programación la identidad de un objeto esté determinada por la dirección de memoria de la computadora en la que se encuentra el objeto, pero este comportamiento puede ser variado redefiniendo la identidad del objeto a otra propiedad. 

Comportamiento

El comportamiento de un objeto está directamente relacionado con su funcionalidad y determina las operaciones que este puede realizar o a las que puede responder ante mensajes enviados por otros objetos. La funcionalidad de un objeto está determinada, primariamente, por su responsabilidad. Una de las ventajas fundamentales de la POO es la reusabilidad del código; un objeto es más fácil de reutilizarse en tanto su responsabilidad sea mejor definida y más concreta.

Una tarea fundamental a la hora de diseñar una aplicación informática es definir el comportamiento que tendrán los objetos de las clases involucradas en la aplicación, asociando la funcionalidad requerida por la aplicación a las clases adecuadas.

Estado

El estado de un objeto se refiere al conjunto de atributos y sus valores en un instante de tiempo dado. El comportamiento de un objeto puede modificar el estado de este. Cuando una operación de un objeto modifica su estado se dice que esta tiene "efecto colateral".

Esto tiene especial importancia en aplicaciones que crean varios hilos de ejecución. Si un objeto es compartido por varios hilos y en el transcurso de sus operaciones estas modifican el estado del objeto, es posible que se deriven errores del hecho de que alguno de los hilos asuma que el estado del objeto no cambiará (Véase Condición de carrera).

Relaciones entre objetos

Como ya se ha dicho antes, un sistema orientado a objetos está caracterizado por objetos que interactúan entre sí. Estas interacciones suponen ciertos tipos de relaciones entre los objetos del sistema. La semántica que expresa un objeto en el sistema está determinada, en primer lugar, por las relaciones que éste establece con otros objetos o conjuntos de objetos. Tomemos como ejemplo un objeto fecha, del que sin establecer ningún tipo de relación, podría decirse que significa un día del año particular. Pero si relacionamos ese objeto fecha con un objeto Persona de manera que represente la fecha en que esa persona nació, en ese contexto dado, el mismo objeto fecha adoptaría un significado diferente, el de un cumpleaños; aunque sigue siendo una fecha, ahora tiene otra idea asociada. Las relaciones entre objetos no solo están definidas por los objetos que participan y la circunstancia que los relaciona, sino también por la cantidad de objetos (cardinalidad de la relación) y la dirección de la misma. Una relación puede tener cardinalidad:

uno a uno, ejemplo: un auto tiene un motor.
uno a muchos, ejemplo: un auto tiene muchas ruedas.
muchos a muchos, ejemplo: un auto se puede servir en muchas gasolineras y una gasolinera puede servir a muchos autos.
y direccionalidad:

unidireccional, ejemplo: un auto tiene cuatro ruedas.
bidireccional
Las relaciones entre objetos más generales son las siguientes:

 
Composición

La composición (también conocida como relación asociativa) es un tipo de relación que se establece entre dos objetos que tienen comunicación persistente. Se utiliza para expresar que un par de objetos tienen una relación de dependencia para llevar a cabo su función, de modo que uno de los objetos involucrados está compuesto por el otro.

De manera práctica, es posible reconocer asociatividad entre dos objetos A y B si la proposición "A tiene un B" (o viceversa) es verdadera. Por ejemplo: "una computador tiene un disco duro" es verdadero; por tanto, un objeto computador tiene una relación de composición con al menos un objeto disco duro.

Uso

Un objeto usa (conoce) a otro cuando puede enviarle mensajes, por ejemplo, para requerir de este algún servicio. La composición puede verse como un caso particular de esta relación.

Delegación

En ocasiones, para lograr flexibilidad de diseño, un objeto es implementado de forma tal que este delegue parte de su funcionalidad en otro objeto. Esto es muy común en aplicaciones que hacen uso de interfaces gráficas de usuario, en las que los controles gráficos generales delegan la acción que se ejecutará ante determinado estímulo en otro objeto. Operando con un objeto[editar]
Una vez que tenemos un objeto de 'Aritmetica', podemos usarlo para realizar cálculos sobre dos números. En C++ contamos con dos objetos de ejemplo: "calculador" y "calculador1"; en esta última variable en realidad hemos almacenado la dirección de memoria del objeto creado. En este lenguaje esto sienta diferencias a la hora de utilizar el objeto.

Para calcular la suma entre 78 y 69 usando un objeto "calculador" necesitaríamos un código como el siguiente en C++:


int resultado = 0;
resultado = calculador.sumar(78, 69);
#Otra manera usando punteros
resultado = calculador1->sumar(78, 69);
ahora usando Python para sumar dos números con el objeto calculador:

resultado = calculador.sumar(78, 69)



Otro ejemplo del mundo real de un objeto podría ser "mi perro", el cual es una instancia de un tipo (una clase) llamada "perro", la que es una subclase de la clase "animal". En el caso de un objeto polimórfico, algunos detalles de su tipo pueden ser ignorados; por ejemplo, el objeto "mi perro" puede ser usado en un método que espera recibir un "animal". También podría usarse un objeto "gato", puesto que esta también pertenece a la clase "animal". Pero mientras es accedido como un "animal", algunos atributos de un "perro" o un "gato" permanecerán no disponibles, como la "cola", porque no todos los animales tienen cola. 


"OBJETO"Explicacion..



No hay comentarios.:

Publicar un comentario