Vous êtes sur la page 1sur 82

El ABC de la programacin Orientada a Objetos

Programacin Orientada a Objetos

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

Enfoque Orientado a Objetos

Las clases y los objetos estn en todas partes


Vehculo Platero:Animal Animal

Punto Figura (1,3) (2,2) (2,1)

(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 & POO

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.

Programacin Estructurada & POO


Ejemplo.

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

representando sus caractersticas comportamiento, no importando lo compleja que pueda ser.

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

Un Objeto Tiene Estado


El

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

Un Objeto Tiene Comportamiento


El

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

Asignacin de la profesora Daz (Retorna:confirmacin) Curso Algebra 101

Registro del Sistema

Un Objeto tiene Identidad


Cada

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

Profesor S Daz ensea Algebra

Profesor S Daz ensea Algebra

Profesor S Daz ensea Algebra

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.

Compartimientos en una clase


Una clase est compuesta de tres secciones La primera seccin contiene el nombre de la clase La segunda seccin muestra la estructura (atributos) La tercera seccin muestra el comportamiento (operaciones) La segunda y la tercera seccin pueden ser suprimidas si se necesita que no se vean en el diagrama

Profesor

Profesor
Profesor

Profesor

nombre empID crear( ) grabar( ) borrar( ) cambiar( )

nombre empID

crear( ) grabar( ) borrar( ) cambiar( )

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(){ } }

+Nombre:string +Domicilio:string +Alumno(n:String; d:String) +setNombre(n:String) +getNombre():string

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#

Nombre = Jose Lopez Domicilio = nada

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

Gua de estilo en el nombramiento de clases


Ejemplo

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

Ejemplo: Estudiante, Profesor, SistemaDePago

Caractersticas de lenguaje de POO

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

Es la manera en que un objeto reacciona ante mensajes recibidos, bsicamente:


Enviando mensajes.

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

alu1 = new Alumno(Juan Perez,ejemplo);

alu2

= new Alumno(Abel Garcia,ejemplo);

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 entre Objetos

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)

Trabaja para Persona 1..* empleado 0 . .* empleador Empresa

rol etiqueta asociacin

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

contenedor Empleado ... ...

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() ...

Auto modelo ... doblarAIzq() doblarADcha() ... subclase

Avion maxAltitud nroDeMotores ... descender() ascender() ...

Herencia

La generalizacin permite agrupar caractersticas comunes entre clases (factorizacin de caractersticas comunes).
Figura ... ... generalizacin

Circulo ... ...

Rectangulo
... ...

Herencia

La especializacin permite reusar una abstraccin existente (clase) para definir una nueva clase ms especfica.

Rectangulo ... ...

especializacin ... ...

Cuadrado

Herencia

La herencia simple se presenta cuando una clase hereda de una y solo un clase.
Vehiculo ... ...

Herencia simple Auto ... ... ... ... Avion

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 ... ...

Herencia mltiple CuentaBancaria ... ...

Modelamiento de Objetos con UML

Qu es un Proceso de Desarrollo de SW?

Define Quin debe hacer Qu, Cundo y Cmo debe hacerlo


Sistema nuevo o modificado

Requisitos nuevos o modificados

Proceso de Desarrollo de Software

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?

Un Modelo es una Simplificacin de la Realidad

Porqu debe modelarse un software?

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

Unified Modeling Language

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.

Etapas donde se utiliza UML


Requerimientos Anlisis Diseo Implementacin

Tipos de Diagramas UML


Diagrama de Casos de Uso Diagrama de Clase Diagramas de Comportamiento Diagrama de Estados Diagrama de Actividad Diagramas de Interaccin Diagrama de Secuencia Diagrama de Colaboracin Diagramas de implementacin Diagrama de Componentes Diagrama de Despliegue

Relacin entre Diagramas


Diagramas de Distribucin Diagramas de Clases Diagramas de Componentes

Casos de Uso

Diagramas de Secuencia

Diagramas de Colaboracin

Diagramas de Estados

C D I G O

Diagramas de Actividad

Problemas de los proyectos de TI

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 funcionales: Describen la funcionalidad o servicio que debera ofrecer el sistema.

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

Relaciones entre clases


Binaria Multiplicidad

1.. *

Segun Participantes
N-Aria

0 .. * reflexiva , etc Clase Asociacion

Agregacin

Segun como se usan las clases


Composicin

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

Relacin N-Aria - Clase Asociacin


En

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

Los mensajes son dibujados cronolgicamente desde arriba hacia abajo

Diagramas de Secuencia
Elementos
Actor Objeto
John : Estudiante Formulario Registro Formulario Programa Curso Disponible

1: ingresar id 2: validar id

Linea de Vida Mensaje Foco de Control

3: ingresar semestre actual


Esta opcion se ejecutara si: Promedio Notas > 14 4: crear un nuevo programa 5: mostrar 6: obtener cursos

Libreto

Diagrama de Secuencia
: Encargado :WInPrstamos :Socio :Video :Prstamo

prestar(video, socio) verificar situacin socio verificar situacin video

registrar prstamo entregar recibo

Vous aimerez peut-être aussi