jueves, 25 de febrero de 2016

EJEMPLOS DE UML



EJEMPLOS DE UML










UML

EL LENGUAJE UNIFICADO DE MODELADO (UML)

UML son las siglas de “Unified Modeling Language” o “Lenguaje Unificado de Modelado”. Se trata de un estándar que se ha adoptado a nivel internacional por numerosos organismos y empresas para crear esquemas, diagramas y documentación relativa a los desarrollos de software (programas informáticos).

¿QUÉ ES Y PARA QUÉ SIRVE UML?

El término “lenguaje” ha generado bastante confusión respecto a lo que es UML. En realidad el término lenguaje quizás no es el más apropiado, ya que no es un lenguaje propiamente dicho, sino una serie de normas y estándares gráficos respecto a cómo se deben representar los esquemas relativos al software. Mucha gente piensa por confusión que UML es un lenguaje de programación y esta idea es errónea: UML no es un lenguaje de programación. Como decimos, UML son una serie de normas y estándares que dicen cómo se debe representar algo.
UML es una herramienta propia de personas que tienen conocimientos relativamente avanzados de programación y es frecuentemente usada por analistas funcionales (aquellos que definen qué debe hacer un programa sin entrar a escribir el código) y analistas-programadores (aquellos que dado un problema, lo estudian y escriben el código informático para resolverlo en un lenguaje como Java, C#, Python o cualquier otro). 



Los principales beneficios de UML son:
  • Mejores tiempos totales de desarrollo (de 50 % o más).
  • Modelar sistemas (y no sólo de software) utilizando conceptos orientados a objetos.
  • Establecer conceptos y artefactos ejecutables.
  • Encaminar el desarrollo del escalamiento en sistemas complejos de misión crítica.
  • Crear un lenguaje de modelado utilizado tanto por humanos como por máquinas.
  • Mejor soporte a la planeación y al control de proyectos.
  • Alta reutilización y minimización de costos.



viernes, 19 de febrero de 2016

Introducción

Programación orientada a objetos

La programación orientada a objetos, es un paradigma de programación que usa objetos en sus interacciones, para diseñar aplicaciones y programas informáticos. 


Está basada en varias técnicas, incluyendo,  abstracción,  modularidad y encapsulamiento, herencia y polimorfismo.



Por otra parte podemos afirmar que la Programación (POO) orientada a objetos es la es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación.

Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en términos de objetos, propiedades, métodos y otras cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que permita soltarnos un poco con este tipo de programación.

Clases

La clase es un modelo o prototipo que define las variables y métodos comunes a todos los objetos de cierta clase. También se puede decir que una clase es una plantilla genérica para un conjunto de objetos de similares características.

Por otro lado, una instancia de una clase es otra forma de llamar a un objeto. En realidad no existe diferencia entre un objeto y una instancia. Sólo que el objeto es un término más general, pero los objetos y las instancias son ambas representación de una clase.

Ejemplo: 


En el mundo real, normalmente tenemos muchos objetos del mismo tipo. Por ejemplo, nuestro teléfono celular es sólo uno de los miles que hay en el mundo. Si hablamos en términos de la programación orientada a objetos, podemos decir que nuestro objeto celular es una instancia de una clase conocida como "celular". Los celulares tienen características (marca, modelo, sistema operativo, pantalla, teclado, etc.) y comportamientos (hacer y recibir llamadas, enviar mensajes multimedia, transmisión de datos, etc.).



Cuando se fabrican los celulares, los fabricantes aprovechan el hecho de que los celulares comparten esas características comunes y construyen modelos o plantillas comunes, para que a partir de esas se puedan crear muchos equipos celulares del mismo modelo. A ese modelo o plantilla le llamamos clase, y a los equipos que sacamos a partir de ella la llamamos objetos.


Objetos 

Informalmente, un objeto representa a una entidad, ya sea física, conceptual o software. Un objeto representa un elemento, unidad o entidad individual e identificable, ya sea real o abstracta, con un papel bien definido en el dominio del problema.


En términos generales, se define un objeto como cualquier cosa que tenga una frontera definida con nitidez.






Un objeto es algo que tiene:



  • Estado
  • Comportamiento
  • Identidad
Estado del objeto


  1. El estado de un objeto es una de las posibles condiciones en que un objeto puede existir. 
  2. El estado de un objeto normalmente cambia con el tiempo
  3. El estado de un objeto es usualmente implementado por un conjunto de propiedades llamadas atributos, mas los enlaces que el objeto pueda tener con otros objetos
  4. El estado lo establecen los valores de los atributos y enlaces
Comportamiento del objeto

  1. El comportamiento determina como un objeto actúa y reacciona
  2. El comportamiento define la manera en la que un 
    objeto responde a las peticiones de otros objetos
  3. El comportamiento visible de un objeto se modela con un conjunto de mensajes a los que el puede responder
  4. Los mensajes se implementan como las operaciones del objeto

Identidad del objeto

Cada objeto tiene una identidad única, aun si su estado en un momento dado, es idéntico al de otros objetos.



Herencia 

La herencia representa una jerarquía de abstracciones (clases). Básicamente, la herencia define una relación entre clases, el la que una clase comparte la estructura de comportamiento definida en una o más clases. De forma simple, la herencia es el proceso mediante el cual un objeto adquiere las propiedades de otro.

Cada vez que se especializa una clase, esta clase hereda atributos y comportamientos de su superclase; pero además se añaden nuevos comportamientos o se modifican alguno de los ya heredados

Semánticamente, la herencia denota una relación ; “es un”.

Por ejemplo, un oso es un tipo de mamífero, una casa es un tipo de bien inmueble.

Así la herencia implica una jerarquía de generalización/especialización, en la que una subclase especializa el comportamiento o estructura más general de sus superclases.














Abstracción

Aún cuando existe una multitud de aves diferentes, podemos reconocer un AVE en cuanto la vemos, incluso aún cuando esa ave en particular, no lo hayamos visto nunca. La abstracción se centra en las características esenciales de algún objeto, en relación a la perspectiva del observador.

Abstracción consiste en aislar un elemento de su contexto o del resto de los elementos que lo acompañan, identificando sus características esenciales,las cuales lo distinguen de los demás. En otras palabras, es la capacidad de conceptualizar entidades genéricas de información a partir de cosas concretas o en captar las características esenciales de un objeto, así como su comportamiento.




Encapsulamiento

El encapsulamiento consiste en unir en la clase las características y comportamientos, esto es, las variables y métodos. Es tener todo esto es una sola entidad. En los lenguajes estructurados esto era imposible. Es evidente que el encapsulamiento se logra gracias a la abstracción y el ocultamiento que veremos a continuación.

La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya que tendremos a las clases como cajas negras donde sólo se conoce el comportamiento pero no los detalles internos, y esto es conveniente porque nos interesará será conocer qué hace la clase pero no será necesario saber cómo lo hace.

Al encapsular los datos del objeto, se maximiza la reutilizabilidad, se reduce la dependencia de los datos y se minimiza el tiempo de depuración.

En otras palabras, es la capacidad de esconderlos detalles de como funciona algo, detrás de una interfaz.

  • Solo se necesita conocerla interfaz para poder usar alguna cosa
  • El usuario no se ve afectado si se cambia o mejora el funcionamiento interno de algo, mientras se mantenga la interface
  • El estado de un objeto no puede ser modificado por los objetos clientes directamente.
  • Los valores de los atributos solo pueden mostrarse o cambiarse por las operaciones proporcionadas en el interface

Polimorfismo

Polimorfismo es la habilidad que adquieren los objetos de responder en forma diferente al mismo mensaje. Es decir, el mismo mensaje que se envía a muchos tipos de objetos, toma “muchas formas” y de ahí viene el término polimorfismo.

Polimorfismo es la habilidad de esconder diferentes implementaciones tras una sola interface.

Ejemplo

Pensemos en las Figuras Geométricas. Todas las Figuras Geométricas tienen como característica el poder calcular su área. Sin embargo, cada figura puede realizar esta operación de forma distinta.

Modularidad

Es la propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes. Estos módulos se pueden compilar por separado, pero tienen conexiones con otros módulos. Al igual que la encapsulación, los lenguajes soportan la modularidad de diversas formas.