You are on page 1of 51

1

Homologar conceptos del Paradigma Orientada a


Objetos.

Poder realizar anlisis y diseo OO.


Aplicar los conceptos aprendidos en el curso.
Aumentar la calidad en los desarrollos en menos
tiempo.

Es parte de la evolucin del pensamiento humano, los


paradigmas han estado presentes en diferentes aristas
de la concepcin del mundo.
Es un conjunto completo de valores, creencias y tcnicas
que son compartidas por todos los miembros de una
comunidad especfica.
Los paradigmas de programacin son una manera
determinada de resolver un problema, surgen con los
cambios que va teniendo la humanidad tratando de
cubrir nuevas necesidades.

Estructuras en C

Lenguaje de Modelado.
Proporciona una notacin grfica
aceptada mundialmente

No es slo para modelar


programas orientados a objetos
Tiene varias versiones siendo la
ms reciente (estable) la 2.4.1
lanzada en agosto del 2011
7

10

El mundo est formado por objetos, desde una etapa


muy temprana categorizamos los objetos y descubrimos
su comportamiento.

11

Clase
Plantilla que permite crear objetos Describe un grupo de
objetos con atributos (propiedades), operaciones
(comportamiento) y relaciones en comn.

Objeto
Abstraccin con un significado y lmites claros del problema
en cuestin. Tiene un estado (lo que sabe, atributos) y
comportamiento (lo que puede hacer, mtodos).
12

Objeto
Todos los objetos presentan una identidad, que los hace
distinguibles, un estado y un comportamiento.
El trmino identidad significa que los objetos se
distinguen por su existencia inherente y no por
propiedades descriptivas que puedan tener.
Son instancias de una clase, cada objeto conoce su clase.

La agrupacin en clases de los problemas permite la


abstraccin de un problema.

13

Herencia
Relacin entre clases en la cual una clase comparte la
estructura y comportamiento definidos en otra clase.

Polimorfismo
Se refiere a la capacidad para que varias clases derivadas de
una antecesora utilicen un mismo mtodo de forma
diferente, cada clase sabe cmo realizar tal operacin.
14

Tipos de Polimorfismo
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".
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.

15

int addition(int,int)
float addition(float, float)
char addition(char, char)

El Polimorfimo subtipado permite redefinir un mtodo en clases que se hereda


de una clase base.
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.

16

Clase Persona

Objeto objPersona de la clase Persona

public class Persona


{

Persona objPersona = new Persona();

17

Clase Persona
public class Persona
{
private string nombre;

Encapsulamiento

public string Nombre


{
get { return nombre; }
set { nombre = value; }
}

private int edad;


public int Edad
{
get { return edad; }
set { edad = value; }
}
public void Caminar()
{

Clase Empleado que hereda de la clase Persona

public class Empleado:Persona


{

18

}
}

Sobrecarga
La posibilidad de tener dos o ms mtodos con el mismo
nombre pero funcionalidad diferente. Es necesario que
dichos mtodos tengan diferentes argumentos, tambin
pueden variar el tipo de retorno.

Abstraccin
Son las caractersticas y comportamientos de un objeto, sin
revelar cmo se implementan. Significa quitar las
propiedades y acciones de un objeto para dejar slo
aquellas que sean necesarias.

19

Encapsulamiento
Agrupa cierta funcionalidad de un mtodo (un mtodo slo
debe tener una funcin). Permite reunir a todos los
elementos que pueden considerarse pertenecientes a una
misma entidad, al mismo nivel de abstraccin.
La funcionalidad del objeto se oculta.
20

public class Persona


{// inicio de la clase
private string nombre;
public string Nombre
{
get { return nombre; }
Sobrecarga
set { nombre = value; }
}
private int edad;
public int Edad
{
public Persona()
get { return edad; }
{
set { edad = value; }
nombre = null;
}
edad = 0;
public void Caminar()
}
{
}
public Persona(string nombrePersona, int edadPersona)
{
nombre = nombrePersona;
edad = edadPersona;

}
}// fin de la clase

21

Modificadores de acceso
Pblico: se puede acceder al miembro de la clase desde
cualquier lugar.
Protegido: slo se puede acceder al miembro de la clase
desde la propia clase o desde una clase que herede de
ella.
Privada: slo se puede acceder al miembro de la clase
desde la propia clase.
Los modificadores de acceso permiten aumentar la
cohesin de los componentes del sistema.

22

Alta Cohesin
Nos dice que la informacin que almacena una clase
debe de ser coherente y debe estar (en la medida de lo
posible) relacionada con la clase.
Cuando las clases ejecuta una y slo una tarea, teniendo
un nico objetivo a cumplir, se dice que tiene
Cohesividad Funcional.

23

Bajo acoplamiento
Se refiere a tener las clases lo menos ligadas entre s. De tal
forma que en caso de producirse una modificacin en
alguna de ellas, se tenga la mnima repercusin posible en
el resto de clases, potenciando la reutilizacin, y
disminuyendo la dependencia entre las clases.
Acoplamiento de Contenido: Cuando un mdulo referencia directamente el
contenido de otro mdulo. (En lenguajes de alto nivel es muy raro).
Acoplamiento Comn: Cuando dos mdulos acceden (y afectan) a un mismo
valor global.
Acoplamiento de Control: Cuando un mdulo le enva a otro un elemento de
control que determina la lgica de ejecucin del mismo.

24

Clase Abstracta
Nos permiten crear mtodo generales, que recrean un
comportamiento comn, pero sin especificar cmo lo
hacen. Una clase abstracta puede incluir mtodos
implementados y no implementados o abstractos,
miembros dato constantes y otros no constantes. Puede
heredarse.

25

Clase Abstracta

public abstract class ClaseAbstracta


{
abstract public int metodoAbstracto();
}

Clase Abstracta heredada en la clase Miclase

public class Miclase:ClaseAbstracta


{
public override int metodoAbstracto()
{
return 0;
}
}

26

Interfaz
Las interfaces, tal como las clases abstractas. No se pueden
instanciar. Sus mtodos deben ser re-escritos por la clase
que implemente, es como un contrato es decir es una lista
de mtodos no implementados, adems puede incluir la
declaracin de constantes. Debe implementarse.

27

public interface IMiInterfaz


{
int ExisteUsuario(string usuario, string clave);
bool RegistraEntradaUsuario(int usuarioID);
}

Interfaz

public class Empleado:IMiInterfaz


{
public int ExisteUsuario(string usuario, string clave)
{
int idUsuario = 1;
return idUsuario;
}
public bool RegistraEntradaUsuario(int usuarioID)
{
return true;
}
}

Implementacin de la
Interfaz

28

Principio de Responsabilidad nica


El PRU tiene que ver con el nivel de acoplamiento entre
mdulos dentro de la ingeniera del software. En trminos
prcticos,
este
principio
establece
que:
Una clase debe tener una y slo una nica causa por la
cual puede ser modificada.
La correcta aplicacin del PRU simplifica el cdigo y se
traduce en facilidad de mantenimiento, mayores
posibilidades de reutilizacin de cdigo y de crear unidades
de testeo especficas para cada responsabilidad.
29

PRINCIPIO DE OPEN / CLOSED


Las dos caractersticas del principio: abierto en extensin y
cerrado en modificacin. Las claves para la correcta
aplicacin de este principio son la abstraccin y el
polimorfismo.

30

La divisin entre el anlisis y diseo es poco clara, el trabajo


de los dos se mezcla continuamente "Debatir sobre la
definicin no resulta constructivo en absoluto y no se
emplean con el mismo sentido en los mtodos: lo
importante es saber resolver el problema de crear software
y darle mantenimiento con mayor eficiencia, con mayor
rapidez y anlisis a un menor precio.

31

32

33

34

35

Es frecuente omitir conceptos durante la fase inicial de identificacin y


descubrirlos ms tarde cuando se examinen los atributos o asociaciones
o durante la fase de diseo. Un modelo conceptual muestra conceptos
del mundo real

36

37

38

Notacin de UML para clases, instancias y conjunto de instancias

39

Niveles de visibilidad
(-) Privado : es el ms fuerte. Esta parte es totalmente invisible.

(#) Protegido: Los atributos y operaciones protegidos estn visibles para las
clases derivadas de la original.
(+) Pblico: Los atributos/operaciones pblicos son visibles a otras clases.

40

Niveles de visibilidad
(-) Privado : es el ms fuerte. Esta parte es totalmente invisible.

(#) Protegido: Los atributos y operaciones protegidos estn visibles para las
clases derivadas de la original.
(+) Pblico: Los atributos/operaciones pblicos son visibles a otras clases.

41

42

43

44

45

retorno : mensaje(parametro:tipoParametro) : tipoRetorno


En esta sintaxis puede incluirse un valor de retorno anteponindole al
mensaje un nombre de variable y un operador de asignacin (":="), es
opcional mostrar el tipo de valor de retorno. Si se desea modelar una
iteracin en el mensaje, se agrega un asterisco (*) al nmero de
secuencia.
2: mostrar(x,y)
1.3.1: p: = encontrar(espec)
[x<0] 4: invertir(x, color)
1*:[i:=1..10] mensaje2()

mensaje simple
llamada anidada con valor de retorno
mensaje condicional
mensaje iterativo

46

47

Requerimientos
Permitir crear y editar diagramas de clase y colaboracin.
Las descripcin de las clases debe poder llegar a un nivel
en el cual puedan ser implementadas fcilmente en un
lenguaje de programacin OO.
Presentar una interfaz amigable al usuario
personalizando el Look And Feel

Proporcionar al usuario un rbol grfico que permita


tener un orden en los diagramas creados (rbol de
proyecto).

48

Requerimientos

49

Requerimientos
El sistema debe presentar un buen diseo para que
futuros desarrolladores puedan incrementar nuevas
funcionalidades fcilmente.
Se deben poder imprimir los diagramas generados.

50

51

You might also like