You are on page 1of 12

UNIVERSIDAD DE EL SALVADOR

FACULTAD DE INGENIERÍA Y ARQUITECTURA


ESCUELA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS

PROGRAMACIÓN I

Unidad VI
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS

Objetivo: Conocer los conceptos básicos de la programación orientada a objetos; además se y


aplicarlos en la solución de problemas.

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.

La Programación Orientada a Objetos se fue convirtiendo en el estilo de programación dominante a


mediados de los años ochenta, en gran parte debido a la influencia de C++, una extensión del
lenguaje de programación C. Su dominación fue consolidada gracias al auge de las Interfaces
gráficas de usuario, para las cuales la programación orientada a objetos está particularmente bien
adaptada.

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.

MCP – CAH ciclo II - 2011 Página 1


1. Concepto
La Programación Orientada a Objetos es un enfoque conceptual específico para diseñar programas,
Es una forma de programar diferente concentrándose sobre todo en lo que se requiere obtener y no
en cómo obtenerlo.

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

3. ¿Programación Estructurada ó Programación Orientada a Objetos?


La POO difiere de la Programación Estructurada tradicional, en la forma en son manejados los datos
y los procedimientos, en PE estos (datos y procedimientos) están separados y sin ninguna relación
entre ellos; ya que lo único que se busca es el procesamiento de unos datos de entrada para
obtener otros de salida.

La Programación Estructurada anima al programador a pensar sobre todo en términos de


procedimientos o funciones, y en segundo lugar en las estructuras de datos que esos procedimientos
manejan. Con esta técnica de programación, se diseñan módulos (o funciones) , que procesan
datos.

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:

MCP – CAH ciclo II - 2011 Página 2


Técnica de Ventajas Desventajas
programación
Fomenta la reutilización del Mayor complejidad para
código adaptarse
Orientada a Objetos Facilita la creación de Depuración de código más
(POO) programas visuales compleja
Agiliza el desarrollo de software
Permite crear sistemas más
complejos
Son más fáciles de entender Cuando crece el código se
dificulta el manejo del
código fuente
La estructura de los programas La reutilización de código
es clara no se explota tanto como
Estructurada (PE) en la POO
El mantenimiento es fácil
Los bloques de código son casi
auto explicativos
Programas más sencillos y
rápidos de confeccionar
Es más fácil realizar pruebas y
depuración de los bloques

La Programación Estructurada es la primera técnica formal de programación (nació a inicios de


los 60’), sigue estando en vigencia y es muy utilizada para iniciar el aprendizaje de programación.

La programación orientada a objetos es una mejora de la programación estructurada; sin


embargo, la mayor diferencia que existe entre ambas es la forma en que se organizan los
programas.

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.

La Programación Estructurada es ideal para realizar programas sencillos y para iniciar la


programación. La Programación Orientada a Objetos es recomendada para resolver problemas
más complejos y requiere un mayor nivel de abstracción del problema.

A continuación se definen algunos elementos básicos de la programación orientada a objetos con


el objetivo de familiarizarse con esta forma de programación.

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.

MCP – CAH ciclo II - 2011 Página 3


Un objeto es cualquier elemento del medio ambiente real del problema que vamos a resolver;
posee características fundamentales:

• Identidad: En programación la identidad de los objetos sirve para verificar mediante sus
características si dos objetos son iguales o no.

• 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.

• Estado: El estado de un objeto se refiere al conjunto de los valores de sus atributos en


un instante de tiempo dado. El comportamiento de un objeto puede modificar el estado de
éste. Cuando una operación de un objeto modifica su estado se dice que esta tiene
"efecto colateral".

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).

“Una clase es una caracterización abstracta de un conjunto de objetos ” Luis Joyanes


Aguilar.

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)

MCP – CAH ciclo II - 2011 Página 4


5. Relaciones entre clases:
Los objetos del medio ambiente que nos rodea, no permanecen aislados y separados unos de los
otros, todo lo contrario se comunican entre sí para poder apoyarse y ayudarse entre sí. De la
misma forma las clases que forman parte del ambiente de un problema se relacionan entre sí y
con ello se permite que los objetos colaboren entre sí e intercambien información.
Las relaciones entre clases pueden ser las siguientes:
• Asociación: Es la relación más importante y común entre clases. Refleja una relación
entre dos clases independientes que se mantiene durante la vida de los objetos de
dichas clases o al menos durante un tiempo prolongado.

• Agregación: Es un tipo especial de asociación donde se parte de la idea que la clase de


donde parte la relación representa el “todo” y las clases relacionadas a ésta “las partes”.
Es decir que las partes pueden seguir funcionando aun sin el todo.

• 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).

A continuación se definen algunos elementos necesarios para el modelado de sistemas utilizando


la POO.

6.1 Diagrama de clases


Es una representación gráfica de las clases de un sistema. Sirve para modelar el sistema en
términos de sus clases, atributos y las relaciones entre estos elementos. En el diagrama se
representan los requerimientos, y la arquitectura general del sistema en estudio.

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.

MCP – CAH ciclo II - 2011 Página 5


NombreClase

• 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:

6.2 Multiplicidad en las relaciones de clases


Un concepto que va ligado al de las relaciones es el de la Cardinalidad (o multiplicidad), que
indica el grado y nivel de dependencia, se anotan en cada extremo de la relación y éstas pueden
ser:
• uno a muchos: 1..* (1..n)
• 0 a muchos: 0..* (0..n)
• número fijo: m (m denota el número).

6.3 Reglas para nombrar clase, atributos y métodos.


Para poder distinguir una clase de otra, siempre es importante y necesario identificarlos con un
nombre que las diferencie entre sí, para los atributos y métodos debe hacerse también esta
distinción. Existen unas pocas reglas o convenciones que siempre es bueno guardar para
nombrarlos:
1. Se usan letras preferiblemente, no se deben utilizar símbolos.
2. La primera siempre va en mayúsculas, las demás en minúsculas.
3. Si se utilizan dos o más palabras, se escriben unidas, sin espacio y las iniciales con
mayúsculas.
4. Los nombres siempre van en singular.
5. Los nombres de atributos y métodos, se escriben con letras minúsculas.

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.

MCP – CAH ciclo II - 2011 Página 6


La relación entre clases conocida como Asociación, permite asociar objetos que colaboran entre
sí. Ejemplo:
Note que las 2 clases están unidas por una
línea y no por una flecha, porque: Cuando
las flechas van de izquierda a derecha y de
arriba hacia abajo, se puede omitir la punta
de la flecha.

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.

El rombo vacio indica una relación de


agregación (siendo la clase Almacen
“el todo” y la clase cliente representa
“la parte”).

El rombo relleno indica una relación de


composición, otro tipo de relación.

• 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.

6.4 Pasos para crear el Diagrama de Clases (sin métodos)


1. Listar clases candidatas
2. Representar las clases en un diagrama de clases
3. Agregar asociaciones
4. Agregar atributos necesarios

6.5 Ejemplo de creación de un Diagrama de Clases:


Enunciado: Jugar Dados
En un juego de dados, un jugador toma dos dados y los lanza. Luego, se suman los valores
de las caras superiores de los dados. Si el valor es 7 gana el juego, de lo contrario pierde.
1. Listar clases
• Juego de Dados - clase

MCP – CAH ciclo II - 2011 Página 7


• Jugador - clase
• Dado - clase
• Valor de la cara - atributo de cada dado
• Resultado - Es la suma de las caras

2. Representar clases en un diagrama de clases


• Clases identificadas
• Juego de Dados
• Jugador
• Dado

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í:

MCP – CAH ciclo II - 2011 Página 8


1. Abstracción
Una forma de reducir la complejidad de un problema o situación es la abstracción. Las características
y procesos de cualquier sistema se resumen en los aspectos más esenciales y relevantes.

En computación, la abstracción es el proceso crucial de representar la información en términos de su


interfaz con el usuario.

Un ejemplo de abstracción expresada de diferentes formas según la aplicación a desarrollar, puede


ser un auto.

• Un auto es la composición de diferentes partes( motor, ruedas, puertas, asientos etc.)


• Un auto es un término común que define a tipos diferentes de automóviles, es decir es una
categoría que puede servir para agrupar, por ejemplo las diferentes marcas (BMW, Seat,
Toyota entre otras) o por su categoría (deportivos, clásicos, pick-up etc).

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.

2. Encapsulamiento y ocultación de datos


La encapsulación es la reunión en una cierta estructura, de todos los elementos que a un cierto nivel
de abstracción se pueden considerar pertenecientes a una misma entidad y también es el proceso de
agrupamiento de datos y operaciones relacionadas bajo una misma unidad de programación, lo que
permite aumenta la cohesión de los componentes del sistema.

Todas estos objetos que presentan características y comportamientos similares, se agrupan en


clases las cuales son utilizadas para encapsular los datos

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.

MCP – CAH ciclo II - 2011 Página 9


La idea principal es crear una clase que encapsule todos los elementos o características generales
que pueda y a partir de ésta, heredarle parcial o totalmente las características a objetos de una
subclase.

El lenguaje utilizado para el modelamiento de los sistemas utilizando la Programación Orientada a


Objetos es el UML. A continuación se encuentran los conceptos básicos del lenguaje UML.

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.

En 2004 finalizó la versión 2.0 con su especificación completa. UML 2 es ya un lenguaje de


modelado muy maduro. UML 2 ha incorporado numerosas mejoras a UML 1.x. Los cambios más
importantes se han realizado en el metamodelo (generador de modelos), conservando los principios
fundamentales y evolutivos de las últimas versiones. Los diseñadores de UML 2.0 han tenido mucho
cuidado en asegurar que fuera totalmente compatible con las versiones anteriores para que los
usuarios de éstas no tuvieran problemas de adaptación.

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.

2. Diagramas del lenguaje UML


¿Qué significa UML?
UML significa Lenguaje Unificado de Modelado (Unified Model Language) y es el lenguaje estándar
para el desarrollo de sistemas y de software utilizando POO.

¿Qué es lenguaje UML?


El lenguaje UML tiene una gran aplicación en la representación y modelado de la información que se
utiliza en las fases de análisis y diseño del ciclo de vida de los sistemas.

MCP – CAH ciclo II - 2011 Página 10


Un modelo es una abstracción de cosas reales, es decir es una simplificación del sistema real; en
pocas palabras es la representación gráfica de una situación real, mediante una simbología que
esquematiza clases, objetos, relaciones, etc.

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.

3. Tipos de diagramas en UML


A continuación se presenta una figura que presenta una forma de clasificación de los diferentes
diagramas que existen en UML.

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.

MCP – CAH ciclo II - 2011 Página 11


MCP – CAH ciclo II - 2011 Página 13

You might also like