Está en la página 1de 8

POO

Es una tcnica o estilo de programacin que utiliza objetos como bloque fundamental de construccin. Objetivos 1. Correccin: es correcto si hace lo que tiene que hacer. 2. Claridad: Ser lo ms claro y legible posible para mejorar el mantenimiento del software. 3. Eficiencia: Debe consumir la menor cantidad de recursos posible (consumo de tiempo y/o memoria). Ventajas Permite realizar modelos del sistema casi independientes de los requisitos del proyecto. Reutilizacin de cdigo. Robustez. Mdulos independientes. Aadir mdulos sin modificar la estructura bsica.

_______________________________________________________________________________________________

Objeto
Es una instancia de las clases. Un objeto se caracteriza por varios conceptos: Atributos: estos son los datos que caracterizan al objeto. Son variables que almacenan datos relacionados al estado de un objeto. Mtodos (usualmente llamados funciones de miembro): Los mtodos de un objeto caracterizan su comportamiento, es decir, son todas las acciones (denominadas operaciones) que el objeto puede realizar por s mismo. Estas operaciones hacen posible que el objeto responda a las solicitudes externas (o que acte sobre otros objetos). Adems, las operaciones estn estrechamente ligadas a los atributos, ya que sus acciones pueden depender de, o modificar, los valores de un atributo. Identidad: El objeto tiene una identidad, que lo distingue de otros objetos, sin considerar su estado. Por lo general, esta identidad se crea mediante un identificador que deriva naturalmente de un problema (por ejemplo: un producto puede estar representado por un cdigo, un automvil, por un nmero de modelo, etc.).

Clase
Las clases son abstracciones que representan a un conjunto de objetos con un comportamiento e interfaz comn. Una clase se compone de dos partes: Atributos (denominados, por lo general, datos miembros): esto es, los datos que se refieren al estado del objeto Mtodos (denominados, por lo general, funciones miembros): son funciones que pueden aplicarse a objetos Si tenemos una clase llamada auto, los objetos Peugeot y Renault sern instancias de esa clase. Tambin puede haber otros objetos Peugeot 406, diferenciados por su nmero de modelo. Asimismo, dos instancias de una clase pueden tener los mismos atributos, pero considerarse objetos distintos independientes. En un contexto real: dos

camisas pueden ser idnticas, pero no obstante, tambin ser diferentes de alguna manera. Sin embargo, si las mezclamos es imposible distinguir una de la otra. Podemos definir a la clase como la generalizacin de los objetos y los objetos como la concrecin de la clase. Podemos decir que una clase es un objeto ya que se le puede pedir un comportamiento (puede o no tener un estado, pero si o si debe tener un comportamiento). Un objeto puede cambiar de clase: ya que se puede cambiar dado el siguiente diagrama (se simula el cambio de clase)

Clase

TYPE OBJET Objet

El concepto de encapsulacin La encapsulacin es un mecanismo que consiste en organizar datos y mtodos de una estructura, conciliando el modo en que el objeto se implementa, es decir, evitando el acceso a datos por cualquier otro medio distinto a los especificados. Por lo tanto, la encapsulacin garantiza la integridad de los datos que contiene un objeto. Ocultacin de datos El usuario de una clase en particular no necesita saber cmo estn estructurados los datos dentro de ese objeto, es decir, un usuario no necesita conocer la implementacin. Al evitar que el usuario modifique los atributos directamente y forzndolo a utilizar funciones definidas para modificarlos (llamadas interfaces), se garantiza la integridad de los datos (por ejemplo, uno puede asegurarse de que el tipo de datos suministrados cumple con nuestras expectativas bien que los se encuentran dentro del periodo de tiempo esperado). La encapsulacin define los niveles de acceso para elementos de esa clase. Estos niveles de acceso definen los derechos de acceso para los datos, permitindonos el acceso a datos a travs de un mtodo de esa clase en particular, desde una clase heredada o incluso desde cualquier otra clase. Existen tres niveles de acceso: pblico: funciones de toda clase pueden acceder a los datos o mtodos de una clase que se define con el nivel de acceso pblico. Este es el nivel de proteccin de datos ms bajo protegido: el acceso a los datos est restringido a las funciones de clases heredadas, es decir, las funciones miembro de esa clase y todas las subclases privado: el acceso a los datos est restringido a los mtodos de esa clase en particular. Este es nivel ms alto de proteccin de datos

El concepto de herencia La herencia es especfica de la programacin orientada a objetos, donde una clase nueva se crea a partir de una clase existente. La herencia (a la que habitualmente se denomina subclases) proviene del hecho de que la subclase (la nueva clase creada) contiene las atributos y mtodos de la clase primaria. La principal ventaja de la herencia es la capacidad para definir atributos y mtodos nuevos para la subclase, que luego se aplican a los atributos y mtodos heredados. Esta particularidad permite crear una estructura jerrquica de clases cada vez ms especializada. La gran ventaja es que uno ya no debe comenzar desde cero cuando desea especializar una clase existente. Como resultado, se pueden adquirir bibliotecas de clases que ofrecen una base que puede especializarse a voluntad (la compaa que vende estas clases tiende a proteger las datos miembro usando la encapsulacin). Ventajas Modelado de la realidad: las relaciones de especializacin/generalizacin entre las entidades del mundo real. Evita redundancias Facilita la reutilizacin Sirve de soporte para el polimorfismo Jerarqua de clase La relacin primaria-secundaria entre clases puede representarse desde un punto de vista jerrquico, denominado vista de clases en rbol. La vista en rbol comienza con una clase general llamada superclase (a la que algunas veces se hace referencia como clase primaria, clase padre, clase principal, o clase madre; existen muchas metforas genealgicas). Las clases derivadas (clase secundaria o subclase) se vuelven cada vez ms especializadas a medida que van descendiendo el rbol. Por lo tanto, se suele hacer referencia a la relacin que une a una clase secundaria con una clase primaria mediante la frase "es una" x o y.

Definicin de polimorfismo La palabra polimorfismo proviene del griego y significa que posee varias formas diferentes. Este es uno de los conceptos esenciales de una programacin orientada a objetos. As como la herencia est relacionada con las clases y su jerarqua, el polimorfismo se relaciona con los mtodos.

Polimorfismo es la tcnica de usar una interfaz para mltiples implementaciones. Es importante porque permite a las entidades tener diferentes estructuras internas para compartir la misma interfaz externa. El polimorfismo en un lenguaje de programacin le permite al programador generar componentes reutilizables de alto nivel, que son diseados para adaptarse a las diferentes aplicaciones cambiando sus partes de menor nivel.
En general, hay tres tipos de polimorfismo: Polimorfismo de sobrecarga Polimorfismo paramtrico (tambin llamado polimorfismo de plantillas) Polimorfismo de inclusin (tambin llamado redefinicin o subtipado)

Trataremos de describir ahora con ms precisin estos tipos de polimorfismo, pero le sugerimos prestar atencin, ya que muchas personas suelen confundirse al tratar de comprender las diferencias existentes entre estos tres tipos.

Polimorfismo de sobrecarga El polimorfismo de sobrecarga ocurre cuando las funciones del mismo nombre existen, con funcionalidad similar, en clases que son completamente independientes una de otra (stas no tienen que ser clases secundarias de la clase objeto). Por ejemplo, la clase complex, la clase image y la clase link pueden todas tener la funcin "display". Esto significa que no necesitamos preocuparnos sobre el tipo de objeto con el que estamos trabajando si todo lo que deseamos es verlo en la pantalla. Por lo tanto, el polimorfismo de sobrecarga nos permite definir operadores cuyos comportamientos varan de acuerdo a los parmetros que se les aplican. As es posible, por ejemplo, agregar el operador + y hacer que se comporte de manera distinta cuando est haciendo referencia a una operacin entre dos nmeros enteros (suma) o bien cuando se encuentra entre dos cadenas de caracteres (concatenacin). Polimorfismo paramtrico El polimorfismo paramtrico es la capacidad para definir varias funciones utilizando el mismo nombre, pero usando parmetros diferentes (nombre y/o tipo). El polimorfismo paramtrico selecciona automticamente el mtodo correcto a aplicar en funcin del tipo de datos pasados en el parmetro. Por lo tanto, podemos por ejemplo, definir varios mtodos homnimos de addition() efectuando una suma de valores. El mtodo int addition(int,int) devolvera la suma de dos nmeros enteros. float addition(float, float) devolvera la suma de dos flotantes. char addition(char, char) dara por resultado la suma de dos caracteres definidos por el autor.

etc. Una signature es el nombre y tipo (esttico) que se da a los argumentos de una funcin. Por esto, una firma de mtodo determina qu elemento se va a llamar. Polimorfismo de subtipado La habilidad para redefinir un mtodo en clases que se hereda de una clase base se llama especializacin. Por lo tanto, se puede llamar un mtodo de objeto sin tener que conocer su tipo intrnseco: esto es polimorfismo de subtipado. Permite no tomar en cuenta detalles de las clases especializadas de una familia de objetos, enmascarndolos con una interfaz comn (siendo esta la clase bsica). Imagine un juego de ajedrez con los objetos rey, reina, alfil, caballo, torre y pen, cada uno heredando el objeto pieza. El mtodo movimiento podra, usando polimorfismo de subtipado, hacer el movimiento correspondiente de acuerdo a la clase objeto que se llama. Esto permite al programa realizar el movimiento.de_pieza sin tener que verse conectado con cada tipo de pieza en particular.

La abstraccin es la propiedad que permite representar las caractersticas esenciales de un objeto, sin preocuparse de las restantes caractersticas (no esenciales) El encapsulamiento es el proceso de ocultar todos los secretos de un objeto que no contribuyen a sus caractersticas esenciales. El encapsulamiento es el proceso de almacenar en un mismo compartimento los elementos de una abstraccin que constituyen su estructura y su comportamiento; sirve para separar la interfaz contractual de una abstraccin y su implantacin (Booch) El polimorfismo permite referirse a objetos de clases diferentes mediante el mismo elemento de programa y realizar la misma operacin de diferentes formas, segn sea el objeto que se referencia en ese momento. La herencia define una relacin entre clases, en donde una clase comparte la estructura o comportamiento definido en una o ms clases (herencia simple y herencia mltiple, respectivamente).

La abstraccin y el encapsulamiento son conceptos complementarios: la abstraccin se centra en el comportamiento observable de un objeto, mientras que el encapsulamiento se centra en la implementacin que da lugar a ese comportamiento (Booch). Una de las grandes ventajas del encapsulamiento es que posibilita que la implementacin de un objeto se pueda cambiar sin afectar a las aplicaciones que lo utilizan.

UML
UML es el lenguaje de modelado orientado a objetos estndar predominante ahora y en los prximos aos

Caso de Uso
Es uno de los cinco tipos de diagramas de UML que se utilizan para el modelado de los aspectos dinmicos de un sistema. Los casos de uso representan una vista externa del sistema Un caso de uso es una tcnica de modelado utilizada para describir lo que un nuevo sistema debe hacer o lo que un sistema ya hace. Un modelo de casos de uso se construye mediante un proceso iterativo durante las reuniones entre los desarrolladores del sistema y los clientes (y/o los usuario finales) conduciendo a una especificacin de requisitos sobre la que todos coinciden. Los Casos de Uso (Ivar Jacobson) describen bajo la forma de acciones y reacciones el comportamiento de un sistema desde el punto de vista del usuario Permiten definir los lmites del sistema y las relaciones entre el sistema y el entorno Los Casos de Uso son descripciones de la funcionalidad del sistema independientes de la implementacin

Para que usamos los casos de uso: 1. Empaquetar los escenarios de usabilidad de un sistema. 2. Facilitar la trazabilidad entre los requerimientos y los distintos artefactos de modelado: Clases, Objetos, Acciones, Estados, etc., hasta el cdigo. 3. Describir una secuencia de acciones que podemos organizar en escenarios tipo. 4. Representan todas las maneras posibles de usar los recursos de un sistema/organizacin. 5. Despiezar un proceso en funciones reutilizables. 6. Comunicar el alcance y complejidad funcional de un producto (Censo de Casos de Uso Candidatos). 7. Especificar un contrato de servicios entre los Actores y el Sistema.

Ventajas del Modelo de Caso de Uso. 1. Lenguaje de comunicacin entre usuarios y desarrolladores. 2. Comprensin detallada de la funcionalidad del sistema. 3. Acotacin precisa de las habilitaciones de los usuarios. 4. Gestin de riesgo ms eficiente para gobernar la complejidad. 5. Estimacin ms exacta para determinar tiempo, recursos y prioridades en la dosificacin de esfuerzo de desarrollo. 6. Fiel trazabilidad para verificar la traduccin de requerimientos en cdigo ejecutable. 7. Mayor control para mantener las sucesivas revisiones de los programas. 8. Certificacin contractual Cliente-Desarrollador. 9. Documentacin orientada al usuario: Helps - Manual de Procedimientos - Reglas de Negocio. 10. Documentacin orientada al administrador del sistema: Soporte de Mantenimiento. Desventajas del Modelo de Caso de Uso Es reconocida la efectividad de este modelo para manejar la complejidad de los requisitos. Su simplicidad, derivada del uso del lenguaje natural para describir la funcionalidad observada en el espacio del problema, posibilita la participacin activa de usuarios finales y clientes en el modelado de los requisitos. Sin embargo, el Modelo de Casos de Uso tiene dos desventajas importantes que dificultan frecuentemente la puesta en prctica de las tcnicas de Ingeniera de Requisitos: la dificultad de determinar el nivel de abstraccin correcto para especificar los casos de uso y la inexistencia de un proceso para analizar esta especificacin y traducirla a un modelo conceptual.

Diagrama de Clases
Qu es? Representacin de: Requerimientos en Entidades y Actuaciones La arquitectura conceptual de un dominio Soluciones de diseo en una arquitectura Componentes de software orientado a objetos Para que se Utiliza? Modelar los aspectos estticos de un sistema El propsito de este diagrama es el de representar los objetos fundamentales del sistema (dominio o solucin) y sus posibles relaciones en un estado del mismo. Realizar la abstraccin de un dominio Formalizar el anlisis de conceptos Definir una solucin de diseo Construir componentes de software Son los diagramas ms comunes en el modelado de sistemas orientados a objetos Muestra un conjunto de clases, interfaces, y colaboraciones y sus relaciones Se usan para modelar la vista de diseo esttico de un sistema Son importantes no slo para visualizacin, especificacin y documentacin de modelos estructurales, sino tambin para construir sistemas ejecutables

Los diagramas de clase contienen lo siguiente: Clases, interfaces, colaboraciones, y relaciones de dependencia, generalizacin y asociacin.

Diagrama de Secuencia
Un diagrama de Secuencia muestra una interaccin ordenada segn la secuencia temporal de eventos. En particular, muestra los objetos participantes en la interaccin y los mensajes (llamadas a mtodos) que intercambian, ordenados segn su secuencia en el tiempo. El eje vertical representa el tiempo, y en el eje horizontal se colocan los objetos y actores participantes en la interaccin, sin un orden prefijado. Cada objeto o actor tiene una lnea vertical llamada lnea de vida. Los mensajes se representan mediante flechas horizontales entre los distintos objetos. El tiempo fluye de arriba abajo. Se pueden colocar etiquetas (como restricciones de tiempo, descripciones de acciones, etc.) bien en el margen izquierdo o bien junto a las transiciones o activaciones a las que se refieren. El diagrama de secuencia muestra un determinado escenario de un caso de uso, los eventos generados por actores externos, su orden y los eventos internos del sistema. Los diagramas de secuencia nos ayudan a comprender los cuellos de botella potenciales, para as poder eliminarlos.

Se utilizan con frecuencia para validar los casos de uso.

Diagrama de Actividad

Un diagrama de actividades puede considerarse como un caso especial de un diagrama de estados en el cual casi todos los estados son estados accin (identifican una accin que se ejecuta al estar en l) y casi todas las transiciones evolucionan al trmino de dicha accin (ejecutada en el estado anterior). Un diagrama de actividades puede dar detalle a un caso de uso, un objeto o un mensaje en un objeto. Permiten representar transiciones internas al margen de las transiciones o eventos externos. La interpretacin de un diagrama de actividades depende de la perspectiva considerada: en un diagrama conceptual, la actividad es alguna tarea que debe ser realizada; en un diagrama de especificacin o de implementacin, la actividad es un mtodo de una clase. Generalmente se suelen utilizar para modelar los pasos de un algoritmo. Un diagrama de actividades ha sido diseado para mostrar una visin simplificada de lo que ocurre durante una operacin o proceso. Es una conexin de un diagrama de estados.

En general resulta adecuado utilizar diagramas de actividades para:

Anlisis de casos de uso: Durante el anlisis de los casos de uso no estamos interesados en asociar acciones a objetos, sino en entender qu acciones se necesitan llevar a cabo y cules son las dependencias en el comportamiento. Comprensin del flujo de trabajo a lo largo de diferentes casos de uso. Modelado de aplicaciones multihilo.

Por contra, resultan en general del todo inadecuados a la hora de mostrar la colaboracin entre objetos y la evolucin del comportamiento de los objetos durante su tiempo de vida.