Professional Documents
Culture Documents
PROGRAMACIÓN I
Unidad VI
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Contenido:
• Introducción 1
• Programación Orientada a Objetos 2
• Terminología Básica 3
• Técnicas de la Programación Orientada a Objetos 9
• Lenguaje de Modelado UML 10
Introducción:
Los conceptos de la Programación Orientada a Objetos (POO) tienen origen en Simula 67, un
lenguaje diseñado para hacer simulaciones con naves aéreas. La idea surgió al agrupar los diversos
tipos de naves en diversas clases de objetos, siendo responsable cada clase de objetos de definir
sus propios datos y comportamientos. Fueron refinados más tarde en Smalltalk, desarrollado en
Simula en Xerox PARC (cuya primera versión fue escrita sobre BASIC) pero diseñado para ser un
sistema completamente dinámico en el cual los objetos se podrían crear y modificar en tiempo de
ejecución en lugar de tener un sistema basado en programas estáticos.
El “Eiffel de Bertrand Meyer” (1985) fue un tempranero y moderadamente acertado lenguaje que
cumplía con los objetivos de la POO; pero ahora ha sido esencialmente reemplazado por Java, en
gran parte debido a la aparición de Internet, y a la implementación de la máquina virtual de Java en
la mayoría de navegadores. PHP en su versión 5 se ha modificado y, soporta una orientación a
objetos de forma completa.
Esta técnica, se basa en el representación del problema en modelos de objetos físicos o simulados;
aunque la idea es abstracta y parece muy complicada, cuando se aplica a objetos físicos en términos
de sus clases, componentes, propiedades y comportamiento se vuelve más clara.
La idea fundamental de la orientación a objetos y de los lenguajes que implementan este paradigma
de programación es combinar (encapsular) en una sola unidad tanto los datos como las funciones
que operan (manipulan) sobre los datos. Esta característica permite representar los objetos del
mundo real, mucho más eficientemente que con funciones y datos de forma separada o
independiente (cómo lo hace Programación Estructurada).
2. Generalidades
La POO (Programación Orientada a Objetos), es un paradigma que utiliza objetos como elementos
fundamentales en la construcción de una solución. Un objeto es una abstracción de algún hecho ó
ente del mundo real que tiene atributos que representan sus características y propiedades; y
métodos que representan su comportamiento. Todas las propiedades y métodos comunes entre
objetos se encapsulan o se agrupan en clases.
Las propiedades más importantes de la POO son:
• Abstracción
• Encapsulamiento y ocultación de datos
• Polimorfismo
• Herencia
• Reusabilidad o reutilización de código
Los programadores que emplean POO, en cambio, primero definen objetos para luego enviarles
mensajes solicitándoles que realicen sus métodos por sí mismos.
Para realizar una comparación listaremos las ventajas y desventajas de estas dos formas de
programación:
En la actualidad se ha notado que muchas personas desean aprender POO dejando de lado la
PE, esto es un error, ya que PE es la base de POO ya que esta última utiliza técnicas como:
modularidad, estructura de datos entre otras. Por lo tanto si se desea aprender POO primero hay
que dominar la PE.
1. Objeto
Es el centro de la programación orientada a objeto. Un objeto es algo que se visualiza, se utiliza y
que juega un papel o un rol. En POO el objeto representa alguna entidad de la vida real. 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.
• Identidad: En programación la identidad de los objetos sirve para verificar mediante sus
características si dos objetos son iguales o no.
2. Atributo
Los atributos son las características individuales que diferencian un objeto de otro y determinan
su apariencia, estado u otras cualidades. Son propiedades del objeto, por ejemplo para el objeto
automóvil, algunos de sus atributos son: propietario, marca, año de matrícula, potencia etc.
Atributos son los datos o variables que caracterizan el objeto y cuyos valores indican en un
momento dado su estado. Para el objeto estudiante algunos de sus atributos podrían ser:
carnet, nombre, carrera, asignaturas aprobadas, etc.
La identidad y estado de los objeto, tienen que ver con los atributos, y estos pueden ser
modificados por el comportamiento de los objetos.
3. Clase
Una clase es la representación de un conjunto de objetos del mismo tipo, es decir que los
distinguen los mismos atributos y las mismas funciones (o comportamiento).
Es la definición (o implantación) de un tipo abstracto de datos; es decir que una clase describe no
solo los atributos de los objetos que la forman, sino que también incluye sus procesos (funciones
o comportamiento).
4. Métodos
Son las operaciones (acciones o funciones) definidas para los objetos, y permiten crearlos,
cambiar su estado o consultar el valor de los atributos. Cuando se llama a una operación de un
objeto se interpreta como el envío de mensaje a dicho objeto. En otras palabras, un método es
una subrutina asociada a una clase.
Algunos de los diferentes tipos de método que existen son los siguientes:
• Método Get (para ver o consultar valores de atributos)
• Método Set (para asignar valores de atributos)
• Métodos de actualización (para cambiar valores por medio de cálculos)
• Composición: Este tipo de relación entre clases indica dependencia entre ellas (las
clases), indica que una clase es parte esencial de otra; es una relación mucho más fuerte
que la agregación ya que de eliminarse una clase, deja de existir la otra. Dicho de otra
forma, si la clase origen “el todo” se elimina o destruye, las otras clases (o “las partes”)
también se destruyen.
• Dependencia: Esta relación indica la necesidad de una clase hacia otra, es decir que la
implantación de una clase depende de otra; los métodos u operaciones de una clase
requiere de los atributos de los objetos de la otra clase.
• Herencia: Indica que una subclase hereda los métodos y atributos especificados por una
Superclase, por ende la Subclase además de poseer sus propios métodos y atributos,
poseerá las características y atributos visibles de la Superclase.
6. Modelado
Un modelo es la representación gráfica de una situación real; por lo tanto, modelado implica
realizar un esquema (gráfico o dibujo).
Este diagrama se utiliza en la etapa de análisis del problema y diseño de la solución. Los
símbolos más utilizados en este diagrama son:
RECTANGULO: Que representa una clase, dividido en tres partes, una para el nombre de la
clase, otra para los atributos y la última para los métodos o funciones.
• Atributos
• Métodos
FLECHAS: Que indican la relación que existe entre dos clases. Las flechas pueden ser
continuas o punteadas, pueden tener punta o no y está se puede sustituir por rombos. Según
sea la relación que esta indique, como se verá más adelante:
Para poder ejemplificar un diagrama de clases, que como ya dijimos incluyen las clases y sus
relaciones, vamos a ampliar un poco más sobre las relaciones de asociación y agregación, que
son las que se utilizan con frecuencia:
Asociación
Esta relación se establece cuando dos clases tienen una dependencia de utilización, es decir que
una clase utiliza atributos y/o métodos de otra clase para funcionar, ambas clase tienen la misma
jerarquía, es decir que ninguna es parte de la otra.
Un cliente puede tener asociadas muchas Órdenes de Compra, en cambio una orden de compra
solo puede tener asociado un cliente.
Agregación:
Con este tipo de relación se indica que un objeto forma parte de otro objeto; por ejemplo si
tenemos un objeto: computadora, esta tiene un monitor, que es otro objeto; el monitor forma
parte de la computadora; por lo tanto tienen una relación de agregación. Esta relación también
es conocida como “forma parte de …”
Ejemplo:
Aquí las flechas tienen punta ya que
están inclinadas.
• Un Almacén posee Clientes y Cuentas (los rombos van en el objeto que posee las
referencias, es decir el objeto que está formado por los otros: el todo y las partes).
• Cuando se destruye el Objeto Almacén también son destruidos los objetos Cuenta
asociados, en cambio no son afectados los objetos Cliente asociados.
3. Agregar asociaciones
• Asociaciones identificadas
• Jugador lanza Dados
• Jugador juega Juego de Dados
• Dados son parte del Juego de Dados
• Jugador utiliza Dado
4. Agregar atributos
• Jugador: nombre del jugador
• Dado: valor de la cara
De esta manera el Diagrama de clases, únicamente con atributos y relaciones, queda así:
Si los miembros de autos o las diferencias entre autos individuales no son relevantes, entonces se
utilizan expresiones y operaciones tales como: se fabrican autos, se usan autos para trasladarse de
un lado a otro, se descompone el auto en sus partes etc.
3. Herencia
El concepto de herencia ha sido definido en la sección de modelado, sin embargo es una de las
técnicas utilizadas en la POO debido a que la facilidad de heredarle características de una
Superclase a una Subclase es comúnmente utilizado en la POO.
1. Historia de UML
En la primera mitad de la década de los 90, los lenguajes de modelado que imperaban eran OMT-2
(Object Modeling Technique) creado por James Rumbaugh, OOSE (Object Oriented Software
Engineering) creado por Ivan Jacobson y Booch93 creadi oir Grady Booch.
Grady Booch llamó a James Rumbaugh y formaron equipo en una nueva Rational Corporation (cuyo
propietario era Grady) con el objetivo de fusionar sus dos métodos. En octubre de 1994, Grady y
James comenzaron a trabajar en la unificación de ambos métodos produciendo una versión en
borrador llamada 0.8 y nombre “Unified Method”. A partir de 1995 Jacobson se une. El primer fruto
de su trabajo colectivo se lanzó en enero de 1997 y fue presentado como versión 1.0 de UML. La
gran ventaja de UML es que fue recogiendo aportaciones de los grandes gurús de objetos: David
Hasel con sus diagramas de estado; partes de la notación de Fusion, el criterio de responsabilidad-
colaboración y los diagramas de Rebeca Wirfs-Brock, y el trabajo de patrones y documentación de
Gamma-Helm-Johnson-Ulissides.
En 1997 OMG aceptó UML como estándar (versión 1.1) y nació el primer lenguaje de modelado
visual orientado a objetos como estándar abierto de la industria. En 1998, OMG lanzó dos revisiones
más, 1.2 y 1.3. En el año 2000 se presentó UML 1.4 con la importante aportación de la semántica de
acción, que describe el comportamiento de un conjunto de acciones permitidas que se pueden
implementar mediante lenguajes de acción. La versión 1.5 siguió a las ya citadas.
La versión UML 2.0 ha evolucionado para superar los nuevos retos a los cuales se enfrentan el
software y los nuevos desarrolladores de modelos.
Con un lenguaje formal de modelado, el lenguaje es abstracto aunque tan preciso como un lenguaje
de programación. Esta precisión permite que un lenguaje sea legible por la máquina de moto que
pueda ser interpretado, ejecutado y transformado entre sistemas.
Los diagramas estructurados se utilizan para capturar la organización física de las cosas del sistema,
por ejemplo como se relacionan unos objetos con otros.
Los diagramas de comportamiento se centran en el comportamiento de los elementos de un sistema.
El diagrama de clases es uno de los tipos de diagrama más fundamentales en UML. Se utilizan para
capturar las relaciones estáticas de su software. Este tipo de diagramas proporcionan un medio de
capturar la estructura física de un sistema.
2.4 Simbología
En el siguiente cuadro se encuentra la simbología de los elementos básicos para el diseño UML.