Inicio arrow Programación arrow Programación Orientada a Objetos
Programación Orientada a Objetos Imprimir E-Mail
Calificación del usuario: / 20
MaloBueno 
escrito por Alejandro López Hernández   
Índice de artículos
Programación Orientada a Objetos
Página 2

La programación orientada a objetos (POO) se conoce como un nuevo paradigma de programación.

No existe ningún estilo de programación idoneo. La orientación a objetos acopla a la simulación de situaciones del mundo real. Las entidades centrales son los objetos que son tipos de datos que se encapsulan con el mismo nombre, las estructuras de datos y las operaciones que manipulan estos datos.

El atractivo intuitivo de la orientación a objetos es que proporciona conceptos y herramientas con las cuales se modela y representa el mundo real tan fielmente como sea posible.

La programación orientada a objetos según Grady Booch es "Un método de implantación en el que los programas se organizan como colecciones cooperativas de objetos cada uno de los cuales representa una instancia de clase u objeto, y cuyas clases son todas miembro de una jerarquía de clases unidas mediante relaciones de herencia.

Objeto

Es una entidad que contiene las características que describen el estado de un objeto del mundo real y las acciones que se asocian con el objeto. Se designa por un nombre o identificador del objeto y se describe mediante una notación gráfica que varia de acuerdo a la metodología que se este aplicando.

Atributo

Son las características que describen el estado del objeto, consta de dos partes, nombre del atributo y el valor del atributo.

Métodos

Son las operaciones que afectan el comportamiento asociado a un objeto, la ejecución de un método cambia el estado del objeto.

ObjetoAtributoValorMétodo
VentanaTamaño800x600minimizar()
VentanaColorAzulcambiarColor()

Cada método consta de un nombtre y un cuerpo que realiza la acción la cúal desde el punto de vista de un lenguaje orientado a objetos es el bloque de código que ejecuta tal acción.

Clase

Es una entidad que declara conjuntos de objetos similares

En programación una clase es como una plantilla para un tipo particular de objetos donde cada uno de estos objetos tendrá un estado propio, aunque podrán hacer operaciones comunes. Un objeto es una instancia de clase. Una clase es como una caja negra, se puede saber que es lo que hace. Por otro lado las instancias de clase ocupan espacio en memoria y debido a que existen en el tiempo deben realizar dos operaciones básicas, que son crearse y destruirse, por lo tanto un constructor es la operación que creará un objeto y/o inicializará su estado, mientras que un destructor es la operación que liberará el estado de un objeto y lo destruirá.

Clases de evento, eventos y mensajes

Las clases de evento son abstracciones que representan un tipo de evento para el cual el sistema tiene una respuesta común. Un evento, una instancia de la clase de evento, es una ocurrencia relevante en el sistema. Por ejemplo, un evento puede ser un estímulo dado por un actor (en notación UML los actores son entidades externas que interactúan con el sistema), un transcurso de tiempo o el envío de un mensaje entre dos objetos. El envío de un mensaje es el mecanismo por el cual el objeto que lo envía solicita la ejecución de una operación en el objeto que lo recibe. El mensaje esta compuesto por un nombre y varios argumentos.

El objeto receptor hace corresponder el nombre del mensaje con alguna de sus operaciones y le pasa los argumentos a la operación. Cualquier resultado se regresa al objeto que lo envió.

Encapsulamiento

Al empaquetamiento de las variables de un objeto con la protección de sus métodos se le llama encapsulamiento. Típicamente, el encapsulamiento es utilizado para esconder detalles de la puesta en práctica no importantes de otros objetos. Entonces, los detalles de la puesta en práctica pueden cambiar en cualquier tiempo sin afectar otras partes del programa.

El encapsulamiento de variables y métodos en un componente de software ordenado es, todavía, una simple idea poderosa que provee dos principales beneficios a los desarrolladores de software:

  • Modularidad, esto es, el código fuente de un objeto puede ser escrito, así como darle mantenimiento, independientemente del código fuente de otros objetos. Así mismo, un objeto puede ser transferido alrededor del sistema sin alterar su estado y conducta.
  • Ocultamiento de la información, es decir, un objeto tiene una "interfaz publica" que otros objetos pueden utilizar para comunicarse con él. Pero el objeto puede mantener información y métodos privados que pueden ser cambiados en cualquier tiempo sin afectar a los otros objetos que dependan de ello.

Los objetos proveen el beneficio de la modularidad y el ocultamiento de la información. Las clases proveen el beneficio de la reutilización. Los programadores de software utilizan la misma clase, y por lo tanto el mismo código, una y otra vez para crear muchos objetos.

En las implantaciones orientadas a objetos se percibe un objeto como un paquete de datos y procedimientos que se pueden llevar a cabo con estos datos. Esto encapsula los datos y los procedimientos. La realidad es diferente: los atributos se relacionan al objeto o instancia y los métodos a la clase. ¿Por qué se hace así? Los atributos son variables comunes en cada objeto de una clase y cada uno de ellos puede tener un valor asociado, para cada variable, diferente al que tienen para esa misma variable los demás objetos. Los métodos, por su parte, pertenecen a la clase y no se almacenan en cada objeto, puesto que sería un desperdicio almacenar el mismo procedimiento varias veces y ello va contra el principio de reutilización de código.

Polimorfismo

Un lenguaje orientado a objetos debe soportar el polimorfismo, lo que significa que clases diferentes pueden tener comportamientos diferentes oara el mismo método. SI por ejemplo una clase carro y una clase bicicleta, ambas pueden tener diferentes métodos llamados mover.

El polimorfismo es más una caracterśitica de los comportamientos que de los objetos. Una comparación con el mundo real es la de los verbos en los idiomas, que son equivalentes a los métodos. Considera las formas en que una bicicleta puede ser utilizada en la vida real. Puede limpiarla, moverla, desambrarla, repararla, o pintarla, entre otras cosas.

Estos verbos describen acciones genéricas porque no sabes que tipo de objetos están siendo afectados. (Este tipo de abstracción de objetos y acciones es una de las caracterśiticas distintivas de la inteligencia humana.)

Por ejemplo, mover una bicicleta requiere de acciones completamente diferentes de aquellas requeridas para mover un carro, aunque los conceptos sean similares. El verbo mover puede ser asociado con un conjunto particular de acciones solo cuando se conoce al objeto que esta siendo afectado.

Herencia

La herencia nos permite crear una relación jerarquica entre las clases usando subclases. Una subclase hereda atributos y métodos de su superclase. Por ejemplo, un carro y una bicicleta tienen cosas en común. Podríamos usar una clase vehículo que contenga un atributo color y un método mover, y entonces hacer que nuestras clases carro y bicicleta herenden de vehículo.

Con la herencia, puedes crear y agregar cosas a las clases existentes. De una simple clase base, puedes derivar clases más complejas y especializadas como sea necesario. Esto hace tu código más reusable, que es una de las grandes ventajas de la POO.

El usar la herencia puede ahorrarnos trabajo si los métodos pueden ser escritos en una superclase una sola vez, en lugar de escribirlos muchas veces en diferentes subclases. También puede permitirnos modelar las relaciones del mundo real de una forma más adecuada. Si la expresión sobre dos clases tiene sentido con "es un(a)" entre las clases, se puede decir que la herencia es adecuada. La expresión "un carro es un vehículo" tiene sentido, pero la sentencia "un vehículo es un carro" no es correcta porque no todos los vehículos son carros. Por lo tanto, el carro puede heredar de vehículo.



 
 





¿Recuperar clave?
¿Quiere registrarse? Regístrese aquí
Hay 1 invitado en línea

Foros de soporte