Está en la página 1de 62

Universidad Tecnolgica Costarricense

Metodologas de Anlisis y Diseo Orientado a Objetos


Jorge Luis Zeledn Solano 2011

Que es Metodologa
Conjunto de mtodos empleados para el desarrollo de sistemas automatizados. Hace referencia al conjunto de procedimientos basados en principios lgicos, utilizados para alcanzar una gama de objetivos. Una metodologa completa es algo ms que una notacin, un proceso, y herramientas.

Las Metodologas Completas


Proporcionan: Guas para estimar costos, Manejo del proyecto en las tareas y entregas, Medidas y mtricas, Formas definidas y direccin en las entregas de la construccin,

Las Metodologas Completas


Polticas y procedimientos para garantizar la calidad del software, Descripciones de los roles y programas de entrenamiento detallados, Ejemplos totalmente trabajados, Ejercicios de entrenamiento, Tcnicas para adaptar el mtodo, y Tcnicas definidas

Que es un Mtodo
Procedimiento que se emplea para alcanzar los objetivos de un proyecto. Procedimiento: es el modo de ejecutar determinadas acciones que suelen realizarse de la misma forma, con una serie comn de pasos claramente definidos, que permiten realizar una ocupacin, trabajo, investigacin, o estudio, se puede aplicar a cualquier empresa.

Qu es Orientado a Objetos
Significa que el sistema se organiza como una coleccin de objetos que interactan entre s y que contienen tanto estructuras de datos como un comportamiento. Se opone a la programacin convencional, en la cual las estructuras de datos y el comportamiento solamente estn relacionadas de forma dbil, ya que estos se enfocan principalmente a las funciones

Orientacin a Objetos
Objeto

Clase
Encapsulamiento Relaciones

Abstraccin
Jerarqua y Herencia Modularidad

Polimorfismo

Objeto
Un objeto se define como una estructura que encapsula atributos (caractersticas) y comportamientos (procedimientos o funciones) de una entidad con un papel bien definido en una aplicacin. Objeto: Los objetos son las cosas fsicas y/o conceptuales que encontramos en el universo alrededor de nosotros.

QUE ES UN OBJETO?
Entidades Fsicas (Ej.: Vehculo, Casa, Producto)
Entidades Conceptuales (Ej.: Proceso Qumico, Transaccin Bancaria)

Entidades de Software (Ej.: Lista Enlazada, Interfaz Grfica)

Caractersticas de los Objetos


Identidad: Es la propiedad que permite a un objeto diferenciarse de otros. Generalmente esta propiedad es tal, que da nombre al objeto. Estado: Conjunto de valores de los atributos en un instante de tiempo dado. El comportamiento de un objeto puede modificar el estado de este.

Un objeto posee Identidad


Cada objeto tiene una identidad nica, incluso si su estado es idntico al de otro objeto

Caractersticas de los Objetos


Comportamiento: Relacionado con su funcionalidad y determina las operaciones que este puede realizar o a las que puede responder ante mensajes enviados por otros objetos.

Clasificacin. Significa que los objetos con la misma estructura de datos (atributos) y comportamiento (operaciones) se renen para formar una clase. La seleccin de clases es arbitraria y depende de la aplicacin.

Representa la definicin del comportamiento del objeto, las acciones que ste puede realizar.

COMPORTAMIENT O

ESTADO
UN OBJETO POSEE
Cada objeto tiene una identidad nica, incluso si su estado es idntico al de otro objeto

Atributos internos, sus caractersticas

IDENTIDA D

Objetos y Clases
Una clase es una definicin abstracta de un objeto
Define la estructura y el comportamiento compartidos por los objetos Sirve como modelo para la creacin de objetos

Los objetos pueden ser agrupados en clases

Qu es una Clase?
Una clase es una descripcin de un grupo de objetos con:
Propiedades en comn (atributos) Comportamiento similar (operaciones) La misma forma de relacionarse con otros objetos (relaciones) Una semntica en comn (significan lo mismo)

Qu es una Clase?
Una clase es una abstraccin que: Enfatiza las caractersticas relevantes esenciales, dentro de las cuales se encuentran sus:
Atributos (o datos). Comportamiento (mtodos)

Suprime otras caractersticas (simplificacin) Un objeto es una instancia de una clase

Ejemplo 1 de una Clase


Clase: Automovil
Estado (Atributos Caractersticas)
Color Ao de fabricacin Marca Modelo Tipo

Comportamiento (Mtodos Funciones)


Encender Acelerar Frenar Transportar

Ejemplo 2 de una Clase


Clase: Curso
Estado (Atributos Caractersticas)
Nombre Ubicacin Das Ofrecidos Horario de Inicio Horario de Trmino

Comportamiento (Mtodos Funciones)


Agregar un Alumno Borrar un Alumno Entregar un Listado del Curso Determinar si est Completo

Relaciones
Todo sistema abarca muchas clases y objetos Los objetos contribuyen en el comportamiento de un sistema colaborando entre si
La colaboracin se logra a travs de las relaciones

Existen dos tipos principales de relaciones


Asociacin Agregacin

Relaciones de Asociacin
Una asociacin es una conexin entre dos clases que representa una comunicacin
Una asociacin puede tener nombre La comunicacin puede ser tanto uni como bi-direccional (por defecto) La multiplicidad es el nmero de instancias que participan en una asociacin

Ejemplo:
Una Persona es Duea de un Vehculo Un Vehculo Pertenece a una Persona
Persona -dueo Vehiculo

Relaciones de Agregacin
La agregacin es una forma especial de asociacin donde un todo se relaciona con sus partes
Tambin se conoce como una parte de o una relacin de contencin

Ejemplo:
Una Puerta es una parte de un Vehculo El Vehculo es azul, la Puerta es Azul Mover el Vehculo implica mover la Puerta
Vehiculo -color +Mover() Puerta

Abstraccin
Extraer las propiedades esenciales de un objeto que lo distinguen de los dems tipos de Objetos y proporciona fronteras conceptuales definidas respecto al punto de vista del observador Denota las caractersticas esenciales de un objeto, donde se capturan sus comportamientos.

Abstraccin
Es la capacidad para encapsular y aislar la informacin de diseo y ejecucin Una abstraccin se centra en la vista externa de un objeto, de modo que sirva para separar el comportamiento esencial de un objeto de su implementacin. Definir una abstraccin significa describir una entidad del mundo real, no importa lo compleja que pueda ser y, a continuacin, utilizar esta descripcin en un programa.

Encapsulamiento
Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstraccin. Los lenguajes orientados a objetos proporcionan la Encapsulacin. La encapsulacin se puede utilizar para aplicar el concepto de Abstraccin.

Encapsulamiento
Cada objeto est aislado del exterior, es un mdulo natural, y la aplicacin entera se reduce a un agregado o rompecabezas de objetos. El aislamiento protege a los datos asociados a un objeto contra su modificacin por quien no tenga derecho a acceder a ellos, eliminando efectos secundarios e interacciones

Encapsulamiento
Principio que establece que los atributos propios de un objeto no deben ser visibles desde otros objetos
Deben ser declarados como privados

Permite abstraer al resto del mundo de la complejidad de la implementacin interna Permite exponer el estado del objeto slo a travs del comportamiento que le hayamos definido mediante miembros pblicos Por qu es til?
Punto de Control/Validacin Mejor respuesta ante los Cambios

Herencia
Clase Base

Es una relacin entre clases en la cual una clase comparte la estructura y comportamiento definido en otra clase (Grady Booch) Cada clase que hereda de otra posee:
Los atributos de la clase base adems de los propios Soporta todos o algunos de los mtodos de la clase base

Transporte -pasajeros +Avanzar() +Detenerse()

Automvil

Avin

Una subclase hereda de una clase base

Clases Derivadas o subclases

Herencia
Herencia Es-Un: herencia real, donde la subclase es un tipo especfico de la superclase
Un Cuadrado es un Rectngulo Un perro es un mamfero Un automvil es un vehculo a motor

Herencia
Vehiculo

Aereo

Acuatico

Terrestre

Avin

Barco

Automvil

De que clase heredara la clase Hidroavin ?

Jerarqua
La Jerarqua es una propiedad que permite la ordenacin de las abstracciones. Las dos jerarquas ms importantes de un sistema complejo son: estructura de clases (jerarqua es-un (is-a): generalizacin/especializacin) y estructura de objetos (jerarqua parte-de (part-of): agregacin).

Jerarqua
Las jerarquas de generalizacin /especializacin se conocen como herencia. Bsicamente, 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).

Jerarqua
Jerarqua de clases. Las relaciones de herencia forman una estructura de rbol (jerarqua). Ejemplo:

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. Es la posibilidad de que una entidad tome muchas formas. En trminos prcticos, 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.

Polimorfismo
El polimorfismo adquiere su mxima expresin en la derivacin o extensin de clases, es decir, cuando se obtiene una clase a partir de una clase ya existente, mediante la propiedad de derivacin de clases o herencia. Suponga una jerarqua de clases de figuras de dos dimensiones. Cada clase puede tener un mtodo que se llame igual, por ejemplo rea() pero cada clase tendr una formula de clculo de rea diferente segn la clase.

Polimorfismo
La definicin del mtodo reside en la clase base La implementacin del mtodo reside en la clase derivada La invocacin es resuelta al momento de interface ejecucin interface Acuatico Aereo
+Navegar() +Volar()

Hidroavion

Polimorfismo
Por ejemplo, la operacin comer es una operacin fundamental en la vida de los mamferos, de modo que cada tipo de mamfero debe poder realizar la operacin o funcin comer. Por otra parte, una cabra o una vaca que pastan en un campo, un nio que se come un caramelo y un animal que devora a otro animal, son diferentes formas que utilizan diferentes mamferos para realizar la misma funcin (comer).

La Modularidad implica
El programa se puede construir, probar y depurar por mdulos. Al agregar nueva funcionalidad, se pueden crear nuevos mdulos o incluir la funcionalidad en mdulos que ya existen. Se facilita el localizar errores, el mantenimiento y el crecimiento del software. El diseo orientado a objetos se interesa en primer lugar por los datos, a los que se asocian posteriormente procedimientos

Ciclo de vida del software.


Las etapas bsicas y los principios del modelo OO del ciclo de vida del software son: 1. Especificacin de requerimientos. 2. Anlisis. 3. Diseo. 4. Programacin. 5. Mantenimiento.

Anlisis y diseo orientado a objetos


La esencia del Anlisis y Diseo OO consiste en situar el dominio de un problema y una solucin lgica dentro de la perspectiva de los objetos
Anlisis Diseo Programacin

Investigacin del problema

Solucin Lgica

Cdigo

Anlisis y diseo orientado a objetos


Durante el Anlisis OO se identifica y describe los a objetos dentro del dominio del problema. Ej,. En el caso de un SI. De biblioteca los objetos: Libro, Biblioteca, Cliente.

Durante el Diseo OO, se procura definir los objetos lgicos del software, que sern implementados en un lenguaje de programacin oo. Ej el Objeto Libro tiene el atributo titulo y el mtodo imprimir.

Anlisis y diseo orientado a objetos


Finalmente durante la Construccin o Programacin OO se implementa los componentes del diseo como una clase libro en C++, Java, VB etc.
Concepto del dominio Representacin en el anlisis Libro titulo

Representacin en un lenguaje oo.

Anlisis Orientado a Objetos


Definicin. Es un mtodo de anlisis que examina los requisitos desde la perspectiva de las clases y objetos que se encuentran en el vocabulario del dominio del problema. Documentos que deben tenerse o desarrollarse durante el anlisis: Especificacin de requisitos o requerimientos. Diagramas de casos de uso. Escenarios y subescenarios. Prototipos y su evaluacin.

Anlisis Orientado a Objetos


Las herramientas usadas en la etapa de anlisis (investigacin del problema) se pueden resumir en la siguiente tabla.
Herramienta de anlisis Casos de uso Modelo conceptual Diagramas de secuencia
sistema?

Preguntas que contesta Cules son los procesos del dominio? Cules son los conceptos, los trminos?
Cules son los eventos y las operac. del

Especificaciones de requerimientos
Comprende las tareas relacionadas con la determinacin de las necesidades o de las condiciones a satisfacer para un software nuevo o modificado, tomando en cuenta los diversos requerimientos de los clientes. El propsito es hacer que los mismos alcancen un estado ptimo antes de alcanzar la fase de diseo en el proyecto. Los buenos requerimientos deben ser medibles, comprobables, sin ambigedades o contradicciones.

Especificaciones de requerimientos
Los requerimientos para un sistema de software determinan lo que har el sistema y definen las restricciones de su operacin e implementacin. Para esta actividad se debe: Identificacin de requisitos: Identificar las necesidades del usuario (del negocio). Anlisis y negociacin de requisitos: Describir los objetivos de la aplicacin.

Especificaciones de requerimientos
Especificacin de requerimientos: Definir caractersticas y funciones generales de la aplicacin.(requerimientos funcionales y no funcionales) Validacin de requisitos: El equipo de Ingeniera de sistemas y los clientes deben establecer en conjunto las metas y objetivos de la aplicacin. Factores en la calidad del software: Eficiencia, Transportabilidad, Verificabilidad, Fcil de utilizar, Correccin, Extensibilidad, Compatibilidad Reutilizacin.

Ejemplo de especificacin de requerimientos


Giro de la empresa. La empresa HogarSeguro.com se dedica a la venta, configuracin e instalacin de equipo de seguridad para hogares y pequeas empresas. Identificar la necesidad del negocio. La empresa requiere de una aplicacin Web que permita a los consumidores configurar y comprar todos los componentes requeridos para instalar un sistema de administracin en su hogar o empresa.

Ejemplo de especificacin de requerimientos


Objetivos de la aplicacin. Vender directamente a los consumidores, lo que eliminar costos de intermediacin y mejorar mrgenes de utilidad. Aumentar las ventas en un 25%. Penetrar en regiones geogrficas donde no se tienen puntos de venta. Que el usuario pueda configurar un equipo de seguridad para su hogar, al proporcionar informacin sobre habitaciones, dimensiones y distribucin

Caso de uso
Es una tcnica para la captura de requisitos potenciales de un nuevo sistema o una actualizacin de software. Cada caso de uso proporciona uno o ms escenarios que indican cmo debera interactuar el sistema con el usuario o con otro sistema para conseguir un objetivo especfico. Ejemplo:

Caso de uso

Escenarios
Es una descripcin parcial y concreta del comportamiento de un sistema en una determinada situacin.

Prototipo
Es una representacin de aquellos aspectos del software que sern visibles para el cliente (por ejemplo, la configuracin de la interfaz con el usuario y el formato de los despliegues de salida). El prototipo, es evaluado por el cliente para una retroalimentacin; gracias a sta se refinan los requisitos del software que se desarrollar.

Prototipo

Diseo OO
Es el proceso de dividir una solucin en una cantidad determinada de objetos constituyentes Es una fase de la metodologa orientada a objetos para el desarrollo de Software. Su uso induce a los programadores a pensar en trminos de objetos, en vez de procedimientos, cuando planifican su cdigo. Un objeto agrupa datos encapsulados y procedimientos para representar una entidad.

Diseo OO
La 'interfaz del objeto', esto es, las formas de interactuar con el objeto, tambin es definida en esta etapa. El diseo orientado a objetos es la disciplina que define los objetos y sus interacciones para resolver un problema de negocio que fue identificado y documentado durante el anlisis orientado a objetos.

Programacin OO
Toma las mejores ideas de la programacin estructurada la combina con nuevos y poderosos conceptos que animan o alientan una nueva visin de la tarea de la programacin, permite descomponer fcilmente un problema en subgrupos de partes relacionadas, entonces, puede traducir estos subgrupos en unidades autocontenidas llamadas Objetos

Es un paradigma de programacin que usa objetos y sus interacciones para disear aplicaciones y programas de computadora.

Programacin OO
Est basado en varias tcnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. Su uso se populariz a principios de la dcada de 1990.

Anlisis Orientado a Objetos


Como hemos podido observar el Anlisis y Diseo Orientado a Objeto permite unificar y emplear diversas metodologas de forma uniforme para optimizar la realizacin de sistema, dado por el paradigma de la integracin. Existen similitudes en los conceptos si son llevados a la interpretacin por cada metodologa. El enfoque de AOO es modular, mientras que en otras metodologas el enfoque es de proceso.

Beneficios del modelo de objetos


La productividad se incrementa debido a que puede reutilizar el cdigo. Los sistemas son fciles de mantener y se adaptan a las cambiantes necesidades de negocios. Es ms fcil crear nuevos tipos de objetos a partir de los ya existentes. Simplifica los datos complejos. Reduce la complejidad de la transaccin. Confiabilidad.

Beneficios del modelo de objetos


Robustez. Reutilizacin. Las clases se construyen a partir de otras clases. Capacidad de ampliacin. La OO permite una modelacin ms natural de los sistemas, parecido a como un humano los visualiza. El modelo refleja mejor la realidad. La OO proporciona soporte para todas las etapas del ciclo de vida del software

Beneficios del modelo de objetos


Fiabilidad. Productividad del desarrollador Calidad Mantenimiento Costo Escalabilidad Adaptabilidad (mejor independencia e interoperabilidad)