Buscar este blog
jueves, 25 de febrero de 2016
jueves, 18 de febrero de 2016
1.2 lenguaje de modelado unificado:
diagrama de clases.
1.2.1¿Qué es el UML?
UML (Unified Modeling Language) es
un lenguaje que permite modelar, construir y documentar los elementos que
forman un sistema software orientado a objetos. ¿Qué quiere decir esto exactamente.
Muy sencillo: Para realizar un proyecto debemos antes realizar un esquema del
mismo. El UML nos permite mediante diagramas, plasmar de una forma detallada e
inteligible la solución al problema planteado. Pero no solo eso, tenemos que
organizar el proceso de diseño de tal forma que los analista, clientes,
desarrolladores y otras personas involucradas en el desarrollo del sistema lo
comprendan y convengan con él. El UML proporciona esta organización.
1.2.2 Diagramas del UML
El UML está compuesto por diversos
elementos gráficos que se combinan para conformar diagramas. También existen
unas reglas que combinan esto elementos pero de momento, vamos a ver los
diagramas. Los diagramas tienen como objetivo presentar diversas perspectivas
de un sistema. A esto se le llama Modelo. El modelo UML de un sistema es
similar a un modelo a escala de un edificio junto con la interpretación del
artista del edificio. Tenemos que tener en cuenta que un modelo UML describe lo
que supuestamente hará un sistema, pero no dice como implementar dicho sistema.
1.2.3 Diagrama de clases
Pensar en las cosas que tenemos a
nuestro alrededor. La mayoría de los que nos rodea tienen atributos o
propiedades y seguramente realizaran unas determinadas acciones que podemos
agrupar como conjunto de tareas.
Hasta
aquí todo correcto ¿no?. Pues avancemos un poquito más recordando algunos
conceptos de la programación orientada a objetos.
Estas cosas que tenemos a nuestro alrededor se
distribuyen en categorías (coches, lavadoras, muebles…). Y a estas categorías
las llamamos clases. Una clase es una categoría o grupo de cosas que tienen
atributos y acciones similares. Por ejemplo: cualquier cosa dentro de la clase
“lavadoras” tiene atributos como, la marca, el modelo, el número de serie y la
capacidad. También podemos observar que entre las acciones de esta clase se
encuentra: “agregar ropa”, “agregar detergente”, “activarse” y “sacar
ropa”.
El área superior contiene el nombre, en el área
central ponemos los atributos y en el área inferior las acciones u operaciones.
Un diagrama de clases está formado por varios rectángulos de este tipo
conectados por líneas que muestran la manera en que las clases se relacionan
entre sí.
Es
más sencillo desarrollar aplicaciones cuando el software representa clases de
Justo Fuentes 4 Programador de Aplicaciones Orientadas a Objetos cosas
reales. Los diagramas de clases facilitan las representaciones a partir de las
cuales los desarrolladores podrán trabajar. Además también permiten al analista
hablarles a los clientes en su propia terminología.
1.1 Elementos del modelo de objetos:
clases, objetos, abstracción, modularidad, encapsulamiento, herencia y
polimorfismo.
1.1.1 Clase
Es una descripción abstracta de un
grupo de objetos, que comparten varias características. Es una plantilla a
partir de la cual se generan objetos, llamados instancias de una clase. Una
clase puede tener muchas instancias y cada una es un objeto independiente. Es
un TDA pero además, dentro de la clase residen los datos de los lenguajes de
programación tradicionales ( números arreglos, cadenas y registros) así como
funciones y subrutinas que operan sobre ellos. Las funciones definidas en la
clase ( métodos) son el único medio de acceder a los datos privados de los
objetos instanciados de la clase. No se puede acceder a los datos
directamente.. Los datos están ocultos y eso asegura que no se pueden modificar
accidentalmente por funciones extremas al objeto.
Los
datos y funciones asociados se dicen que están encapsulados en una única
entidad o módulo. Si se desea modificar los datos de un objeto, se conoce
exactamente cuáles son las funciones que interactúan con el mismo. Esto
simplifica la escritura, depuración y mantenimiento del programa.
Una clase tiene:
Atributos: datos o variables que se caracterizan el estado de un objeto.
Métodos: Procedimientos o acciones que cambian el estado de un objeto. Los objetos se comunican unos con otros llamando a métodos.
1.1.2 Objeto
El elemento fundamental de la Programación Orientada a
Objetos es el objeto. Podemos definir un objeto como un conjunto complejo de
datos y programas que poseen estructura y forman parte de una organización.
Objeto es todo aquello distinguible dentro del universo de observación; es una
entidad que contiene los atributos que describen el estado de un objeto del mundo
real y las acciones que se asocian con el objeto del objeto del mundo real.
Objeto es combinar en una sola entidad datos y funciones que operan sobre esos
datos. Los objetos son entidades que existen en el tiempo, por ello deben ser
creados o instanciados ( normalmente a través de otros objetos ). Esta
operación se hace a través de operaciones especiales llamadas constructores o
inicializadores. Estas operaciones se ejecutarán implícitamente por el
compilador o explícitamente por el programador, mediante invocación a los
citados constructores.
1.1.3 Abstracción
La abstracción se basa en el
reconocimiento de las similitudes entre los objetos, situaciones o procesos en
el mundo real, y la decisión de concentrarse en éstas similitudes e ignorar por
un momento las diferencias. Un concepto califica como una abstracción si y solo
si puede ser descrito, comprendido y analizado independientemente del mecanismo
que será usado para realizarlo.
Definición:
Una abstracción describe las características esenciales de un objeto que lo
distingue de otro tipo de objetos, y por lo tanto proporciona límites conceptuales,
con respecto a la perspectiva del observador.
En
el proceso de abstracción se ignoran los detalles no esenciales, tratando en su
lugar con el modelo ideal y centrándose en el estudio de sus aspectos
esenciales. Una abstracción se enfoca en la vista exterior de un objeto y por
lo tanto sirve para separar el comportamiento esencial del objeto de su
implantación. Esto da lugar a la división comportamiento / implantación
(barrera de la abstracción). Por el principio de menor infiltración, la interface
del objeto proporciona el comportamiento esencial del objeto y nada más. Por el
principio de la menor sorpresa, a través de la cual una abstracción captura el
comportamiento completo de un objeto; y que no ofrece sorpresas o efectos
laterales que vayan más allá del alcance de la abstracción.
1.1.4 Modularidad
Es el acto de
dividir un programa en componentes individuales. Puede reducir su complejidad
en algún grado. Aunque dividir un programa ayuda, una justificación más
poderosa para dividir un programa es que crea un número de límites bien
definidos y documentados en el programa. Estos límites, o interfaces, son
invaluables en la comprensión del programa. La modularización consiste en
dividir un programa en módulos los cuales pueden ser compilados separadamente,
pero tienen conexiones con otros módulos. Las conexiones entre módulos son las
suposiciones que los módulos hacen acerca de otros módulos. La mayoría de los
lenguajes que soportan módulos como un concepto separado también distinguen
entre la interfase de un módulo y su implantación ( por ejemplo en C++). Los
módulos sirven como contenedores físicos en los cuales declaramos las clases y
los objetos de nuestro diseño lógico.
1.1.5 Encapsulación
La abstracción
y la encapsulación son conceptos que se complementan: la abstracción se enfoca
en observar el comportamiento de un objeto, la encapsulación se enfoca en la
implantación que nace de ese comportamiento. La encapsulación se mejora a
través de la ocultación de la información, la cual consiste en ocultar todos
los secretos de un objeto que no contribuyen a sus características esenciales;
la estructura de un objeto se oculta, así como la implantación de sus métodos.
La encapsulación proporciona barreras explícitas entre abstracciones
diferentes. Por lo tanto una clase debe tener 2 partes: una interfase y una
implantación . La interfase de una clase captura sólo su vista externa. La
implantación de un clase comprende la representación de la abstracción así como
los mecanismos que realiza el comportamiento deseado. La encapsulación permite
incluir en una sola entidad ( el módulo u objeto ) la información ( los datos o
atributos ) y las operaciones ( los métodos o funciones ) que operan sobre esa
información.
Definición
de Encapsulación: es el proceso de dividir los elementos de una abstracción que
está formada por su estructura y su comportamiento; sirve para separar la
interfase de una abstracción y su implantación.
1.1.6 Herencia
La herencia es
el mecanismo para compartir automáticamente métodos y datos entre clases, en
esencia la herencia es una relación entre clases , en donde una clase comparte
como se mencionó la estructura o comportamiento definida en una clase o en
varias clases. La herencia supone una clase base y una jerarquía de clases que
contienen las clases derivadas de la clase base. Por ejemplo: supongamos la
clase Persona y las subclases Empleado y Doctor.
La
clase base es Persona y las clases Empleado y Doctor son clase derivadas ya que
Persona les hereda características comunes como nombre, edad, sexo, etc. Y
estas a su vez tienen características propias como título, ingresos, etc.
1.1.7 Polimorfismo
Una de las características
fundamentales de la OOP es el polimorfismo, que no es otra cosa que la
posibilidad de construir varios métodos con el mismo nombre, pero con relación
a la clase a la que pertenece cada uno, con comportamientos diferentes. Esto
conlleva la habilidad de enviar un mismo mensaje a objetos de clases
diferentes. Estos objetos recibirían el mismo mensaje global pero responderían
a él de formas diferentes; por ejemplo, un mensaje "+" a un objeto
ENTERO significaría suma, mientras que para un objeto STRING significaría
concatenación ("pegar" strings uno seguido al otro) Polimorfismo es
una característica que permite que objetos diferentes puedan responder de modo
diferente al mismo mensaje. En su expresión más simple, es el uso de un nombre
o símbolo para representar o significar más de una acción.
Y
nos da la posibilidad de construir varios métodos con el mismo nombre, pero con
relación a la clase a la que pertenece cada uno, con comportamientos
diferentes. Esto conlleva la habilidad de enviar un mismo mensaje a objetos de
clases diferentes. Estos objetos recibirían el mismo mensaje global pero responderían
a él de formas diferentes; por ejemplo, un mensaje "+" a un objeto
ENTERO significaría suma, mientras que para un objeto STRING significaría
concatenación ("pegar" strings uno seguido al otro) Formalmente el
polimorfismo puede definirse como: "el mecanismo que permite definir e
Invocar funciones idénticas en denominación e interfaz, pero con implementaron
diferente".
Suscribirse a:
Entradas (Atom)