CARACTERISTICAS, VENTAJAS Y DESVENTAJAS DE LA P.O.O.
La programación Orientada a
objetos (POO) 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. La programación
Orientada a objetos (POO) 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.
Orientada a
Objetos (OO) se define
por herencia, encapsulación, métodos y mensajes.
Es un modelo de simula el
comportamiento ya sea de una parte del mundo real o imaginario.
Abstracción
de datos: Cada objeto
en el sistema sirve como modelo de un "agente" abstracto que puede
realizar trabajo, informar y cambiar su estado, y "comunicarse" con
otros objetos en el sistema sin revelar cómo se implementan estas
características. Los procesos, las funciones o los métodos pueden también ser
abstraídos y cuando lo están, una variedad de técnicas son requeridas para
ampliar una abstracción.
Encapsulamiento: Significa reunir a 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.
Principio
de ocultación: Cada objeto
está aislado del exterior, es un módulo natural, y cada tipo de objeto expone
una interfaz a otros objetos que específica cómo pueden interactuar con los
objetos de la clase. El aislamiento protege a las propiedades de un objeto
contra su modificación por quien no tenga derecho a acceder a ellas, solamente
los propios métodos internos del objeto pueden acceder a su estado. Esto
asegura que otros objetos no pueden cambiar el estado interno de un objeto de
maneras inesperadas, eliminando efectos secundarios e interacciones
inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a
los datos internos del objeto de una manera controlada y limitando el grado de
abstracción. La aplicación entera se reduce a un agregado o rompecabezas de
objetos.
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++.
La
Herencia: las clases no están aisladas,
sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos
heredan las propiedades y el comportamiento de todas las clases a las que
pertenecen. La herencia organiza y facilita el polimorfismo y el
encapsulamiento permitiendo a los objetos ser definidos y creados como tipos
especializados de objetos preexistentes. Estos pueden compartir (y extender) su
comportamiento sin tener que volver a implementarlo. Esto suele hacerse
habitualmente agrupando los objetos en clases y estas
en árboles o enrejados que reflejan un comportamiento
común. Cuando un objeto hereda de más de una clase se dice que
hay herencia múltiple.
Los objetos son entidades autónomas que
tienen un estado y responden a mensajes.
Las clases agrupan los objetos por sus
atributos y operaciones.
Todas tienen el común de usar objetos como una encapsulación para
proteger los datos con todas las operaciones legales que actúan sobre esa
información oculta
METODOLOGÍAS “ORIENTADAS A OBJETOS”:
Adaptación: mezclar una aproximación
orientada a objetos con una metodología bien conocida de desarrollo
estructural.
Asimilación: usar una metodología orientada a
objetos para desarrollar sistemas de software, pero que siguen el modelo tradicional
del ciclo de vida del software.
VENTAJAS Y DESVENTAJAS DE LA P.O.O.
VENTAJAS:
Los lenguajes orientados a objetos presentan las
siguientes ventajas:
Lo interesante de la POO es que proporciona
conceptos y herramientas con las cuales se modela y representa el mundo real
tan fielmente como sea posible.
Flexibilidad: Si partimos del hecho que mediante la definición de clases
establecemos módulos independientes, a partir de los cuales podemos definir
nuevas clases, entonces podemos pensar en estos módulos como bloques con los
cuales podemos construir diferentes programas.
Extensibilidad: Gracias a la modularidad y a la herencia una
aplicación diseñada bajo el paradigma de la orientación a objetos puede ser
fácilmente extensible para cubrir necesidades de crecimiento de la aplicación.
Reusabilidad. Cuando
hemos diseñado adecuadamente las clases, se pueden usar en distintas partes del
programa y en numerosos proyectos.
Una vez que
hemos definido a la entidad persona para utilizarla en una aplicación de
negocios, por mencionar un ejemplo, y deseamos construir a continuación una
aplicación, digamos de deportes, en donde requerimos definir a la misma entidad
persona, no es deseable volver a escribir la definición para la entidad
persona. Por medio de la reusabilidad podemos utilizar una clase definida
previamente en las aplicaciones que nos sea conveniente. Es claro que la
flexibilidad con la que se definió la clase va a ser fundamental para su
reutilización.
Mantenibilidad. Las clases que conforman una aplicación, vistas como módulos
independientes entre sí, son fáciles de mantener sin afectar a los demás
componentes de la aplicación.
Debido a la sencillez para abstraer el problema, los
programas orientados a objetos son más sencillos de leer y comprender, pues nos
permiten ocultar detalles de implementación dejando visibles sólo aquellos
detalles más relevantes.
Modificabilidad. La
facilidad de añadir, suprimir o modificar nuevos objetos nos permite hacer
modificaciones de una forma muy sencilla.
Fiabilidad. Al
dividir el problema en partes más pequeñas podemos probarlas de manera
independiente y aislar mucho más fácilmente los posibles errores que puedan
surgir.
Conclusión de las Ventajas:
·
Fomenta
la reutilización y extensión del código.
·
Permite
crear sistemas más complejos.
·
Relacionar
el sistema al mundo real.
·
Facilita
la creación de programas visuales.
·
Construcción
de prototipos
·
Agiliza
el desarrollo de software
·
Facilita
el trabajo en equipo
·
Facilita
el mantenimiento del software
DESVENTAJAS:
La programación orientada a objetos presenta también
algunas desventajas como pueden ser:
A pesar de que las ventajas de la programación orientada a objetos
superan a las limitaciones de la misma, podemos encontrar algunas
características no deseables en ésta.
Limitaciones para el programador. No obstante que la tecnología
orientada a objetos no es nueva, un gran porcentaje de programadores no están
familiarizados con los conceptos de dicha tecnología. En otras palabras, la
lógica de la programación estructurada sigue siendo predominante en la mayoría
de los desarrolladores de software, después de haber revisado de forma breve
los principios de la programación orientada a objetos, nos es claro que en ésta
se requiere una lógica de pensamiento totalmente diferente a la lógica
comúnmente utilizada para la programación estructurada.
Tamaño excesivo en las aplicaciones resultantes. La gran mayoría
de los equipos de cómputo cuentan con capacidades tanto de almacenamiento como
de memoria lo suficientemente buena como para ejecutar la mayoría de las
aplicaciones que puedan desarrollarse con la tecnología orientada a objetos,
sin embargo existen casos en los que lo anterior no se cumple. Una de las
desventajas de la programación orientada a objetos es que cuando se heredan
clases a partir de clases existentes se heredan de forma implícita todos los
miembros de dicha clase aun cuando no todos se necesiten, lo que produce
aplicaciones muy grandes que no siempre encajan en los sistemas con los que se
disponga.
Velocidad
de ejecución: Esto tiene
que ver, en cierto modo, con el punto anterior, una aplicación innecesariamente
pesada en muchas ocasiones es más lenta de ejecutar que una aplicación
conformada únicamente por los módulos necesarios
Conclusión de las Desventajas:
·
Cambio
en la forma de pensar de la programación tradicional a la orientada a objetos.
·
La
ejecución de programas orientados a objetos es más lenta.
·
La
necesidad de utilizar bibliotecas de clases obliga a su aprendizaje y
entrenamiento.
CONCLUSIONES:
Podemos decir que los lenguajes
de programación orientados a objetos tratan a los programas como conjuntos de
objetos que se ayudan entre ellos para realizar acciones, entendiendo como
objeto a las entidades que contienen datos y permitiendo que los programas sean
más fáciles de escribir, mantener y reutilizar.
Por otra parte la POO (programación
orientada a objetos) representa un gran avance en la programación, entre sus
ventajas más importante se encuentran un notable aumento de la productividad
del programador y de la robustez de los programas, personalmente el lenguaje
orientado a objetos que más me agrada es Eiffel (además de sus características
de orientación a objetos, soporta la metodología de diseño por contratos). Otro
lenguaje muy bien diseñado (y de uso creciente) es Ruby. También es
recomendable, y muy simple para comenzar, el lenguaje Python.
COMENTA AL FINAL DE ESTA SECCIÓN, CUALES SON LOS LENGUAJES DE PROGRAMACIÓN ORIENTADA A OBJETOS QUE SE EXISTEN.
Identifica las herramientas de
UML, para elaborar la documentación de un programa
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).
serie de normas y estándares
gráficos respecto a cómo se deben representar los esquemas relativos al
software. 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.
Las herramientas de UML son las siguientes:
Astah community: herramienta sencilla, adecuada
para aprender. Se puede descargar una versión gratuita enhttp://astah.net/editions/community.
Astah (antes conocido como Jude)
también tiene una versión profesional.
Rational Rose: conjunto de herramientas IBM
usado por muchas empresas.
Otros: Erwin, Oracle Designer,
EasyCASE, Power Designer, etc. son herramientas que incorporan muchas
utilidades, entre ellas UML.
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.
FASES DEL DESARROLLO DE UN SISTEMA
Las fases del desarrollo de
sistemas que soporta UML son: Análisis de requerimientos, Análisis, Diseño,
Programación y Pruebas.
1.
Análisis de Requerimientos
UML tiene casos de uso
(use-cases) para capturar los requerimientos del cliente. A través del modelado
de casos de uso, los actores externos que tienen interés en el sistema son
modelados con la funcionalidad que ellos requieren del sistema (los casos de
uso). Los actores y los casos de uso son modelados con relaciones y tienen
asociaciones entre ellos o éstas son divididas en jerarquías. Los actores y
casos de uso son descritos en un diagrama use-case. Cada use-case es descrito
en texto y especifica los requerimientos del cliente: lo que él (o ella) espera
del sistema sin considerar la funcionalidad que se implementará. Un análisis de
requerimientos puede ser realizado también para procesos de negocios, no
solamente para sistemas de software.
2.
Análisis
La fase de análisis abarca las
abstracciones primarias (clases y objetos) y mecanismos que están presentes en
el dominio del problema. Las clases que se modelan son identificadas, con sus
relaciones y descritas en un diagrama de clases. Las colaboraciones entre las
clases para ejecutar los casos de uso también se consideran en esta fase a
través de los modelos dinámicos en UML. Es importante notar que sólo se
consideran clases que están en el dominio del problema (conceptos del mundo
real) y todavía no se consideran clases que definen detalles y soluciones en el
sistema de software, tales como clases para interfaces de usuario, bases de
datos, comunicaciones, concurrencia, etc.
3.
Diseño
En la fase de diseño, el
resultado del análisis es expandido a una solución técnica. Se agregan nuevas
clases que proveen de la infraestructura técnica: interfaces de usuario, manejo
de bases de datos para almacenar objetos en una base de datos, comunicaciones
con otros sistemas, etc. Las clases de dominio del problema del análisis son
agregadas en esta fase. El diseño resulta en especificaciones detalladas para
la fase de programación.
4.
Programación
En esta fase las clases del
diseño son convertidas a código en un lenguaje de programación orientado a
objetos. Cuando se crean los modelos de análisis y diseño en UML, lo más aconsejable
es trasladar mentalmente esos modelos a código.
5.
Pruebas
Normalmente, un sistema es
tratado en pruebas de unidades, pruebas de integración, pruebas de sistema,
pruebas de aceptación, etc. Las pruebas de unidades se realizan a clases
individuales o a un grupo de clases y son típicamente ejecutadas por el
programador. Las pruebas de integración integran componentes y clases en orden
para verificar que se ejecutan como se especificó. Las pruebas de sistema ven
al sistema como una "caja negra" y validan que el sistema tenga la
funcionalidad final que le usuario final espera. Las pruebas de aceptación
conducidas por el cliente verifican que el sistema satisface los requerimientos
y son similares a las pruebas de sistema.
COMENTA AL FINAL DE ESTA SECCIÓN Y EXPLICA CON TUS PALABRAS UNA DE LAS FASES DEL DESARROLLO DE DE UN SISTEMA (PROGRAMA)
COMENTA AL FINAL DE ESTA SECCIÓN Y EXPLICA CON TUS PALABRAS UNA DE LAS FASES DEL DESARROLLO DE DE UN SISTEMA (PROGRAMA)
No hay comentarios.:
Publicar un comentario
Escribe tus comentarios: