martes, 11 de abril de 2017

Conceptos principales del paradigma de Programación Orientado a Objetos

Clase 
Una clase es una construcción que se utiliza como un modelo (o plantilla) para crear objetos de ese tipo. Una clase por lo general representa un sustantivo, como una persona, lugar o (posiblemente bastante abstracta) cosa - es el modelo de un concepto dentro de un programa de computadora. Encapsula el estado a través de marcadores de datos llamados atributos (o variable miembro o variables de instancia), encapsula el comportamiento a través de secciones de código re-utilizables llamados métodos.

Objeto 
En el paradigma de programación orientada a objetos (POO, o bien OOP en inglés), un objeto se define como la unidad que en tiempo de ejecución realiza las tareas de un programa.

Instancia
Se llama instancia a todo objeto que derive de algún otro. De esta forma, todos los objetos son instancias de algún otro, menos la clase Objeto que es la madre de todas.

Abstracción 
La abstracción consiste en aislar un elemento de su contexto o del resto de los elementos que lo acompañan. En programación, el término se refiere al énfasis en el "¿qué hace?" más que en el "¿cómo lo hace?" (Característica de caja negra). Se puede dividir en dos categorías: abstracción de datos (pertenecientes a los datos) y abstracción de control (perteneciente a las estructuras de control).

Modularidad 
Se denomina Modularidad a 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 límites, o interfaces, son muy valiosos en la comprensión del programa.

Encapsulamiento 
Se denomina encapsulamiento al ocultamiento del estado, es decir, de los datos miembro, de un objeto de manera que sólo se puede cambiar mediante las operaciones definidas para ese objeto. Cada objeto está aislado del exterior, es un módulo natural, y la aplicación entera se reduce a un agregado o rompecabezas de objetos. El aislamiento protege a los datos asociados a un objeto contra su modificación por quien no tenga derecho a acceder a ellos, eliminando efectos secundarios e interacciones.

Herencia 
La herencia es el mecanismo fundamental para implementar la reutilización y extensibilidad del software. A través de ella los diseñadores pueden construir nuevas clases partiendo de una jerarquía de clases ya existente (comprobadas y verificadas) evitando con ello el rediseño, la modificación y verificación de la parte ya implementada. La herencia facilita la creación de objetos a partir de otros ya existentes, obteniendo características (métodos y atributos) similares a los ya existentes. Por ejemplo: Si declaramos una clase párrafo derivada de una clase texto, todos los métodos y variables asociadas con la clase texto, son automáticamente heredados por la subclase párrafo.
Existen dos tipos de herencia:

Herencia simple:
Una subclase puede hacerse datos y métodos de una clase simple así como añadir o sustraer ciertos comportamientos.

Herencia múltiple:
Posibilidad de adquirir  métodos y datos de varias clases simultaneas.

Polimorfismo 
Se refiere a la capacidad para que varias clases derivadas de una antecesora utilicen un mismo método de forma diferente. Por ejemplo, podemos crear dos clases distintas: Pez y Ave que heredan de la superclase Animal. La clase Animal tiene el método abstracto mover que se implementa de forma distinta en cada una de las subclases (peces y aves se mueven de forma distinta). El concepto de polimorfismo se puede aplicar tanto a funciones como a tipos de datos.



Lenguaje de modelado unificado: Diagramas de clases

El Lenguaje de Modelado Unificado (UML - Unified Modeling Language) es un lenguaje que permite modelar, construir y documentar los elementos que forman un producto de software que responde a un enfoque orientado a objetos.

Un modelo UML está compuesto por tres clases de bloques de construcción:

• Elementos: Los elementos son abstracciones de cosas reales o ficticias (objetos, acciones, etc.)

• Relaciones: relacionan los elementos entre sí.

• Diagramas: Son colecciones de elementos con sus relaciones.

Diagramas UML
Un diagrama es la representación gráfica de un conjunto de elementos con sus relaciones. En concreto, un diagrama ofrece una vista del sistema a modelar. El diagrama de clases muestra un conjunto de clases, interfaces y sus relaciones. Éste es el diagrama más común a la hora de describir el diseño de los sistemas orientados a objetos.