viernes, 6 de diciembre de 2013




 Sistema: 


Adquisición de un vehículo


            El concesionario PROGRAM MOTORS representa el sistema generalizado, en el cual interactúan las siguientes entidades: clientes, compañías de importación, fabrica, administración, contabilidad y división bancaria; esta última actúa a su vez como un almacén de datos. Las interacciones entre las entidades y el sistema son consideradas como las acciones concisas efectuadas como: compra y pedido, envíos, reporte de ventas, envíos de facturas y cheques. Para que este sistema pueda funcionar se requiere la existencia de productos y un flujo constante de información entre las terminales, los procesos y el sistema en sí.



Diagrama de Contexto






Diagrama de Clases






 Diagrama de Casos de Uso




jueves, 28 de noviembre de 2013

Herramientas para Diagramar en POO (Diseño y Planificación). Notación UML


Lenguaje Unificado de Modelado (LUM o UML, por sus siglas en inglés, Unified Modeling Language) es el lenguaje de modelado de sistemas de software más conocido y utilizado en la actualidad; está respaldado por el OMG (Object Management Group). Es un lenguaje gráfico para visualizar, especificar, construir y documentar un sistema. UML ofrece un estándar para describir un "plano" del sistema (modelo), incluyendo aspectos conceptuales tales como procesos de negocio, funciones del sistema, y aspectos concretos como expresiones de lenguajes de programación, esquemas de bases de datos y compuestos reciclados.

Es importante remarcar que UML es un "lenguaje de modelado" para especificar o para describir métodos o procesos. Se utiliza para definir un sistema, para detallar los artefactos en el sistema y para documentar y construir. En otras palabras, es el lenguaje en el que está descrito el modelo.

Se puede aplicar en el desarrollo de software gran variedad de formas para dar soporte a una metodología de desarrollo de software (tal como el Proceso Unificado Racional o RUP), pero no especifica en sí mismo qué metodología o proceso usar.

UML no puede compararse con la programación estructurada, pues UML significa Lenguaje Unificado de Modelado, no es programación, solo se diagrama la realidad de una utilización en un requerimiento. Mientras que, programación estructurada, es una forma de programar como lo es la orientación a objetos, sin embargo, la programación orientada a objetos viene siendo un complemento perfecto de UML, pero no por eso se toma UML sólo para lenguajes orientados a objetos.



UML cuenta con varios tipos de diagramas, los cuales muestran diferentes aspectos de las entidades representadas.




        
      El Lenguaje Unificado de Modelado preescribe un conjunto de notaciones y diagramas estándar para modelar sistemas orientados a objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. Mientras que ha habido muchas notaciones y métodos usados para el diseño orientado a objetos, ahora los modeladores sólo tienen que aprender una única notación.
UML se puede usar para modelar distintos tipos de sistemas: sistemas de software, sistemas de hardware, y organizaciones del mundo real. UML ofrece nueve diagramas en los cuales modelar sistemas.

  • Diagramas de Casos de Uso para modelar los procesos 'business'.
  • Diagramas de Secuencia para modelar el paso de mensajes entre objetos.
  • Diagramas de Colaboración para modelar interacciones entre objetos.
  • Diagramas de Estado para modelar el comportamiento de los objetos en el sistema.
  • Diagramas de Actividad para modelar el comportamiento de los Casos de Uso, objetos u operaciones.
  • Diagramas de Clases para modelar la estructura estática de las clases en el sistema.
  • Diagramas de Objetos para modelar la estructura estática de los objetos en el sistema.
  • Diagramas de Componentes para modelar componentes.
  • Diagramas de Implementación para modelar la distribución del sistema.

       UML es una consolidación de muchas de las notaciones y conceptos más usadas orientados a objetos. Empezó como una consolidación del trabajo de Grade Booch, James Rumbaugh, e Ivar Jacobson, creadores de tres de las metodologías orientadas a objetos más populares.


       

     En 1996, el Object Management Group (OMG), un pilar estándar para la comunidad del diseño orientado a objetos, publicó una petición con propósito de un metamodelo orientado a objetos de semántica y notación estándares. UML, en su versión 1.0, fue propuesto como una respuesta a esta petición en enero de 1997. Hubo otras cinco propuestas rivales. Durante el transcurso de 1997, los seis promotores de las propuestas, unieron su trabajo y presentaron al OMG un documento revisado de UML, llamado UML versión 1.1. Este documento fue aprobado por el OMG en Noviembre de 1997. El OMG llama a este documento OMG UML versión 1.1. El OMG está actualmente en proceso de mejorar una edición técnica de esta especificación, prevista su finalización para el 1 de abril de 1999.

Lenguajes de la Programación Orientada a Objetos (POO) Usados en la Actualidad


Lenguajes Orientados a Objetos, Recursos y Comparaciones


“Simula” (1967) es aceptado como el primer lenguaje que posee las características principales de un lenguaje orientado a objetos. Fue creado para hacer programas de simulación, en donde los "objetos" son la representación de la información más importante. “Smalltalk” (1972 a 1980) es posiblemente el ejemplo canónico, y con el que gran parte de la teoría de la programación orientada a objetos se ha desarrollado.

Entre los lenguajes orientados a objetos se destacan los siguientes:


C


Creado en 1972 por Dennis MacAlistair Ritchie en los laboratorios Bell como evolución del anterior lenguaje B. Es un lenguaje orientado a la implementación de sistemas operativos, concretamente Unix que fue desarrollado en C.

Es un lenguaje de propósito general muy utilizado cuyas principales características son:

-Combina características de los lenguajes de bajo nivel con los de alto nivel, lo que permite crear programas eficientes.

-Es un lenguaje pequeño ya que sólo ofrece sentencias de control sencillas y funciones.

-Permite la programación estructurada y el diseño modular lo que mejora la apariencia, comprensión y mantenimiento de los programas.

-Se realizan programas portables que se pueden ejecutar sin necesidad de realizar cambios en diversos ordenadores.

-Incluye la utilización de punteros. Un puntero es una variable que apunta (contiene) a la dirección de memoria de otra variable.

-Modularidad, el programa se puede dividir en módulos que se tratan de manera independiente.

Todo programador sabe programar en C debido a que es uno de los primeros lenguajes que se aprenden a utilizar. El motivo de que sea uno de los primeros es porque varios lenguajes de programación están formados a partir de C y es necesario conocer sus estructuras e instrucciones.

El lenguaje C es uno de los más utilizados en la actualidad ya que nos permite crear programas eficientes, característica muy importante a la hora de realizar un programa.  Es un lenguaje simple y fácil de entender, lo que reduce los tiempos de desarrollo y comprensión de los programas.

Por último decir que es muy común programar sistemas en C ya que nos permite tener un control casi absoluto del ordenador.

Ejemplo de un programa en C: 

#include <stdio.h>
int main()
{
  printf("Hola mundo");
  return 0;
}






C++


El lenguaje de programación surgió a mediados de los 80 gracias a Bjarne Stroustrup y fue desarrollado a partir del lenguaje C en los laboratorios AT&T Bell.

Es un lenguaje orientado a objetos aunque también tiene las mismas características que C, como por ejemplo su eficiencia y el uso de punteros.

Como es lógico, y debido a que se creó a partir de C, C++ cuenta con diversas mejoras y avances respecto de C, lo que le hace un lenguaje más completo y por ello que los programadores tienden a programar más en este lenguaje. Un programa en C++ soporta instrucciones escritas en C, pero un programa escrito en C no nos permite ejecutar instrucciones de C++, por lo que viéndolo de ésta forma resulta más cómodo programar en C++.

Es un lenguaje muy popular debido a la eficiencia y robustez de sus programas. Además de ser un lenguaje orientado a objetos, también nos permite realizar programas estructurados, lo cual nos da libertad a la hora de programar. Nos da cierta libertad debido a que no es tan estricto a la hora de escribir código como en C.

Es un lenguaje compilado, es decir, compila directamente al código que entienden los ordenadores por lo que es uno de los lenguajes más rápidos. Es portable al gran número de compiladores que permiten utilizar los programas en diversos ordenadores con diferentes sistemas operativos.

Soporta varios paradigmas de programación. Un paradigma de programación (dicho de manera informal) es una forma de pensar a la hora de programar, el más utilizado es el paradigma de programación orientada a objetos.

Un aspecto importante a destacar es la amplia cantidad de manuales, libros y código fuente disponibles sobre C++, lo que nos da ciertas facilidades a la hora de aprender a programarlo.

Programa en C++:

#include <iostream>
using namespace std;
int main()
{
    cout << "Hola Mundo" << endl;
    return 0;
}






Java


Surgió en 1991 gracias a un grupo de ingenieros de Sun Microsystems como lenguaje de programación para electrodomésticos.Fue en 1995 cuando Java comenzó a utilizarse como lenguaje de programación de ordenadores.

Las características más importantes de este lenguaje de programación son:
-Es un lenguaje orientado a objetos. Un objeto se compone de atributos (estado del objeto) y métodos (comportamiento) que actúan sobre esos  atributos. Para comprender lo que es un objeto, voy a mostrarles una analogía del mundo real: al igual que en el mundo virtual, en el mundo real los objetos tienen un estado y un comportamiento. Por ejemplo, un coche es un objeto que tiene una serie de estados o atributos (matrícula, marca, modelo, color, marchas) y una serie de comportamientos o métodos (corriendo, parado, aparcando, cambio de marcha). Todos los objetos tienen un identificador único que los diferencia del resto de objetos. En el ejemplo anterior el identificador del coche es la matrícula. 

-Modularidad, nos permite dividir los programas en pequeños módulos denominados clases, para reducir la complejidad del problema y, en caso de producirse un fallo, éste solamente afecta al módulo donde se produjo y no a todo el programa.

-Es robusto, es decir, es un lenguaje de programación fiable que reacciona adecuadamente ante situaciones excepcionales.

-Es un lenguaje de programación portable que nos permite utilizar los programas desarrollados en java en cualquier ordenador con cualquier sistema operativo.

-Dinámico, podemos compilar y ejecutar los programas en tiempo real.

-Seguro, elimina los accesos ilegales a memoria que realizan los punteros en C.

En definitiva, Java es uno de los lenguajes más utilizados actualmente ya que podemos reutilizar el código de los programas y su arquitectura neutral nos permite utilizarlo en cualquier arquitectura y sistema operativo independientemente de la máquina en que se realizó el programa.

Es un lenguaje fácil de aprender lo que reduce los tiempos de formación y aprendizaje de las personas que lo vayan a utilizar.Las perspectivas de futuro son que prácticamente toda la programación será orientada a objetos, aspecto con el que ya cuenta Java y permite acercarnos a la forma de pensar de las personas.

Actualmente Java cuenta con diversos entornos de desarrollo muy buenos como son Netbeans o Eclipse.

Programa en Java:

public class Hello {
  public static void main(String[] args) {
    System.out.println("Hola mundo");
  }
}







Python 

Python apareció en 1991 gracias a Guido Van Rossum. Se dice que es un lenguaje multiparadigma ya que soporta diversos tipos de paradigmas de programación como son la orientación a objetos, la programación imperativa o, en menor medida, la programación funcional.

Este lenguaje de programación es soportado por varios sistemas operativos, característica conocida como portabilidad.

En cuanto al código, es un lenguaje simple y sencillo con instrucciones claras y fáciles de leer. Se utilizan clases y sentencias de control, sin embargo, no presenta encapsulación. Se pueden escribir instrucciones en código C para poder ejecutar el código de una manera más rápida, por lo que Python es compatible con instrucciones de C. También cabe destacar que es un lenguaje interpretado por lo que no es necesario compilar el código antes de ejecutarlo, lo cual reduce los tiempos de espera.

Es un lenguaje tipificado que cuenta con un gran número de librerías, tipos de datos y funciones que sirven de mucha ayuda al programador y simplifican su trabajo.

Uno de los aspectos más importantes es que se trata de un lenguaje libre y gratuito por lo que se pueden realizar copias del software y modificarlo como se quiera con tal de mejorarlo. Como consecuencia de ello existen diversas versiones de Python.

Se utiliza con mucha frecuencia gracias a que es un lenguaje de propósito general que nos permite realizar desde cualquier tipo de programa hasta desarrollar páginas web.








PHP

PHP fue creado en 1995 por Rasmus Lerdorf para el desarrollo de aplicaciones web dinámicas y se puede incorporar directamente a páginas HTML. PHP es interpretado y ejecutado en el lado del servidor web y posteriormente se envía el resultado al navegador.

Es un lenguaje "Open Source", es decir, es software libre al cual pueden acceder todos los usuarios.PHP fue creado a partir de C, C++, Java, Pearl y Python por lo que ,aparte de tener unas características propias, tiene una mezcla de características de los lenguajes citados anteriormente.

La sintaxis es muy simple, clara y fácil de aprender ya que no es necesario definir los tipos de variables y nos permite utilizar el paradigma de la programación orientada a objetos, así como, la programación orientada a procedimientos, imperativa y reflexiva. Como consecuencia de ello, obtenemos un código sencillo, ordenado, estructurado y fácil de manejar.

Al igual que el resto de lenguajes citados, es portable y nos permite utilizarlo en cualquier servidor web de cualquier sistema operativo. Como se ha comentado anteriormente, PHP fue diseñado para Microsoft y sus sistemas operativos, por lo que si se quiere utilizar en otros sistemas operativos que no sean de Microsoft es necesaria una adaptación.

Es un lenguaje robusto y estable que dota de gran seguridad a las páginas web contra ataques no deseados.Por último destacar su gran capacidad para conectarse a cualquier base de datos como pueden ser MySQL, PostgreSQL, Oracle, etc.

En definitiva, la mayor parte de la programación de hoy en día se centra en la programación orientada a objetos mediante el empleo de clases, métodos y sus correspondientes objetos.
Para elegir el lenguaje de programación que mejor se adapte a las aplicaciones a realizar, hay que analizar las características de cada uno de ellos y ver cuál se adapta mejor a los requisitos de dicha aplicación.

       Muchos de estos lenguajes de programación no son puramente orientados a objetos, sino que son híbridos que combinan la POO con otros paradigmas.

Al igual que C++, otros lenguajes, como OOCOBOL, OOLISP, OOPROLOG y Object REXX, han sido creados añadiendo extensiones orientadas a objetos a un lenguaje de programación clásico.

Para obtener la información completa visita nuestras  Fuentes Electrónicas consultadas:


Conceptos Básicos de la Programación Orientada a Objetos POO



La programación orientada a objetos es una forma de programar que trata de encontrar una solución a estos problemas. Introduce nuevos conceptos, que superan y amplían conceptos antiguos ya conocidos. Entre ellos destacan los siguientes:

Clase

   Definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas. La tendencia natural del individuo es la de clasificar los objetos según sus características comunes (clase). Por ejemplo, las personas que asisten a la universidad se pueden clasificar (haciendo abstracción) en estudiante, docente, empleado e investigador.

La clase puede definirse como la agrupación o colección de objetos que comparten una estructura común y un comportamiento común. Es una plantilla que contiene la descripción general de una colección de objetos. Consta de atributos y métodos que resumen las características y el comportamiento comunes de un conjunto de objetos.

Herencia

La herencia sirve para crear objetos que incorporen propiedades y métodos de otros objetos. Así podremos construir unos objetos a partir de otros sin tener que reescribirlo todo. (Por ejemplo, herencia de la clase C a la clase D) es la facilidad mediante la cual la clase D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos métodos y variables públicas declaradas en C. Los componentes registrados como "privados" (private) también se heredan, pero como no pertenecen a la clase, se mantienen escondidos al programador y sólo pueden ser accedidos a través de otros métodos públicos. Esto es así para mantener hegemónico el ideal de POO.

Objeto
Instancia de una clase. Entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos), los mismos que consecuentemente reaccionan a eventos. Se corresponden con los objetos reales del mundo que nos rodea, o con objetos internos del sistema (del programa). Es una instancia a una clase.

Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vida real. Por ejemplo vamos a pensar en un coche para tratar de modelizarlo en un esquema de POO. Diríamos que el coche es el elemento principal que tiene una serie de características, como podrían ser el color, el modelo o la marca. Además tiene una serie de funcionalidades asociadas, como pueden ser ponerse en marcha, parar o aparcar.
Pues en un esquema POO el coche sería el objeto, las propiedades serían las características como el color o el modelo y los métodos serían las funcionalidades asociadas como ponerse en marcha o parar.
Método

Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema. La implementación de los métodos no es visible fuera de objeto.

Evento

Es un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento la reacción que puede desencadenar un objeto; es decir, la acción que genera.

Atributos

Son los datos o variables que caracterizan al objeto y cuyos valores en un momento dado indican su estado. Un atributo es una característica de un objeto. Mediante los atributos se define información oculta dentro de un objeto, la cual es manipulada solamente por los métodos definidos sobre dicho objeto

Un atributo consta de un nombre y un valor. Cada atributo está asociado a un tipo de dato, que puede ser simple (entero, real, lógico, carácter, string) o estructurado (arreglo, registro, archivo, lista, etc.)

Mensaje

Una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó o para obtener el valor de un atributo público.

Encapsulamiento

Significa reunir todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.

Polimorfismo

Comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre; al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O, dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++.

Estado interno

Es una variable que se declara privada, que puede ser únicamente accedida y alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). No es visible al programador que maneja una instancia de la clase.


        Componentes de un objeto

Atributos, identidad, relaciones y métodos.

Identificación de un objeto

Un objeto se representa por medio de una tabla o entidad que esté compuesta por sus atributos y funciones correspondientes.


En comparación con un lenguaje imperativo, una "variable" no es más que un contenedor interno del atributo del objeto o de un estado interno, así como la "función" es un procedimiento interno del método del objeto.

Para obtener la información completa visita nuestras  Fuentes Electrónicas consultadas: