fbpx
Wikipedia

Objeto (programación)

En el paradigma de programación orientada a objetos (POO, o bien OOP en inglés), un objeto es un ente orientado a objetos (programa de computadoras) 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 de 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 solo 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.

Definición de objeto

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 identificación 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 todos 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

Representación en las computadoras

Los objetos, aunque son entidades conceptuales, dado el diseño de las computadoras, se corresponde directamente con bloques de memoria de tamaño y localización específicos. Esto ocurre porque los cálculos y el procesamiento de la información en última instancia requieren de una representación en la memoria de la computadora. En este sentido, los objetos son primitivas fundamentales necesarias para definir de forma precisa conceptos como referencias, variables y vinculación de nombres. En ciencias de la computación se utiliza cotidianamente la interpretación más concreta de objeto en lugar de las más abstractas sin que esto sea considerado un error.

Es preciso hacer notar que aunque un bloque de memoria puede aparecer contiguo en un nivel de abstracción y no contiguo en otro, lo importante es que este aparece contiguo para el programa, quien lo trata como un objeto. Por este motivo, los detalles de implementación privados de un modelo de objetos no deben ser expuestos al cliente del objeto, y estos pueden ser cambiados sin que se requieran cambios al código cliente.

Los objetos en la computadora existen entonces, solo dentro de contextos capaces de reconocerlos; un espacio de memoria solo contiene un objeto si un programa lo trata como tal (por ejemplo, reservándolo para uso exclusivo de un procedimiento específico y/o asociándole un tipo de dato). Así, el tiempo de vida de un objeto es el tiempo durante el cual este es tratado como un objeto. Es por esto que los objetos son entidades conceptuales, a pesar de su presencia física en la memoria de la computadora.

En otras palabras, los conceptos abstractos que no ocupen espacio de memoria en tiempo de ejecución, no son, de acuerdo con esta definición, objetos. Ejemplos de estos conceptos son: patrones de diseño exhibidos por un conjunto de clases y tipos de datos en lenguajes de programación que utilizan tipos estáticos.

Se llama objeto fantasma a un objeto que no es referenciado en un programa, y que por tanto no sirve a ningún propósito. En un lenguaje que posea un recolector de basura, este marcará la memoria ocupada por el objeto como libre, aunque ésta todavía contendrá los datos del objeto hasta el momento en que sea reescrita.

Objetos en la programación orientada a objetos

En programación orientada a objetos (POO), una instancia de programa (por ejemplo un programa ejecutándose en una computadora) es tratada como un conjunto dinámico de objetos interactuando entre sí. Los objetos en la POO extienden la noción más general descrita en secciones anteriores para modelar un tipo muy específico que está definido fundamentalmente por:

  1. atributos, que representan los datos asociados al objeto, o, lo que es lo mismo, sus propiedades o características. Los atributos y sus valores en un momento dado, determinan el estado de un objeto.
  2. métodos, que acceden a los atributos de una manera predefinida e implementan el comportamiento del objeto.

Los atributos y métodos de un objeto están definidos por su clase, aunque (en un lenguaje dinámico como Python o Ruby) una instancia puede poseer atributos que no fueron definidos en su clase. Algo similar ocurre con los métodos: una instancia puede contener métodos que no estén definidos en su clase de la misma manera que una clase puede declarar ciertos métodos como "métodos de clase", y estos (en dependencia del lenguaje) podrán estar o no presentes en la instancia.

En el caso de la mayoría de los objetos, los atributos solo pueden ser accedidos a través de los métodos; de esta manera es más fácil garantizar que los datos permanecerán siempre en un estado bien definido (invariante de clase).

En un lenguaje en el que cada objeto es creado a partir de una clase, un objeto es llamado una instancia de esa clase. Cada objeto pertenece a un tipo y dos objetos que pertenezcan a la misma clase tendrán el mismo tipo de dato. Crear una instancia de una clase es entonces referido como instanciar la clase.

En casi todos los lenguajes de programación orientados a objeto, el operador "punto" (.) es usado para referirse o "llamar" a un método particular de un objeto. Un ejemplo de lenguaje que no siempre usa este operador es C++, ya que para referirse a los métodos de un objeto a través de un puntero al objeto se utiliza el operador (->).

Considérese como ejemplo una clase aritmética llamada Aritmética. Esta clase contiene métodos como "sumar", "restar", "multiplicar", "dividir", etc. que calculan el resultado de realizar estas operaciones sobre dos números.

Un objeto de esta clase puede ser utilizado para calcular el producto de dos números, pero primeramente sería necesario definir dicha clase y crear un objeto. En las secciones a continuación se muestra cómo hacer esto utilizando dos lenguajes de programación: C++ y Python.

Declaración de una clase

Esta clase podría ser definida de la siguiente manera en C++:

class Aritmetica {  public:  inline int sumar (int a, int b) const  {  return a + b;  }    inline int restar (int a, int b) const  {  return a - b;  }  inline float multiplicar (int a, int b) const  {  return a * b;  }  inline float dividir (int a, int b) const  {  return a / b;  } }; 

o como sigue en Python:

class Aritmetica: def sumar(self, a, b): return a + b def restar(self, a, b): return a - b def multiplicar(self, a, b): return a * b def dividir(self, a, b): return a / b 

Instanciación de una clase en un objeto

Para crear un objeto de tipo 'Aritmetica' (instanciar Aritmetica) en C++ se haría de la siguiente forma:

Aritmetica calculador = Aritmetica(); #Otra manera usando punteros Aritmetica* calculador1 = new Aritmetica(); 

la misma operación usando python sería así:

calculador = Aritmetica() 

Operando con un objeto

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.

Atributos dinámicos en objetos

Python y C++ son lenguajes con características muy diferentes. Python utiliza un sistema de tipos dinámico y C++ en cambio, uno estático o estricto. El sistema de tipos usado en Python permite al programador agregar atributos a una instancia que no han sido definidos en la clase que le dio origen, cosa que no es posible hacer en un lenguaje como C++. Por ejemplo:

La clase siguiente en Python no define ningún atributo:

class Prueba(object): pass 

pero es posible hacer lo siguiente:

1: p = Prueba() 2: p.unNumero = 3 3: print("Atributo unNumero de p = %s" % p.unNumero) 4: Atributo unNumero de p = 3 

A la instancia de p creada en la línea 1, le es asignado en la línea 2 el valor "3", lo cual crea un atributo de nombre unNumero en p de tipo "int" para almacenar el número 3.

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.

Objetos especializados

Algunos términos para tipos especializados de objetos son:

  • Singleton: un objeto del que solo puede existir una única instancia de su clase durante el tiempo de vida del programa.
  • Functor: un objeto que puede ser utilizado como una función.
  • Objeto inmutable: un objeto creado con un estado fijo y que no puede variar en el tiempo de vida del mismo.
  • Objeto de primera clase: un objeto que puede ser utilizado sin restricciones.
  • Contenedor: un objeto que contiene a otros objetos.
  • Fábrica de objetos: un objeto cuyo propósito es crear otros objetos.
  • Metaobjeto: un objeto a partir del cual se pueden crear otros objetos (comparable con una clase, la que no necesariamente es un objeto).
  • Prototipo: un metaobjeto especializado a partir del cual se pueden crear otros objetos copiándolo.
  • Objeto todopoderoso: un objeto que sabe mucho o hace mucho. Este es un ejemplo de antipatrón de diseño.
  • Antiobjeto: una metáfora computacional útil para conceptualizar y solucionar problemas complejos, usualmente con aproximaciones paralelas.

Véase también

Referencias

  1. Schildt, Helbert (2007). Java, Manual de referencia (7 edición). Mc Graw Hill. pp. 105. ISBN 0-07-226385-7. Consultado el 21 de enero de 2016. 
  •   Datos: Q216601

objeto, programación, este, artículo, sección, necesita, referencias, aparezcan, publicación, acreditada, este, aviso, puesto, junio, 2010, paradigma, programación, orientada, objetos, bien, inglés, objeto, ente, orientado, objetos, programa, computadoras, con. Este articulo o seccion necesita referencias que aparezcan en una publicacion acreditada Este aviso fue puesto el 1 de junio de 2010 En el paradigma de programacion orientada a objetos POO o bien OOP en ingles un objeto es un ente orientado a objetos programa de computadoras 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 ejecucion Un objeto puede ser creado instanciando una clase como ocurre en la programacion orientada a objetos o mediante escritura directa de codigo y la replicacion de otros objetos como ocurre en la programacion basada en prototipos Estos objetos interactuan unos con otros en contraposicion a la vision tradicional en la cual un programa es una coleccion 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 programacion orientada a objetos POO un objeto es el resultado de la instanciacion de una clase 1 Una clase es el anteproyecto que ofrece la funcionalidad en ella definida pero esta queda implementada solo 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 seria un objeto de clase silla Es posible crear construir multiples objetos sillas utilizando la definicion de la clase plano anterior Los conceptos de clase y objetos son analogos 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 seran de poca utilidad lo que se necesita es una silla real construida a partir de esas especificaciones Siguiendo con la analogia anterior tambien se puede decir que para hacer operaciones aritmeticas de nada sirve por si solo el tipo entero int para ello necesitamos variables o constantes con las que operar Indice 1 Definicion de objeto 1 1 Identidad 1 2 Comportamiento 1 3 Estado 2 Representacion en las computadoras 3 Objetos en la programacion orientada a objetos 3 1 Declaracion de una clase 3 2 Instanciacion de una clase en un objeto 3 3 Operando con un objeto 3 3 1 Atributos dinamicos en objetos 4 Relaciones entre objetos 4 1 Composicion 4 2 Uso 4 3 Delegacion 5 Objetos especializados 6 Vease tambien 7 ReferenciasDefinicion de objeto EditarUn 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 traves del estudio de ellos se adquiere el conocimiento necesario para mediante la abstraccion y la generalizacion agruparlos segun sus caracteristicas en conjuntos Estos conjuntos determinan las clases de objetos con las que estamos trabajando Primero existen los objetos luego aparecen las clases en funcion de la solucion que estemos buscando Esta es la forma mas comun de adquirir conocimiento aunque no es la unica En ocasiones cuando el observador es un experto del negocio o del problema el proceso puede ser a la inversa y comenzar el analisis en una base teorica abstracta sustentada por el conocimiento previo que da lugar primeramente a clases de objetos que satisfagan las necesidades de la solucion Estos conceptos son parte de la base teorica de la idea de objeto y clase utilizados en la POO Los objetos tienen caracteristicas fundamentales que nos permiten conocerlos mediante la observacion identificacion y el estudio posterior de su comportamiento estas caracteristicas son Identidad Comportamiento EstadoEn las ramas de las ciencias de la computacion mas estrictamente matematicas el termino objeto es usado en sentido puramente matematico para referirse a cualquier cosa Esta interpretacion resulta util para discutir sobre teorias abstractas pero no es suficientemente concreta para servir como definicion de un tipo primitivo en discusiones de ramas mas especificas como en la programacion que esta mas cerca de calculos reales y el procesamiento de informacion Identidad Editar La identificacion 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 unica a este objeto es precisamente su color verde Tanto es asi que para nosotros no tiene sentido usar otro nombre para el objeto que no sea el valor de la propiedad que lo identifica En programacion la identidad de todos los objetos sirve para comparar si dos objetos son iguales o no No es raro encontrar que en muchos lenguajes de programacion la identidad de un objeto este determinada por la direccion 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 Editar El comportamiento de un objeto esta 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 esta determinada primariamente por su responsabilidad Una de las ventajas fundamentales de la POO es la reusabilidad del codigo un objeto es mas facil de reutilizarse en tanto su responsabilidad sea mejor definida y mas concreta Una tarea fundamental a la hora de disenar una aplicacion informatica es definir el comportamiento que tendran los objetos de las clases involucradas en la aplicacion asociando la funcionalidad requerida por la aplicacion a las clases adecuadas Estado Editar 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 operacion de un objeto modifica su estado se dice que esta tiene efecto colateral Esto tiene especial importancia en aplicaciones que crean varios hilos de ejecucion 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 cambiara Vease Condicion de carreraRepresentacion en las computadoras EditarLos objetos aunque son entidades conceptuales dado el diseno de las computadoras se corresponde directamente con bloques de memoria de tamano y localizacion especificos Esto ocurre porque los calculos y el procesamiento de la informacion en ultima instancia requieren de una representacion en la memoria de la computadora En este sentido los objetos son primitivas fundamentales necesarias para definir de forma precisa conceptos como referencias variables y vinculacion de nombres En ciencias de la computacion se utiliza cotidianamente la interpretacion mas concreta de objeto en lugar de las mas abstractas sin que esto sea considerado un error Es preciso hacer notar que aunque un bloque de memoria puede aparecer contiguo en un nivel de abstraccion y no contiguo en otro lo importante es que este aparece contiguo para el programa quien lo trata como un objeto Por este motivo los detalles de implementacion privados de un modelo de objetos no deben ser expuestos al cliente del objeto y estos pueden ser cambiados sin que se requieran cambios al codigo cliente Los objetos en la computadora existen entonces solo dentro de contextos capaces de reconocerlos un espacio de memoria solo contiene un objeto si un programa lo trata como tal por ejemplo reservandolo para uso exclusivo de un procedimiento especifico y o asociandole un tipo de dato Asi el tiempo de vida de un objeto es el tiempo durante el cual este es tratado como un objeto Es por esto que los objetos son entidades conceptuales a pesar de su presencia fisica en la memoria de la computadora En otras palabras los conceptos abstractos que no ocupen espacio de memoria en tiempo de ejecucion no son de acuerdo con esta definicion objetos Ejemplos de estos conceptos son patrones de diseno exhibidos por un conjunto de clases y tipos de datos en lenguajes de programacion que utilizan tipos estaticos Se llama objeto fantasma a un objeto que no es referenciado en un programa y que por tanto no sirve a ningun proposito En un lenguaje que posea un recolector de basura este marcara la memoria ocupada por el objeto como libre aunque esta todavia contendra los datos del objeto hasta el momento en que sea reescrita Objetos en la programacion orientada a objetos EditarEn programacion orientada a objetos POO una instancia de programa por ejemplo un programa ejecutandose en una computadora es tratada como un conjunto dinamico de objetos interactuando entre si Los objetos en la POO extienden la nocion mas general descrita en secciones anteriores para modelar un tipo muy especifico que esta definido fundamentalmente por atributos que representan los datos asociados al objeto o lo que es lo mismo sus propiedades o caracteristicas Los atributos y sus valores en un momento dado determinan el estado de un objeto metodos que acceden a los atributos de una manera predefinida e implementan el comportamiento del objeto Los atributos y metodos de un objeto estan definidos por su clase aunque en un lenguaje dinamico como Python o Ruby una instancia puede poseer atributos que no fueron definidos en su clase Algo similar ocurre con los metodos una instancia puede contener metodos que no esten definidos en su clase de la misma manera que una clase puede declarar ciertos metodos como metodos de clase y estos en dependencia del lenguaje podran estar o no presentes en la instancia En el caso de la mayoria de los objetos los atributos solo pueden ser accedidos a traves de los metodos de esta manera es mas facil garantizar que los datos permaneceran siempre en un estado bien definido invariante de clase En un lenguaje en el que cada objeto es creado a partir de una clase un objeto es llamado una instancia de esa clase Cada objeto pertenece a un tipo y dos objetos que pertenezcan a la misma clase tendran el mismo tipo de dato Crear una instancia de una clase es entonces referido como instanciar la clase En casi todos los lenguajes de programacion orientados a objeto el operador punto es usado para referirse o llamar a un metodo particular de un objeto Un ejemplo de lenguaje que no siempre usa este operador es C ya que para referirse a los metodos de un objeto a traves de un puntero al objeto se utiliza el operador gt Considerese como ejemplo una clase aritmetica llamada Aritmetica Esta clase contiene metodos como sumar restar multiplicar dividir etc que calculan el resultado de realizar estas operaciones sobre dos numeros Un objeto de esta clase puede ser utilizado para calcular el producto de dos numeros pero primeramente seria necesario definir dicha clase y crear un objeto En las secciones a continuacion se muestra como hacer esto utilizando dos lenguajes de programacion C y Python Declaracion de una clase Editar Esta clase podria ser definida de la siguiente manera en C class Aritmetica public inline int sumar int a int b const return a b inline int restar int a int b const return a b inline float multiplicar int a int b const return a b inline float dividir int a int b const return a b o como sigue en Python class Aritmetica def sumar self a b return a b def restar self a b return a b def multiplicar self a b return a b def dividir self a b return a b Instanciacion de una clase en un objeto Editar Para crear un objeto de tipo Aritmetica instanciar Aritmetica en C se haria de la siguiente forma Aritmetica calculador Aritmetica Otra manera usando punteros Aritmetica calculador1 new Aritmetica la misma operacion usando python seria asi calculador Aritmetica Operando con un objeto Editar Una vez que tenemos un objeto de Aritmetica podemos usarlo para realizar calculos sobre dos numeros En C contamos con dos objetos de ejemplo calculador y calculador1 en esta ultima variable en realidad hemos almacenado la direccion 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 necesitariamos un codigo como el siguiente en C int resultado 0 resultado calculador sumar 78 69 Otra manera usando punteros resultado calculador1 gt sumar 78 69 ahora usando Python para sumar dos numeros con el objeto calculador resultado calculador sumar 78 69 Otro ejemplo del mundo real de un objeto podria 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 polimorfico algunos detalles de su tipo pueden ser ignorados por ejemplo el objeto mi perro puede ser usado en un metodo que espera recibir un animal Tambien podria usarse un objeto gato puesto que esta tambien pertenece a la clase animal Pero mientras es accedido como un animal algunos atributos de un perro o un gato permaneceran no disponibles como la cola porque no todos los animales tienen cola Atributos dinamicos en objetos Editar Python y C son lenguajes con caracteristicas muy diferentes Python utiliza un sistema de tipos dinamico y C en cambio uno estatico o estricto El sistema de tipos usado en Python permite al programador agregar atributos a una instancia que no han sido definidos en la clase que le dio origen cosa que no es posible hacer en un lenguaje como C Por ejemplo La clase siguiente en Python no define ningun atributo class Prueba object pass pero es posible hacer lo siguiente 1 p Prueba 2 p unNumero 3 3 print Atributo unNumero de p s p unNumero 4 Atributo unNumero de p 3 A la instancia de p creada en la linea 1 le es asignado en la linea 2 el valor 3 lo cual crea un atributo de nombre unNumero en p de tipo int para almacenar el numero 3 Relaciones entre objetos EditarComo ya se ha dicho antes un sistema orientado a objetos esta caracterizado por objetos que interactuan entre si Estas interacciones suponen ciertos tipos de relaciones entre los objetos del sistema La semantica que expresa un objeto en el sistema esta determinada en primer lugar por las relaciones que este establece con otros objetos o conjuntos de objetos Tomemos como ejemplo un objeto fecha del que sin establecer ningun tipo de relacion podria decirse que significa un dia del ano particular Pero si relacionamos ese objeto fecha con un objeto Persona de manera que represente la fecha en que esa persona nacio en ese contexto dado el mismo objeto fecha adoptaria un significado diferente el de un cumpleanos aunque sigue siendo una fecha ahora tiene otra idea asociada Las relaciones entre objetos no solo estan definidas por los objetos que participan y la circunstancia que los relaciona sino tambien por la cantidad de objetos cardinalidad de la relacion y la direccion de la misma Una relacion 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 bidireccionalLas relaciones entre objetos mas generales son las siguientes Composicion Editar La composicion tambien conocida como relacion asociativa es un tipo de relacion que se establece entre dos objetos que tienen comunicacion persistente Se utiliza para expresar que un par de objetos tienen una relacion de dependencia para llevar a cabo su funcion de modo que uno de los objetos involucrados esta compuesto por el otro De manera practica es posible reconocer asociatividad entre dos objetos A y B si la proposicion 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 relacion de composicion con al menos un objeto disco duro Uso Editar Un objeto usa conoce a otro cuando puede enviarle mensajes por ejemplo para requerir de este algun servicio La composicion puede verse como un caso particular de esta relacion Delegacion Editar En ocasiones para lograr flexibilidad de diseno un objeto es implementado de forma tal que este delegue parte de su funcionalidad en otro objeto Esto es muy comun en aplicaciones que hacen uso de interfaces graficas de usuario en las que los controles graficos generales delegan la accion que se ejecutara ante determinado estimulo en otro objeto Objetos especializados EditarAlgunos terminos para tipos especializados de objetos son Singleton un objeto del que solo puede existir una unica instancia de su clase durante el tiempo de vida del programa Functor un objeto que puede ser utilizado como una funcion Objeto inmutable un objeto creado con un estado fijo y que no puede variar en el tiempo de vida del mismo Objeto de primera clase un objeto que puede ser utilizado sin restricciones Contenedor un objeto que contiene a otros objetos Fabrica de objetos un objeto cuyo proposito es crear otros objetos Metaobjeto un objeto a partir del cual se pueden crear otros objetos comparable con una clase la que no necesariamente es un objeto Prototipo un metaobjeto especializado a partir del cual se pueden crear otros objetos copiandolo Objeto todopoderoso un objeto que sabe mucho o hace mucho Este es un ejemplo de antipatron de diseno Antiobjeto una metafora computacional util para conceptualizar y solucionar problemas complejos usualmente con aproximaciones paralelas Vease tambien EditarPatron de diseno Programacion orientada a objetos Clase informatica Referencias Editar Schildt Helbert 2007 Java Manual de referencia 7 edicion Mc Graw Hill pp 105 ISBN 0 07 226385 7 Consultado el 21 de enero de 2016 Datos Q216601 Obtenido de https es wikipedia org w index php title Objeto programacion amp oldid 136807757, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos