lunes, 11 de mayo de 2015

Fundamentos de la POO


FUNDAMENTOS DE LA POO.

          Técnica que desarrolla soluciones computacionales utilizando elementos de software (objetos de software).

Objeto:        Elemento de software que contiene sus características (campo) y sus comportamientos (métodos), a través de señales comprensibles para quien las utiliza.

OBJETO   =   ESTADO + COMPORTAMIENTO +IDENTIDAD

Campo:       Es una propiedad de un objeto que facilita su estructura y permite distinguirlo de otro objeto. El conjunto de las características de sus campos define la condición del objeto.
Método:       Es la herramienta de un algoritmo que simboliza la función que un objeto realiza. El grupo de los métodos de un objeto definen la conducta o comportamiento del objeto.
Clase.          Es un entorno que permite crear objetos semejantes; es decir con las mismas características. Representa un grupo de objetos que comparten una misma estructura y un mismo comportamiento; como quien dice, una clase representa un grupo de objetos con los mismos atributos y los mismos métodos. Ésta definirá datos, métodos y el mecanismo de encapsulación correspondiente (interfaz de la clase) que  se puede dividir en tres partes según su visión. Cada usuario podrá  tener acceso a una parte  de la clase o a la clase completa  de acuerdo con las características de la llamada interfaz de clase.

Parte pública:       Define  qué parte de la clase será accesible a todos los posibles usuarios.
Parte protegida:    Define qué parte será accesible sólo desde la clase y de otras clases definidas a partir de ella (derivadas o subclases).
Parte privada:       Define qué parte es accesible únicamente desde la clase.

Este medio o modo de  encapsulación, permite enlazar el código que manipula los datos con los propios datos, resguardándolos de interferencias externas y del mal uso.
El estado de un objeto corresponde,  frecuentemente,  a  la parte privada de un objeto y los métodos  a la parte pública.
 


Gráficamente  puede representarse un objeto:





Los diagramas estructurales representan la parte estática de un sistema. Un diagrama es sólo una proyección gráfica de los elementos que configuran un sistema.


Construcción de una clase

La definición de una clase es sintácticamente similar a una estructura (struct).






La Poo fue creada para que el trabajo que realizan los programadores pudiera ser utilizado por otras personas. La cual es una serie de normas, de realizar las cosas de manera que otras personas puedan utilizarlas y adelantar su trabajo, para que consigamos que el código se pueda reutilizar. No es difícil, pero tiene una manera diferente de realizarse, en ocasiones es subjetiva de quien la programa, de manera que la forma de hacer las cosas puede ser diferente según el programador. Se pueden hacer los programas de formas distintas, y no todos ellos son correctos, lo difícil no es programar orientado a objetos sino programar bien. Programar bien es importante porque así nos podemos aprovechar de todas las ventajas de la POO.

Pensar en términos de objetos es como si pensáramos de cómo lo haríamos en la vida real, por ejemplo veamos como representaríamos en modelo POO una fracción, estructura matemática que tiene un numerador y un denominador que divide al numerador, por ejemplo 5/4.
La fracción es el objeto la cual tiene dos propiedades que son el numerador y el denominador, a la cual podríamos darle varios métodos para que se pueda simplificar, sería sumarse con otra fracción o número, restarse con otra fracción, etc.

Características:   

Abstracción.-        Selecciona las características sobresalientes dentro de un grupo, reconoce conductas comunes para definir nuevos valores en el mundo real. Es clave en el proceso de análisis y diseño orientado a objetos, pues por medio de la Abstracción se puede llegar a formar un grupo de clases que permitan crear el objetivo que se quiere realizar.

Herencia.-             Es una relación entre clases en la cual se comparte la estructura y comportamiento definido en otra clase.
                              Lo que cada clase hereda son los atributos de la clase base además de sus propios atributos. Una subclase es heredada por la clase base. La herencia es una de las características que más se hace notar a la hora de crear códigos, o re-emplear código de otros programadores

Encapsulamiento: Que las propiedades particulares de un objeto no deben de ser visibles desde otros objetos.
                              Se deben de manifestar como reservados.

Polimorfismo:       Estilos diferentes, asociados a objetos distintos, pueden llevar el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. Es decir, 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.


Como en todo existen ventajas y desventajas, veamos pues algunas de las ventajas  más notables de la programación orientada a objetos:

Reusabilidad.        Si las clases están realizadas lógicamente bien, pueden ser utilizadas en diferentes partes del programa y en muchos otros proyectos diferentes.
Mantenibilidad.     Debido a la sencillez para concentrar el problema, los programas orientados a objetos son más fáciles de leer y entender, pues nos posibilita esconder detalles de implementación dejando visibles sólo aquellos detalles más sobresalientes.
Modificabilidad.    La facilidad de añadir, suprimir o cambiar nuevos objetos, nos permite hacer cambios 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.

Y como mencionamos antes nombraremos algunas de las desventajas:

·            Variación 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.


Lenguajes de Programación Orientado a objetos
En 1985, E. Stroustrup extendió el lenguaje de programación C a C++, es decir C con conceptos de clases y objetos, también por esas fechas se creo desde sus bases el lenguaje EIFFEL.
En 1995 apareció el más reciente lenguaje OO, Java desarrollado por SUN, que hereda conceptos de C++.
El lenguaje de desarrollo más extendido para aplicaciones Web, el PHP 5, trae todas las características necesarias para desarrollar software orientado a objetos.
Además de otros lenguajes que fueron evolucionando, como el Pascal a Delphi.
Finalmente también otros lenguajes script como el ActionScript que si bien no es totalmente orientado a objetos pero sí posee las características.

Análisis y diseño Orientado a objetos
Para el desarrollo de software orientado a objetos no basta usar un lenguaje orientado a objetos. También se necesitará realizar un análisis y diseño orientado a objetos.

El modelamiento visual es la clave para realizar el análisis OO. Desde los inicios del desarrollo de software OO han existido diferentes metodologías para hacer esto del modelamiento, pero sin lugar a duda, el Lenguaje de Modelamiento Unificado (UML) puso fin a la guerra de metodologías.

Según los mismos diseñadores del lenguaje UML, éste tiene como fin modelar cualquier tipo de sistemas (no solamente de software) usando los conceptos de la orientación a objetos. Y además, este lenguaje debe ser entendible para los humanos y máquinas.

Actualmente en la industria del desarrollo de software tenemos al UML como un estándar para el modelamiento de sistemas OO. Fue la empresa Racional que creó estas definiciones y especificaciones del estándar UML, y lo abrió al mercado. La misma empresa creó uno de los programas más conocidos hoy en día para este fin; el Racional Rose, pero también existen otros programas como el Poseidon que trae licencias del tipo community edition que permiten su uso libremente.

El UML consta de todos los elementos y diagramas que permiten modelar los sistemas en base al paradigma orientado a objetos. Los modelos orientados a objetos cuando se construyen en forma correcta, son fáciles de comunicar, cambiar, expandir, validar y verificar. Este modelamiento en UML es flexible al cambio y permite crear componentes plenamente reutilizables.


El lenguaje que permite trabajar con POO es también  Java.
Existen varios medios para aprender a programar en POO uno de ello podría ser:



 Además de diversos libros como:

·            S. Dean, J., H. Dean, R. (2009). Introducción a la programación con Java, Cd. México: McGraw-Hill.
·            Deitel, P., Deitel, H. (9na ed.). (2012). Como programar en Java. Cd. México: McGraw-Hill
·            Camacho, D. (2003). Programación, Algoritmos y Ejercicios Resueltos en Java. Cd. México: Pearson / Prentice-Hall
·            Ceballos, F. J. (2011). Java 2 - Curso de Programación, Cd. México: Alfaomega, Ra-Ma.
·            McLaughlin, B., Pollica, G. (2007). Head first Object-Orinted analysis and design; From Concepts to Code, C.A.: O’reilly.



No hay comentarios:

Publicar un comentario