Académique Documents
Professionnel Documents
Culture Documents
La orientacin a objetos ha permitido mejoras de amplio alcance en la forma de diseo, desarrollo y mantenimiento del software Ha ofrecido una solucin a largo plazo a los problemas y preocupaciones que han existido desde el comienzo en el desarrollo de software: la falta de portabilidad del cdigo y reusabilidad, ciclos de desarrollo largos y tecnicas de codificacion no intuitivas.
Objetos y Clases
Objetos y Clases
Forma natural de interpretar el mundo que nos rodea. Se corresponde con el lenguaje natural
(5,2.5)
Terminologa Bsica
Clase: Se corresponde con un conjunto de objetos, de igual estructura y comportamiento. Otra acepcin: Plantilla para crear objetos. Objeto: cada instancia de la clase. Mensaje o solicitud: invocacin de un mtodo.
Terminologa Bsica
Atributos: cada uno de los datos de un objeto o clase. Comportamiento: cdigo asociado a un objeto o clase. Mtodos: cada uno de los subprogramas que definen el comportamiento de un objeto o clase.
Programacin estructurada: Algoritmos se expresan mediante procesos (procedimental o imperativa). POO: Lo que se define es el comportamiento de los objetos frente a mensajes o solicitudes provenientes de otros objetos. Los programas se disparan con el envo de un mensaje a un objeto.
Sistema
de informacin de bibliotecas.
Orientado a objetos
Catlogo Empleado Biblioteca
Estructurado
Sistema
Libro
Registrar prstamos
Reportar multas
Agregar recursos
Abstraccin
Es la representacin de las caractersticas esenciales de un objeto, as como de su comportamiento. Definir una abstraccin significa describir una entidad del mundo real
Abstraccin
En los lenguajes de programacin orientada a objetos, el concepto de clase es la representacin y el mecanismo por el cual se gestionan las abstracciones.
Ejemplo: Semforo
Caractersticas: - Luz Verde - Luz Roja - Luz mbar Comportamiento - Prenderse - Cambiar de Luz - Apagarse
Abstraccin
Semforo = class
Luz Roja Luz Verde Luz mbar ..... Prenderse() Cambiar de Luz() Apagarse() ...... end;
Conceptos Bsicos
Objeto
Entidad
capaz de mantener un estado (informacin) y que ofrece un conjunto de operaciones (comportamiento) tanto para examinar como para modificar ese estado.
un objeto universidad
Informacin nombre = Universidad FASTA domicilio = Gascon 3145 Partes alumnos catedras Comportamiento inscribirAlumno modiDatosAlumno
estado de un objeto es una de las posibles condiciones en que el objeto puede existir Normalmente cambia en el transcurso del tiempo
Es implementado por
un
conjunto de propiedades (llamadas atributos), los valores de las propiedades, las conexiones que deben tener con otros objetos
comportamiento de un objeto determina cmo ste acta y reacciona frente a las peticiones de otros objetos Es modelado por un conjunto de mensajes a los que puede responder (las operaciones que el objeto puede realizar)
a + b = 10
objeto tiene una identidad nica, incluso si su estado es idntico al de otro objeto
Conceptos Bsicos
Clase
Representa
una plantilla (template) de varios objetos y describe como esos objetos estn estructurados internamente. Una clase debe tener responsabilidades o servicios (contrato u obligacin) bien definidos.
Profesor
Profesor
Profesor
Profesor
nombre empID
Conceptos Bsicos
Clase
Alumno
public class Alumno { public String Nombre; public String Domicilio; public Alumno(String n, String d){ } public void setNombre (String n){ } public String getNombre(){ } }
Conceptos Bsicos
Instancia
Una
instancia es un objeto creado a partir de una clase. La clase describe la estructura de la instancia (informacin y comportamiento), El estado de cada instancia se compone de los atributos establecidos en la clase.
Conceptos Bsicos
Instancias
Alumno +Nombre:string +Domicilio:string +Alumno(n:String; d:String) +setNombre(n:String) +getNombre():string
alu1:Alumno Nombre = Juan Perez Domicilio = ejemplo alu2:Alumno Nombre = Abel Garcia Domicilio = ejemplo alu3:Alumno
C#
Alumno alu1 = new Alumno(Juan Perez, ejemplo); Alumno alu2 = new Alumno(Abel Garcia, ejemplo); Alumno alu3 = new Alumno(Jose Lopez, nada);
Encontrando Clases
Una
clase debe capturar una y solo una abstraccin clave Mala abstraccin: La clase estudiante que conoce la informacin del estudiante y el programa del actual semestre del estudiante Buena abstraccin: Clases separadas para estudiantes y programas del estudiante
Algebra 101 Historia Arte Qumica Espaol 101
de gua de estilo
Las clases son nombradas usando sustantivos singulares Los nombres de las clases comienzan con letra mayscula No se usa el subrayado
Los nombres compuestos por mltiples palabras se ponen juntos y la primera letra de cada palabra se escribe con mayscula
Tres distinguidas caractersticas de un lenguaje de programacin orientado a objetos Encapsulamiento Herencia Polimorfismo
Encapsulamiento
Mecanismo que permite unir, en una nica abstraccin, todas las propiedades (atributos) y funcionalidades (operaciones) de una entidad.
Operaciones
Atributos
Herencia
Mecanismo
que permite tomar una clase existente como base para definir una nueva clase. Mediante la herencia la clase nueva hereda todos los atributos y comportamientos presentes en la clase existente.
Superclase
Subclase
Polimorfismo
Mecanismo que permite a la subclase implementar la misma operacin con un mtodo diferente segn su conveniencia (redefinir el mtodo). Estos objetos recibiran el mismo mensaje global pero responderan a l de formas diferentes.
Interacciones de Objetos
Comportamiento de un objeto
Cambiando de estado.
Mensajes
Es la forma en que interactan los Objetos entre ellos. Es la solicitud de un Objeto (Cliente) a otro Objeto (Servidor) para la realizacin de una responsabilidad. En Programacin: Nombre del Mtodo + Parmetros.
Constructor
Mtodo
definido en una clase usado para instanciar objetos de la misma. Instanciacin: accion por la que se crea una instancia de un objeto
Alumno +Nombre:string +Domicilio:string +Alumno(n:String; d:String) +setNombre(n:String) +getNombre():string
alu2
Invocacin de constructores
Dos errores comunes: Invocarlo ms de una vez. No invocarlo nunca. Recomendaciones: Invocarlo al principio del bloque de cdigo en el que fue declarado. Cuando un objeto es un parmetro por valor, el constructor debe invocarse al principio del mdulo.
Destructores
Cumplen tareas de liberacin de memoria y vnculos con otros objetos. Al final de la vida de un objeto es conveniente llamar al destructor de la clase. Recomendacin: Llamar al destructor al final del bloque de cdigo en el que fue declarado.
Identidad de un objeto
Es lo que hace nico a un objeto y que lo diferencia de otras instancias de la misma clase, independientemente de sus atributos y valores. La identidad de un objeto permite referirse o apuntar a una rea determinada de memoria. Por ejemplo, un retroproyector tiene una identidad que lo diferencia de los dems retroproyectores de este edificio, an cuando tengan el mismo comportamiento y valores.
Encapsulacin
La encapsulacin presenta dos ventajas bsicas: Se protegen los datos de accesos indebidos Favorece la modularidad y el mantenimiento
Tericamente los atributos de una clase no son manipulables directamente por el resto de objetos. El grado de encapsulacin es flexible
Encapsulacin
Los niveles de encapsulacin estn heredados de los niveles de C++: (-) Privado: es el ms fuerte. Esta parte es totalmente invisible (excepto para los friends en terminologa C++)
(#)
Los atributos de la parte protegida estn visibles para los friends y para las clases derivadas de la original Los atributos de la parte pblica son visibles a todas las clases (se pierde la encapsulacin)
(+)
Encapsulacin
Ejemplo:
Reglas de visibilidad + Atributo pblico : int # Atributo protegido : int - Atributo privado : int + "Operacin pblica" # "Operacin protegida" - "Operacin privada"
Relaciones
Cuando se construye un sistema se descubre que pocas de las clases del sistema se encuentran aisladas de las dems. En cambio, la mayora de ellas colaboran con otras de diferentes maneras. Se definen tres tipos bsicos de relaciones entre clases: asociacin, agregacin y composicin.
Asociacin
Una asociacin es una relacin estructural que especifica que objetos de una clase estn conectados con objetos de otra clase (pudiendo ser la segunda la misma que la primera). Un rol en una asociacin es la cara que presenta una clase a la otra clase al otro lado de la asociacin. La multiplicidad de un rol en una asociacin especifica cuntos objetos estn conectados al otro lado de la asociacin.
multiplicidad
Indicadores de multiplicidad 0..1 1 0..* 1..* n 0..n 1..n cero o uno uno cero o ms uno o ms solo n ( n > 1) cero a n ( n > 1 ) 1a n (n>1)
rol
Asociacin
Una asociacin unidireccional es una asociacin que puede ser navegada solo en un solo sentido. Una asociacin bidireccional es una asociacin que puede ser navegada en ambos sentidos. (si no se especifica una direccin es bidireccional)
asociacin bidireccional
GrupoDeUsuarios
0.. *
0 .. * usuario
Usuario
1 usuario
0 .. * clave
Password
asociacin unidireccional
Asociaciones en C#
public class Persona { private string nombre; private string apellido; private Empresa empleador; } public class Empresa { private string razonsocial; private string cuit; private Persona[] empleados; }
public class Persona { private string nombre; private string apellido; private Empresa empleador; }
Agregacin
Una agregacin modela una relacin todoparte en la que un lado de la relacin especifica el elemento contenedor (todo) y el otro lado especifica los contenidos (partes). Una agregacin modela una relacin tiene un.
agregacin 1 0 .* 1 0 .. *
subdepartamento
Departamento
Empleado
el todo
las partes
Composicin
Una relacin de composicin es una forma fuerte de agregacin en la que el contenedor es completamente responsable de sus contenidos y cada contenido est asociado a uno y solo un contenedor. El tiempo de vida de las partes contenidas es coincidente con el tiempo de vida del contenedor.
composicin Factura 1 .. *
Item
contenedor
contenidos
Clases Asociativas
Una clase asociativa es una clase con propiedades de clase y propiedades de asociacin. Pueden ser vistas como asociaciones con propiedades de clase o como clases con propiedades de asociacin.
* 1 .. * empleado
Empresa
empleador
Persona
contenidos
Herencia
Mecanismo mediante el cual una clase de objetos se define como un caso particular de otra clase de objetos. La representacin de una relacin es-un (un auto es un vehculo) , es-como (un dragn es como un pjaro) o es es-tipo-de (un crculo es un tipo de figura) entre dos clases.
Superclase
Subclase
Herencia
ANTES
Auto maxFuel maxNroDePasajeros modelo velocidad ... acelerar() desacelerar() doblarAIzq() doblarADcha() ...
DESPUES
Vehiculo maxFuel maxNroDePasajeros velocidad ... acelerar() desacelerar() ...
superclase
Avion maxAltitud maxFuel maxNroDePasajeros velocidad nroDeMotores ... acelerar() desacelerar() descender() ascender() ...
Herencia
La generalizacin permite agrupar caractersticas comunes entre clases (factorizacin de caractersticas comunes).
Figura ... ... generalizacin
Rectangulo
... ...
Herencia
La especializacin permite reusar una abstraccin existente (clase) para definir una nueva clase ms especfica.
Cuadrado
Herencia
La herencia simple se presenta cuando una clase hereda de una y solo un clase.
Vehiculo ... ...
Herencia
La herencia mltiple se presenta cuando una clase hereda de ms de una clase. (no todos los lenguajes orientados a objetos soportan herencia mltiple debido a que su gestin es complicada y raramente se encuentra en el mundo real)
ElementoconInteres ... ... ... ... Bienes ElementoAsegurable ... ...
No existe un proceso de software universal. Las caractersticas de cada proyecto (equipo de desarrollo, recursos, etc.) exigen que el proceso sea configurable
El Problema
La mayora de los proyectos de software utilizan procesos que no estn bien definidos. En su lugar los miembros del equipo (re)inventan sus propios procesos. Los procesos no estn apropiadamente relacionados con herramientas, no estn propiamente automatizados.
? ?
? ? ?
? ?
Proceso
Herramienta
Metodologa de modelamiento
Proceso
Modelos
Herramienta
Qu es un modelo?
Disear un modelo para sistemas de software es tan fundamental como tener un modelo para una construccin grande. Los buenos modelos:
Identifican
requerimientos y comunican informacin Se enfocan en como interactan los componentes sin necesidad de detalles Permite visualizar las relaciones entre componentes de diseo Mejor la comunicacin entre un equipo de desarrollo a travs del uso de un lenguaje grfico comn
Qu es UML?
Es un estndar notacional empleado para modelar y representar sistemas de software y sus partes desde distintas perspectivas, generando diagramas o artefactos.
Casos de Uso
Diagramas de Secuencia
Diagramas de Colaboracin
Diagramas de Estados
C D I G O
Diagramas de Actividad
Definiciones
Requerimiento: Especificacin de lo que un sistema debera hacer, el comportamiento que debera mostrar y las restricciones a considerar. Ingeniera de Requerimientos Proceso de descubrir, analizar, documentar y verificar esos servicios y restricciones Entender el problema de los usuarios en SU cultura y con SU lenguaje y construir el sistema que resuelve sus necesidades
Definiciones
Requerimientos no funcionales Propiedades o restricciones con las que el sistema debe ser implementado. Estas restricciones limitan las opciones para construir una solucin.
Ejemplos
Requerimientos funcionales: El cajero debe validar la clave facilitada por el cliente . El cajero debe dispensar un mximo de 1500 soles para cualquier tarjeta durante las 24 horas. Requerimientos no funcionales El sistema de cajero debe ser escrito en C++. La validacin de la clave debe ser en un mximo de tres segundos.
Requerimientos No Funcionales
Ivar Jacobson
Ivar
Jacobson, difundi su mtodo Objectory y public su primer libro sobre el tema en 1994. Desde la publicacin de su libro la comunidad de objetos ha adoptado los casos de uso en un grado notable.
Diagrama de Clases
Diagrama de Clases
Un
diagrama de clases es la vista de los paquetes y clases de la vista lgica Generalmente hay varios diagramas de clases El diagrama de clases principal es tpicamente una vista de los paquetes de alto nivel de la vista lgica Tpicamente cada paquete tiene su propio diagrama de clases principal
Relacin Generalizacin-Especializacin
Se dice que una clase es generalizada cuando agrupa caractersticas comunes de un grupo de clases. La Generalizacin y Especializacin son equivalentes en cuanto al resultado: la jerarqua y herencia establecidos
1.. *
Segun Participantes
N-Aria
Agregacin
Relacin Binaria
Es
una asociacin exactamente entre dos clases, incluyendo el caso de una asociacin reflexiva de una clase consigo misma. Las asociaciones estn representadas en los diagramas de clases con una lnea conectando las clases asociadas Datos puede fluir en una o ambas direcciones a lo largo de una conexin
Indicadores de Multiplicidad
Cada
trmino de asociacin contiene un indicador de multiplicidad Indica el nmero de objetos que participa en la relacin
Muchos
Exactamente uno Cero o mas Uno o mas Cero o uno Rango especificado
* 1 0..* 1..* 0..1
2..4
ocasiones la asociacin entre dos objetos se pueden promocionar a la categora de clase, se llama clase Asociacin. Esto indica una asociacin N-aria que tiene atributos, operaciones y asociaciones.
Alumno 3-10
Calificaciones
1..*
Curso
Relacin Agregacin
La
Agregacin indica que el objeto base utiliza al objeto incluido para poder funcionar. El objeto incluido existe por si mismo, el objeto base solo lo usa. Es un tipo de relacin dinmica, en donde el tiempo de vida del objeto incluido es independiente del que lo incluye Smbolo: Rombo transparente al lado de la clase base
Relacin Composicin
Es
un tipo de relacin esttica, en donde el tiempo de vida del objeto incluido esta condicionado por el tiempo de vida del que lo incluye. El Objeto base se contruye a partir del objeto incluido, es decir, es "parte/todo". Smbolo: Rombo relleno al lado de la clase base
Ejemplo
Un
Almacn posee Clientes y Cuentas (los rombos van en el objeto que posee las referencias). Cuando se destruye el Objeto Almacn tambin son destruidos los objetos Cuenta asociados, en cambio no son afectados los objetos Cliente asociados.
Composicin
Agregacin
Navegabilidad
Dada una asociacin entre dos clases, es posible navegar desde los objetos de una clase hacia los objetos de la otra clase.
Diagrama de Secuencia
Los Diagramas de Secuencia y de Colaboracin son usados para establecer un escenario del sistema, determinando los objetos y mensajes involucrados Un Diagrama de Secuencia muestra los objetos de un escenario mediante lneas verticales y los mensajes entre objetos como flechas conectando objetos
Diagramas de Secuencia
Elementos
Actor Objeto
John : Estudiante Formulario Registro Formulario Programa Curso Disponible
1: ingresar id 2: validar id
Libreto
Diagrama de Secuencia
: Encargado :WInPrstamos :Socio :Video :Prstamo