Está en la página 1de 55

SIS103

METODOLOGIA DE LA
PROGRAMACION II
Programación Orientada a Objetos
Ing. Gerzon Barrientos Copa
TEMA 1
INTRODUCCION A LA PROGRAMACION
ORIENTADA A OBJETOS
Antecedentes
La programación estructurada que se ha estudiado en profundidad en otros semestres viene
representada por lenguajes procedimentales clásicos como Pascal y C, aunque los más antiguos
como FORTRAN, COBOL o BASIC también pertenecen a esta categoría. En estos lenguajes, cada
sentencia (instrucción) del lenguaje indica a la computadora que debe realizar alguna acción o
tarea.

En un lenguaje procedimental, un programa es un conjunto de instrucciones o sentencias.

En el caso de pequeños programas, no se necesita ningún otro principio de organización. El


programador crea una lista de instrucciones y una computadora las ejecuta; pero cuando los
programas se vuelven más complejos, la lista de instrucciones se vuelve grande e inmanejable ya
que fácilmente se alcanzan decenas o centenas de instrucciones.

Cuando un programa se vuelve complejo el programa se divide en unidades más pequeñas que se
hagan más comprensibles a las personas que lo utilizan. Estas unidades en C, C++, Java se
denominan funciones; en otros lenguajes el mismo concepto se conoce por el término de
subrutina, procedimiento o subprograma.
Antecedentes
La idea de dividir un programa en funciones se extiende al agrupamiento de un número
determinado de funciones en una entidad más grande llamada módulo (que normalmente se
agrupa en un archivo o fichero).

El principio siempre es el mismo: agrupar componentes que ejecutan una lista de instrucciones.

La división de un programa en funciones y módulos es una de las características fundamentales de


la programación estructurada y que facilita la lectura y comprensión del programa.

Desde un punto de vista de conceptos prácticos de programación, los lenguajes de computadoras


tratan dos conceptos fundamentales: datos y algoritmos.

• Los datos constituyen la información que utiliza y procesa un programa.


• Los algoritmos son los métodos que utiliza el programa (instrucciones paso a paso que
conducen a la solución del programa).

La ecuación fundamental de la programación estructurada, debida a Niklaus Wirth es:

Algoritmos + Datos = Programas


Antecedentes
Cuando el problema a resolver es complejo, la programación se hace difícil y excesivamente
compleja y estas dificultades provienen de que las funciones tienen acceso ilimitado a datos
globales y además el paradigma o enfoque procedimental proporcionan un modelo pobre del
mundo real.

Desde el punto de vista de un lenguaje procedimental, como C, existen dos tipos de datos: locales y
globales.

• Los datos locales están ocultos en el interior de la función y se utilizan exclusivamente


por la función.
• Los datos globales son aquellos que pueden ser accedidos por cualquier función del
programa.
Antecedentes
En un programa grande existen muchas funciones y muchos datos globales y eso conduce a un
número muy grande de posibles conexiones entre ellos. Lo que dificulta el entendimiento de la
estructura del programa y la modificación del propio programa.
Programación orientada a objetos
El enfoque procedimental se basa en la interrogante:

¿Qué hace este programa?.

El enfoque orientado a objetos responde a otro interrogante

¿Qué objetos del mundo real puede modelar?.

La Programación Orientada a Objetos (POO) se basa en:

Dividir el programa, no en tareas, sino en modelos de objetos físicos o simulados.

Este fundamento se vuelve más claro cuando se consideran objetos físicos en términos de clases,
componentes, propiedades y comportamiento, y sus objetos creados de las clases.

Si se escribe un programa de computadora en un lenguaje orientado a objetos, se está creando, en


la computadora, un modelo de alguna parte del mundo.
Programación orientada a objetos
La idea fundamental de la OO y los lenguajes de POO que implementan este paradigma es:

Combinar en una única unidad tanto datos como operaciones que operan sobre los datos.

Esta unidad de programación se denomina objeto.

Esta característica permite modelar los objetos del mundo real de un modo mucho más eficiente
que con funciones y datos.

Las operaciones de un objeto, se llaman funciones miembro (C++) o métodos (Java), son la
única alternativa para acceder o modificar sus datos.

Los datos están ocultos y se dice que junto con las funciones están encapsulados en una entidad
única.

La encapsulación o encapsulamiento de los datos y la ocultación de los datos son conceptos


clave en programación orientada a objetos.
Programación orientada a objetos
En un sistema orientado a objetos, un programa se organiza en un conjunto finito de objetos que
contienen datos y operaciones (funciones miembro o método) que se comunican entre sí mediante
mensajes (llamadas a funciones miembro).
Propiedades de la POO
La programación orientada a objetos (POO) es un paradigma o enfoque conceptual específico
para diseñar programas, utilizando un lenguaje de programación orientado a objetos, por ejemplo,
C++ o Java.

Las propiedades más importantes de la POO son:


• Abstracción.
• Encapsulamiento y ocultamiento de datos.
• Polimorfismo.
• Herencia.
• Reusabilidad y reutilización de código.

Este paradigma de programación supera las limitaciones que tiene la programación tradicional o
procedimental.

Los elementos fundamentales de la POO son las clases y objetos.

Se piensa en los datos que se necesitan para describir el objeto (estático) y las operaciones que
describirán la interacción con los datos (dinámica).
Propiedades de la POO
Abstracción
Es la propiedad que considera los aspectos más significativos o notables de un problema y expresa
una solución en esos términos.

En computación, es la etapa mas importante de representación de la información representándose


como un tipo definido por el usuario.

Una clase es un elemento en C++ o en Java que traduce una abstracción a un tipo definido por el
usuario y combina representaciones de datos y métodos para manipular esa información en un
paquete.

La abstracción posee diversos grados denominados niveles; éstos ayudan a estructurar la


complejidad que poseen los sistemas del mundo real; en el análisis de un sistema hay que
concentrarse en qué hace y no en cómo lo hace.
Propiedades de la POO
Abstracción
En resumen la abstracción es el principio fundamental que se encuentra tras la reutilización.

Sólo se puede reutilizar un componente o elemento si en él se ha abstraído lo relevante de un


conjunto de elementos del mundo real en el que aparecen una y otra vez con ligeras variantes en
sistemas diferentes.

El principio de la abstracción es más fácil de entender con una analogía del mundo real.

Una forma de reducir la complejidad es, la abstracción, donde las características y procesos de
cualquier sistema se resumen en los aspectos esenciales y más relevantes; de este modo, las
características complejas de los sistemas se vuelven más manejables.
Propiedades de la POO
Abstracción
Ejemplo 1

La televisión es un electrodoméstico que se encuentra en todos los hogares; la mayoría de las


personas está familiarizada con sus características y su manejo manual o con el control remoto:
encender, apagar, cambiar de canal, ajustar el volumen, cambiar el brillo, etcétera, así como añadir
componentes externos: altavoces, grabadoras de CD, reproductores de DVD, conexión de un
módem para internet, etc.

Sin embargo: ¿Sabemos cómo funciona internamente?. ¿Conocemos cómo recibe la señal por la
antena, por cable, o satélite, traduce la señal y la visualiza en pantalla?. La respuesta es:

Normalmente no sabemos cómo funciona el aparato de televisión, pero sí sabemos cómo


utilizarlo.
Esto se debe a que la televisión separa claramente su implementación interna de su interfaz
externa, los cuales serían:

Los botones de la televisión o el control remoto.


Propiedades de la POO
Abstracción
En computación, la abstracción es el proceso crucial de representar la información en términos de
su interfaz con el usuario. Es decir, se abstraen las características operacionales esenciales de un
problema y expresa su solución en dichos términos.

La abstracción se manifiesta en C++ o Java con el diseño de una clase que implementa la interfaz
y que no es más que un tipo de dato específico.

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


ser el término o clase auto (o bien coche, carro), donde:

• Un auto es la composición o combinación de diferentes partes (motor, cuatro


ruedas, 3 o 5 puertas, asientos, etc.).
• Un auto también es un término común que define a tipos diferentes de automóviles;
se pueden clasificar por el fabricante (BMW, Seat, Chevrolet, Toyota, etc.), por su
categoría o uso (deportivo, todo terreno, sedán, pick-up, limousine, coupé, etc.).
Propiedades de la POO
Encapsulamiento y ocultación de datos
Encapsulación o encapsulamiento significa reunir en cierta estructura todos los elementos que, a
determinado nivel de abstracción, se pueden considerar de una misma entidad, y es el proceso de
agrupamiento de datos y operaciones relacionadas bajo una misma unidad de programación, lo que
aumenta la cohesión de los componentes del sistema.

En este caso, los objetos que poseen las mismas características y comportamiento se agrupan en
clases que son unidades de programación que encapsulan datos y operaciones; la encapsulación
oculta lo que hace un objeto de lo que hacen otros objetos del mundo exterior, por lo que se
denomina también ocultación de datos.

Un objeto tiene que presentar una “cara” con el mundo exterior, para poder iniciar operaciones y ser
la comunicación con el mundo exterior.

Ejemplo 2
• La televisión tiene un conjunto de botones en la misma o en un control remoto.
• Una máquina lavadora tiene un conjunto de mandos e indicadores que establecen la
temperatura y el nivel del agua.
Propiedades de la POO
Encapsulamiento y ocultación de datos
En esencia, la interfaz de una clase representa un contrato de prestación de servicios entre ella y
los demás componentes del sistema; de este modo, los clientes de un componente sólo necesitan
conocer los servicios que éste ofrece y no cómo están implementados internamente.

Se puede modificar la implementación de una clase sin afectar a las restantes relacionadas con
ella, dando lugar la separación entre la interfaz y la implementación. La interfaz establece qué se
puede hacer con el objeto; de hecho, la clase actúa como una caja negra.

Ejemplo 3
• En los automóviles no se necesita conocer el funcionamiento de la caja de cambios, el
sistema de frenos o la climatización para que el conductor utilice todos estos
dispositivos.

En resumen el encapsulamiento o encapsulación consiste en combinar datos y comportamiento en


un paquete y ocultar los detalles de la implementación al usuario del objeto.
Propiedades de la POO
Herencia
El concepto de clases divididas en subclases se utiliza en la vida diaria y conduce al de herencia.

Ejemplo 4
• La clase animal se divide en mamíferos, anfibios, insectos, aves, etc.
• La clase vehículo se divide en autos, camiones, autobuses, motocicletas, etc.
• La clase electrodoméstico se divide en lavadora, frigorífico, tostadora, microondas.

La clase principal de la que derivan las restantes se denomina base, padre o superclase; las
subclases se denominan derivadas o hijas. Así también las clases bases también pueden ser
subclases o derivarse de otras superclases.

La idea principal de estas divisiones reside en el hecho de que cada subclase comparte
características con la clase de la cual se deriva.
Propiedades de la POO
Herencia
Ejemplo 5
• Los autos, camiones, autobuses, y motocicletas, tienen motor, ruedas y frenos; pero,
además de estas características compartidas, cada subclase tiene sus propias
características; por ejemplo los autos pueden tener maletero, cinco asientos; los
camiones cabina y caja para transportar carga, etc.

Las clases reflejan que el mundo real contiene objetos con propiedades o atributos y
comportamiento; la herencia manifiesta que dichos objetos tienden a organizarse en jerarquías;
esta jerarquía, desde el punto de vista del modelado, se denomina relación de generalización o
es-un (del inglés is-a).

Ejemplo 6
• Se puede definir una clase Animal que encapsule todas las propiedades o atributos
(altura, peso, número de patas, etc.) y el comportamiento u operaciones (comer, dormir,
andar) que pertenecen a cada uno. Donde los animales específicos como mono, jirafa,
canguro o pingüino tienen a su vez características propias.
Propiedades de la POO
Herencia
Ejemplo 6 (Cont.)

• Como las técnicas de herencia se representan con la citada relación es-un, se puede decir que
mono es-un Animal con características propias: subir a lo árboles, saltar entre ellos, entre otras;
además, comparte con jirafa, canguro y pingüino las características propias de cualquier animal,
como comer, beber, correr, dormir, etc.

En programación orientada a objetos, la relación de generalización se denomina herencia; cada


clase derivada hereda las características de la cual es base y además añade sus propias
características, atributos y operaciones.

En resumen La herencia permite la creación de nuevas clases a partir de otra ya existente; la que
sirve de modelo se llama base y la que se creó, hereda: sus características, además se pueden
personalizar añadiendo rasgos adicionales.
Propiedades de la POO
Herencia
Propiedades de la POO
Herencia
Propiedades de la POO
Polimorfismo
El polimorfismo es la propiedad que le permite a una operación o función tener el mismo nombre en
clases diferentes y actuar de modo distinto en cada una de ellas; por ejemplo:
• Se puede abrir una puerta, una ventana, un libro, un periódico, una cuenta en un banco,
una conversación, un congreso; en cada caso se realiza una acción diferente.

En orientación a objetos, cada clase “conoce” cómo realizar esa operación.

En la práctica, polimorfismo implica la capacidad de una operación de ser interpretada sólo por el
propio objeto que lo invoca; desde un punto de vista práctico de ejecución del programa, el
polimorfismo se realiza en tiempo de ejecución, ya que durante la compilación no se conoce qué
tipo de objeto y por consiguiente cuál operación fue invocada.

Otro ejemplo de polimorfismo es, por ejemplo: la operación típica como cambiar los frenos en un
taller de reparaciones de automóviles donde existen diferentes marcas, modelos, potencias,
carburantes, etc., que constituyen una clase o colección heterogénea, donde la operación es la
misma, los principios de trabajo son iguales, sin embargo, dependiendo del auto en particular, la
operación cambiará e incluirá diferentes acciones.
Propiedades de la POO
Polimorfismo
El polimorfismo es importante en el modelado de sistemas porque el uso de palabras iguales tiene
comportamientos distintos, según el problema a resolver.

Es importante en el desarrollo de software pues toma ventaja de la propiedad de la herencia.

En el caso de operaciones en C++ o Java, el polimorfismo permite que un objeto determine en


tiempo de ejecución la operación a realizar; por ejemplo:
• Si se desea realizar un diseño gráfico para representar figuras geométricas como
triángulo, rectángulo y círculo y desea calcular sus superficies y perímetros; cada figura
tiene un método u operación distinta para realizar dichos cálculos.

El polimorfismo permite definir la única función o método calcularSuperficie, cuya implementación


es diferente en la clase triángulo, rectángulo o círculo, y cuando se selecciona un objeto específico
en tiempo de ejecución, la función que se ejecuta es la correspondiente al objeto específico de la
clase seleccionada.
Propiedades de la POO
Polimorfismo
En Java existe otra propiedad importante derivada del polimorfismo y es la sobrecarga de métodos;
la sobrecarga básica de operadores existe siempre; por ejemplo:
• El operador + sirve para sumar números enteros o reales, pero, si desea sumar
números complejos, deberá sobrecargar el operador + para realizar esta acción.

El uso de operadores o funciones de forma diferente, dependiendo de los objetos sobre los que
actúan, se denomina polimorfismo (un elemento con diferentes formas).

Sin embargo, cuando a un operador existente, tal como + o =, se le permite operar con diferentes
tipos de datos, dicho operador está sobrecargado, y éste es un tipo especial de polimorfismo y una
característica sobresaliente de los lenguajes de programación orientada a objetos.
Propiedades de la POO
Reutilización (Reusabilidad)
Otra propiedad fundamental de la programación orientada a objetos es la reutilización o
reusabilidad; este concepto significa que una vez que se ha creado, escrito y depurado una clase,
se puede poner a disposición de otros programadores; de manera similar, al uso de las bibliotecas
de funciones en un lenguaje de programación procedimental como C.

El concepto de herencia en C++ o Java proporciona una ampliación o extensión importante a la


idea de reusabilidad; una clase existente se puede ampliar añadiéndole nuevas características,
atributos y operaciones. Esta acción se realiza derivando una nueva clase de la clase existente. La
nueva clase hereda las características de la clase base; pero podrá añadirle nuevas características.
Propiedades de la POO
Reutilización (Reusabilidad)
La reutilización de código brinda la facilidad de reutilizar o reusar el software existente es uno de los
grandes beneficios de la POO. De este modo en una empresa de software se pueden reutilizar
clases diseñadas en un proyecto en un nuevo proyecto con la consiguiente mejora de la
productividad, al sacarle partido a la inversión realizada en el diseño de la clase primitiva.

Las otras propiedades comunes de varias clases sólo necesitan ser implementadas una vez y sólo
necesitan modificarse una vez si es necesario. También, está soportado el concepto de abstracción
de la funcionalidad común.

La facilidad con la que el software existente se puede reutilizar es una propiedad muy importante de
la POO. La idea de usar código existente no es nueva en programación, ni lógicamente en C++ o
Java. Por ejemplo:
• En C++ cada vez que se imprime algo con cout se está reutilizando código. No se
escribe el código de salida a pantalla para visualizar los datos sino que se utiliza el flujo
ostream existente para realizar el trabajo.

El no tener en cuenta la ventaja de utilizar el código disponible lleva a volver a escribir código ya
existente, comúnmente dicho “inventar la rueda” cada día, o al menos en cada proyecto.
Propiedades de la POO
Reutilización (Reusabilidad)
Es importante en el diseño de un código la escritura de código reusable. Se debe diseñar los
programas de modo que se pueda reutilizar las clases, los algoritmos y las estructuras de datos.

Los programadores de un proyecto en el que se trabaja, se debe poder utilizar los componentes
anteriores, tanto en el proyecto actual como en futuros proyectos.

En general, se debe evitar diseñar código en exceso o específico para casos puntuales; siempre
que sea posible reutilice código existente.

Una técnica del lenguaje C++ para escribir código de propósito general es utilizar plantillas
(templates). En lugar de escribir, por ejemplo, una estructura de datos Pila para tratar números
reales, etc. es preferible diseñar una plantilla o tipo genérico Pila que sirva para cualquier tipo de
dato a procesar.
Objetos
¿Qué es un objeto?
En el mundo real, las personas identifican los objetos como elementos que pueden ser percibidos
por los cinco sentidos; cuentan con propiedades específicas que definen su estado como: posición,
tamaño, color, forma, textura, etc.; además tienen ciertos comportamientos que los hacen diferentes
de otros objetos.

Booch define un objeto como “una entidad (algo) que tiene un estado, un comportamiento y una
identidad”. Supongamos que el estado de la máquina de una fábrica puede estar conformado por:
encendida/apagada (on/off), su potencia, velocidad máxima, velocidad actual, temperatura, etc; su
comportamiento puede incluir diversas acciones para encenderla y apagarla, obtener su
temperatura, activar o desactivar otras máquinas, condiciones de señal de error o cambiar de
velocidad; su identidad se basa en el hecho de que cada instancia de una máquina es única y está
identificada por un número de serie; los que se eligen para enfatizar el estado y el comportamiento
se apoyarán en cómo un objeto máquina se utilizará en una aplicación.

En el diseño de un programa orientado a objetos, se crea una abstracción o modelo simplificado de


la máquina basado en las propiedades y comportamiento que son útiles en el tiempo.
Objetos
¿Qué es un objeto?
Martin y Odell definen un objeto como “cualquier cosa, real o abstracta, en la que se almacenan
datos y aquellos métodos (operaciones) que manipulan los datos”. Para realizar esa actividad se
añaden a cada objeto de la clase los propios datos y los asociados con sus propios métodos
miembro que pertenecen a la clase.

Un mensaje es una instrucción que se envía a un objeto, el cual se ejecutará al recibirlo; incluye el
identificador que contiene la acción a realizar por el objeto junto con los datos que éste necesita
para efectuar su trabajo; los mensajes, por consiguiente, forman una ventana del objeto al mundo
exterior.

El usuario se comunica con el objeto mediante su interfaz, un conjunto de operaciones definidas por
la clase del objeto de modo que todas sean visibles al programa; por ejemplo: un dispositivo
electrónico, como una máquina de fax, tiene una interfaz de usuario bien definida, que incluye un
mecanismo de avance del papel, botones de marcado, receptor y el botón “Enviar”; con lo que el
usuario no tiene que conocer cómo está construida la máquina internamente, como el protocolo de
comunicaciones u otros detalles; inclusive el hecho de abrir la máquina durante el periodo de
garantía puede anular la garantía.
Objetos
El objeto es el centro de la programación orientada a objetos.

Un objeto es algo que se visualiza, se utiliza y que juega un papel o un rol. Cuando se programa de
modo orientado a objetos se trata de descubrir e implementar los objetos que juegan un rol en el
dominio del problema del programa.

Un objeto en software es una entidad individual de un sistema que guarda una relación directa con
los objetos del mundo real.

La correspondencia entre objetos de programación y objetos del mundo real es el resultado práctico
de combinar atributos y operaciones, o datos y funciones.

Un objeto tiene:
• Un estado.
• Un comportamiento.
• Una identidad.
Objetos
Estado
Conjunto de valores de todos los atributos de un objeto en un instante de tiempo determinado.

El estado de un objeto viene determinado por los valores que toman sus datos o atributos. Estos
valores han de cumplir siempre las restricciones (invariantes de clase, para objetos pertenecientes
a la misma clase) que se hayan impuesto.

El estado de un objeto tiene un carácter dinámico que evoluciona con el tiempo, con independencia
de que ciertos elementos del objeto puedan permanecer constantes.
Objetos
Comportamiento
Conjunto de operaciones que se pueden realizar sobre un objeto.

Las operaciones pueden ser de observación del estado interno del objeto, o bien de modificación de
dicho estado.

El estado de un objeto puede evolucionar en función de la aplicación de sus operaciones. Estas


operaciones se realizan tras la recepción de un mensaje o estímulo externo enviado por otro objeto.

Las interacciones entre los objetos se representan mediante diagramas de objetos.

En UML se representarán por enlaces en ambas direcciones.


Objetos
Identidad
Permite diferenciar los objetos de modo no ambiguo independientemente de su estado.

Es posible distinguir dos objetos en los cuáles todos sus atributos sean iguales.

Cada objeto posee su propia identidad de manera implícita. Cada objeto ocupa su propia posición
en la memoria de la computadora.
Clases
¿Qué es una clase?
En términos prácticos, una clase es un tipo definido por el usuario; son los bloques de construcción
fundamentales de los programas orientados a objetos. Booch denomina una clase como “un
conjunto de objetos que comparten una estructura, comportamiento y semántica comunes”.

Una clase contiene la especificación de los datos que describen un objeto junto con la descripción
de las acciones cuya ejecución conoce; dichas acciones se conocen como servicios o métodos.

Una clase también incluye todos los datos necesarios para describir los objetos creados a partir de
la clase, los cuales se conocen como atributos, variables o variables instancia; el primer término se
utilizará en análisis y diseño orientado a objetos, los otros, en programas orientados a objetos.
Clases
Tipo abstracto de datos (TAD)
Un progreso importante en la historia de los lenguajes de programación se produjo cuando se
comenzó a combinar juntos diferentes elementos de datos y, por consiguiente, encapsular o
empaquetar diferentes propiedades en un tipo de dato. Estos tipos fueron las estructuras o
registros que permiten a una variable contener datos que pertenecen a las circunstancias
representadas por ellas.

Las estructuras representan un modo de abstracción con los programas, concretamente la


combinación (o composición) de partes diferentes o elementos (miembros); por ejemplo:
• Una estructura coche constará de miembros tales como: marca, motor, número de
matrícula, año de fabricación, etc.

Las estructuras representan un modo de abstracción con los programas, concretamente la


combinación (o composición) de partes diferentes o elementos (miembros).

Aunque en las estructuras y registros se pueden almacenar las propiedades individuales de los
objetos en los miembros, en la práctica cómo están organizados, no pueden representar qué se
puede hacer con ellos (moverse, acelerar, frenar, etc. en el caso de un coche/carro). Se necesita
que las operaciones que forman la interfaz de un objeto se incorporen también al objeto.
Clases
Tipo abstracto de datos (TAD)
El tipo abstracto de datos (TAD) describe, no sólo los atributos de un objeto sino también su
comportamiento operaciones o funciones y, en consecuencia, se puede incluir una descripción de
los estados que puede tener el objeto. Por ejemplo:
• Un objeto "equipo de baloncesto" no sólo puede describir a los jugadores, la
puntuación, el tiempo transcurrido, el periodo de juego, etc., sino que también se puede
representar operaciones tales como "sustituir un jugador", "solicitar tiempo muerto", o
restricciones tales como, el momento en que comienza 0:00 y en que termina cada
cuarto de juego 15:00, o incluso las paradas del tiempo, por lanzamientos de
personales.

El término tipo abstracto de dato se consigue en programación orientada a objetos con el término
clase. Una clase es la implementación de un tipo abstracto de dato y describe no sólo los
atributos (datos) de un objeto sino también sus operaciones (comportamiento). Por ejemplo:

• La clase carro define que un coche/carro consta de motor, ruedas, placa de matrícula,
etc. y se puede conducir (manejar), acelerar, frenar, etc.
Clases
Todo programa orientado a objetos basa su construcción en un elemento fundamental que es la
clase, la cual es manipulada por los objetos a través de los métodos. La clase es un tipo de dato
definido por el usuario que especifica las estructura de los datos y los métodos correspondientes a
ese tipo de dato particular, sin embargo tiene mayores utilidades que los de simple clasificación o
categoría de objetos.

Existen un par de definiciones de clases que pueden ilustrar mejor su naturaleza:

“Son los moldes con los que se producen los objetos.” (Deitel/Deitel.)

“Es un término técnico que se aplica a los lenguajes orientados a objetos


para describir grupos de estructuras de datos caracterizados por propiedades
comunes.” (Meyer.)

Una clase se compone de atributos y métodos, y es posible definir muchos objetos de la misma
clase, donde todos los miembros de una clase son globales dentro de la clase, independientemente
del tipo de acceso que tengan; es decir, todos los métodos pueden utilizar los atributos de la clase.
Clases
Instancias
Una clase describe un objeto, en la práctica múltiples objetos. En conceptos de programación, una
clase es, realmente, un tipo de dato, y se pueden crear, en consecuencia variables de ese tipo. En
programación orientada a objetos, a estas variables, se las denomina instancias (instances), y
también por sus sinónimos ejemplares, casos, etc.

Las instancias son la implementación de los objetos descritos en una clase. Estas instancias
constan de los datos o atributos descritos en la clase y se pueden manipular con las operaciones
definidas en la propia clase.

En un lenguaje de programación OO, objeto e instancia son términos sinónimos. Así, cuando se
declara una variable de tipo Auto, se crea un objeto auto (una instancia de la clase Auto).
Clases
Estructura
La estructura de una clase esta compuesta por:

En pseudocódigo, la creación de clases sigue la sintaxis que se ilustra a continuación:


Clases
Atributos
En programación orientada a objetos, los atributos son datos contenido en todas las instancias de
una clase, donde cada atributo tiene un valor para cada una de las instancias.

En un programa orientado a objetos varias clases pueden tener atributos comunes; por ejemplo:
nombre, en las clases Persona y Calle) pero cada atributo debe ser único dentro de una clase.

Los atributos tienen que ser datos, no objetos. La diferencia entre unos y otros reside en la
identidad: los objetos tienen identidad, pero los atributos no.

En la práctica en un programa orientado a objetos los atributos son los datos con los cuales opera
un método.

Los atributos se representan en el segundo área de los símbolos de clase e instancia. En las
clases, figurará el nombre del atributo, el tipo y el valor por defecto. En las instancias, el valor del
atributo para ese objeto determinado.
Clases
Métodos
En programación orientada a objetos, las operaciones definidas para los objetos, se denominan
métodos. Cuando se llama a una operación de un objeto se interpreta como el envío de un
mensaje a dicho objeto.

Un programa orientado a objetos se forma enviando mensajes a los objetos, que a su vez producen
(envían) más mensajes a otros objetos. Así, cuando se llama a la operación "conducir" (manejar)
para un objeto auto en realidad lo que se hace es enviar el mensaje "conducir" al objeto auto, que
procesa (ejecuta) el método correspondiente.

En la práctica un programa orientado a objetos es una secuencia de operaciones de los objetos que
actúan sus propios datos.
Clases
Ejemplo
En el mundo de la orientación a objetos, una clase es una plantilla (tipo de dato) para hacer o
construir objetos. Por ejemplo:

• Una clase Lavadora puede tener:


o Los atributos: nombreMarca, númeroSerie, capacidad y potencia.
o Las operaciones: encender(), apagar(), lavar(), aclarar().
Modelado y modelos
Cuando se diseña un problema en un lenguaje orientado a objetos, se debe pensar en dividir dicho
problema en objetos, o dicho de otro modo, es preciso identificar y seleccionar los objetos del
dominio del problema de modo que exista una correspondencia entre los objetos desde el punto de
vista de programación y los objetos del mundo real.

Las etapas necesarias para modelar un sistema y resolver en consecuencia un problema


empleando orientación a objetos son:
1. Identificación de los objetos que forman parte del modelo.
2. Agrupamiento en clases (tipos de objetos) de los objetos con características y
comportamiento comunes.
3. Identificación de los atributos y operaciones de cada una de las clases.
4. Identificación de las relaciones existentes entre las diferentes clases del modelo.

Se debe responder a la pregunta:


• ¿Qué tipos de cosas se convierten en objetos en los programas orientados a objetos?

La realidad es que la gama de casos es infinita y sólo dependen de las características del problema
a resolver y la imaginación del programador.
Modelado y modelos
Algunos casos podrían ser:

La correspondencia entre objetos de programación y objetos del mundo real se muestra en una
combinación entre datos y funciones.
Modelado y modelos
Modelo
Un modelo es una abstracción de cosas reales. Cuando se modela un sistema, se realiza una
abstracción ignorando los detalles que sean irrelevantes.

El modelo es una simplificación de la realidad que se consigue mediante una abstracción de modo
que esta abstracción facilite el diseño y la viabilidad de un sistema y al mismo tiempo que este
pueda ser comprendido, evaluado, analizado y criticado. Este modelo se expresa mediante un
lenguaje de modelado.

Se tiene que mencionar que el instrumento para representar un modelo es el modelado, el cual
pretende capturar las partes fundamentales o esenciales de un sistema, el cual se representa
mediante una notación gráfica.

Modelado es un medio de capturar ideas, relaciones, decisiones, y requerimientos en una notación


bien definida que se puede aplicar a muchos dominios diferentes. Modelado no solo significa cosas
diferentes para personas distintas, sino también utiliza diferentes piezas dependiendo de lo que se
está tratando de transmitir.
Modelado y modelos
Modelo
Un modelo es una simplificación de la realidad que se consigue mediante una abstracción. Un
modelo se expresa en un lenguaje de modelado y consta de notación (símbolos utilizados en los
modelo) y un conjunto de reglas que instruyen cómo utilizarlas. Las reglas son:

• Sintaxis, nos indica cómo se utilizan los símbolos para representar elementos y cómo se
combinan los símbolos en el lenguaje de modelado. La sintaxis es comparable con las
palabras del lenguaje natural; es importante conocer cómo se escriben correctamente y
cómo poner los elementos para formar una sentencia.
• Semántica, las reglas semánticas explican lo que significa cada símbolo y cómo se deben
interpretar, bien por sí misma o en el contexto de otros símbolos.
• Pragmática, las reglas de pragmática definen las intenciones de los símbolos a través de
los cuáles se consigue el propósito de un modelo y se hace comprensible para los demás.
Esta característica se corresponde en lenguaje natural con las reglas de construcción de
frases que son claras y comprensibles.
Modelado y modelos
Lenguaje de modelado
En diseño de sistemas, se modela por una importante razón de: gestionar la complejidad.

Para modelar un sistema de modo eficiente, se necesita una cosa muy importante que es: un
lenguaje que pueda describir el modelo.

Con un lenguaje formal de modelado, el lenguaje es abstracto aunque tan preciso como un
lenguaje de programación.

La precisión del lenguaje abstracto permite que un lenguaje sea legible por la máquina, de modo
que pueda ser interpretado, ejecutado y transformado entre sistemas.

Los elementos que constituyen un lenguaje de modelado se denominan notación.

Un lenguaje de modelado puede ser cualquier cosa que contiene una notación (un medio de
expresar el modelo) y una descripción de lo que significa esa notación (un meta-modelo).
Modelado y modelos
Lenguaje Unificado de Modelado (UML)
El Lenguaje Unificado de Modelado (UML, Unified Model Language), es el lenguaje estándar de
modelado para desarrollo de sistemas y de software.

UML en si es un lenguaje que tiene tanto sintaxis como semántica y se compone de:
pseudocódigo, código real, dibujos, programas, descripciones, etc.

El bloque básico de construcción de UML es un diagrama. Existen tipos diferentes, algunos con
propósitos muy específicos (diagramas de tiempo) y algunos con usos más genéricos (diagramas
de clases).

UML se ha convertido de facto en el estándar para modelado de aplicaciones software y ha crecido


su popularidad en el modelado de otros dominios. 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.
Modelado y modelos
Lenguaje Unificado de Modelado (UML)
Aunque existen diferentes enfoques y visiones de modelado, UML tiene un gran número de
ventajas que lo convierten en un lenguaje idóneo para un gran número de aplicaciones tales como:
• Diseño de software.
• Software de comunicaciones.
• Proceso de negocios.
• Captura de detalles acerca de un sistema, proceso u organización en análisis de
requisitos.
• Documentación de un sistema, proceso o sistema existente.

UML se ha aplicado y se sigue aplicando en un sinfín de dominios, tales como:


• Banca.
• Salud.
• Defensa.
• Computación distribuida.
• Sistemas empotrados.
• Sistemas en tiempo real.
• Etcétera.
Modelado y modelos
Lenguaje Unificado de Modelado (UML)
Un modelo UML tiene dos características muy importantes, que están estrechamente relacionadas
entre sí, que son:
• Estructura estática: describe los tipos de objetos más importantes para modelar el
sistema.
• Comportamiento dinámico: describe los ciclos de vida de los objetos y cómo
interactúan entre sí para conseguir la funcionalidad del sistema requerida.

El modelado de un sistema pretende capturar las partes fundamentales o esenciales de un sistema,


el cual se representa mediante una notación gráfica.
Modelado y modelos
Diagrama
En general, un modelo en UML se construye de uno o mas diagramas. Un diagrama gráficamente
representa cosas, y las relaciones entre estas cosas. Estas cosas pueden ser representaciones de
objetos del mundo real, construcciones de software puras, o una descripción del comportamiento de
algún otro objeto.

Es frecuente que una cosa individual se muestre en diagramas múltiples; donde cada diagrama
demuestra un interés particular, o vista, de la cosa que se esta modelando.

UML consta de un número de elementos gráficos que se combinan para formar diagramas.

Ya que UML es un lenguaje, dispone de reglas para combinar estos elementos; el conocimiento de
estos diagramas será importante para diseñar el modelo.

El propósito de los diagramas es representar múltiples vista de un sistema; este conjunto de vistas
múltiples se llama modelo. En la práctica un modelo será la descripción abstracta de un sistema o
un proceso; es decir una representación simplificada que permite comprender y simular.
Modelado y modelos
Diagrama
En nuestro caso, un modelo es un conjunto de diagramas que se puede examinar, evaluar u
modificar con la finalidad de comprender y desarrollar un sistema.

Se suele utilizar, a veces, el concepto de metamodelo como descripción de modo formal de los
elementos del modelado, la sintaxis y la semántica de la notación que permite su manipulación; en
esencia, es una descripción de la representación de las notaciones empleadas.
Modelado y modelos
Diagramas UML 2.5
Existe 14 diagramas en UML 2.5 que ayudan a modelar este comportamiento. La taxonomía de
estos diagramas se dividen en 2 grandes categorías principales: diagramas de estructura y
comportamiento.
Modelado y modelos
Diagramas de estructura
Los diagramas de estructura se utilizan para capturar la organización física de las cosas del
sistema; por ejemplo como se relacionan unos objetos con otros.

El modelo estructural representa el marco de trabajo del sistema y este marco de trabajo es el lugar
donde existen los demás componentes, de modo que los diagramas representan los elementos y
mecanismos para ensamblarlos.

Sin embargo el modelo estructural nunca describe el comportamiento dinámico del sistema.
Modelado y modelos
Diagramas de comportamiento
Los diagramas de comportamiento se central en el comportamiento de los elementos de un sistema
y describen la interacción en el sistema.

Representan la interacción entre los diagramas estructurales, en resumen el modelado de


comportamiento muestra la naturaleza dinámica del sistema.

Por ejemplo se puede utilizar diagramas de comportamiento para capturar requerimientos,


operaciones y cambios de los estados internos de los elementos.

También podría gustarte