Está en la página 1de 19

Es una

coincidencia.
Nunca las han
visto
Mod. 2

Anlisis

Fases de
anlisis y
diseo

Qu?objetivos debe perseguir el sistema.


Se definen los elementos implicados: Usuarios,
dispositivos y otros sistemas, las actividades Y
comportamientos.

Diseo
Cmo? alcanzar el sistema esos objetivos.
Se crea un modelo de los elementos implicados (UML
-> Unified Modeling Language).

Fases de
anlisis y
diseo

Es el proceso de simplificar un problema complejo


enfocndose tan slo en los aspectos relevantes para
la solucin.

Abstraccin

En el desarrollo de software esto significa centrarse


en lo que es y hace un objeto antes de decidir cmo
debera ser implementado.

Abstraccin

Una clase no es un objeto. (pero se usa para


construirlo).
Una clase es el prototipo del objeto.

Cul es la
diferencia
entre clase
y Objeto?

Le dice a la mquina virtual cmo crear un objeto de


cierto ese tipo.
Cada objeto de esa clase puede tener sus propios
valores para las variables de instancia de esa clase.

Modificador
es de
acceso

Modifica
dor

Clase a
nivel
archivo

Clase
anida
da

Variab Mto
le
do

Construc Bloque
tor
de
cdigo

public

SI

SI

SI

SI

SI

NO

private

NO

SI

SI

SI

SI

NO

protecte
d

NO

SI

SI

SI

SI

NO

DEFAULT

SI

SI

SI

SI

SI

N/A

La regla general de encapsulacin es: OCULTAR LOS


ATRIBUTOS (private) y proporcionar interfaces
pblicas, es decir mtodos (public) get() y set().

Encapsulaci
n

Se denomina encapsulamiento al ocultamiento del


estado, es decir, de los datos miembro, de un objeto
de manera que slo se puede cambiar mediante las
operaciones definidas para ese objeto.
Esto es conveniente porque lo que nos interesar
ser conocer qu hace la Clase pero no ser
necesario saber cmo lo hace.
Por lo tanto, la encapsulacin garantiza la
integridad de los datos que contiene un objeto.

Acoplamien
to y
Cohesin

Todo desarrollador de software debe tener en cuenta


que se obtienen tantos ms beneficios cuanto ms
alta es la cohesin (High Cohesion) y ms bajo
es el acoplamiento (Loose coupling) en la
programacin orientada a objetos .

Acoplamien
to

El acoplamiento dbil (Loose coupling) se refiere a


reducir al mnimo la dependencia de un objeto en
otros objetos.
En otras palabras, puede cambiar la implementacin
de una clase sin afectar a otras clases.
Estas propiedades hacen que el cdigo extensible y
fcil de mantener.

Acoplamien
to

Por ejemplo, considere dos clases, A y B. Si estas no


se utilizan entre si (ninguna de ellas crea una
instancia de la otra o invoca un mtodo en el otra), no
estn acopladas.

Acoplamien
to

Si A usa a B (por ejemplo, crea una instancia de B),


pero B no usa A, entonces son dbilmente acoplados
(loosely coupled).

Acoplamien
to

Si ambas A y B se utilizan entre si, entonces estn


estrechamente acopladas (tightly coupled).

Piense en el siguiente escenario:

Cohsion

La clase A necesita hacer una conexin a una Base de Datos


(DB), para ello en la clase A declaras un mtodo llamado
getConnection() donde haces la conexin a la DB mediante un
usuario y contrasea.
La clase B tambin necesita enlazarse a la base de datos y
decides copiar el cdigo dentro del mtodo getConnection() de la
clase A y pegarlo en la clase B.
Creas una clase C y haces el mismo procedimiento anterior.
Nuestro diseo cumple con el objetivo, tenemos un par de lneas
que hacen la conexin satisfactoriamente a la DB.
Qu suceder si por alguna razn cambia el usuario y
contrasea de la DB?.

Mientras que el acoplamiento se refiere a la forma en


que dos clases interactan unas con otras.

Cohsion

La cohesin se refiere a cmo una clase se


estructura.
La cohesin es una medida interna de la clase
referente a lo bien estructurado y muy relacionado
con la funcionalidad en una clase.

El objetivo es disear las clases con gran cohesin,


que realicen tareas bien definidas y relacionadas
(llamada tambin la cohesin funcional).

Cohsion

Los mtodos pblicos de una clase altamente


cohesivos suelen poner en prctica una sola tarea
especfica que se relaciona con el propsito de la
clase.
Un mtodo en una clase no debe realizar una tarea
que en realidad debera ser implementada por otra
clase.

Cohsion

(Weak vs. Strong) Encapsulation


(Tight vs. Loose) Coupling
(Low vs. High) Cohesion

Principios
orientados
a objetos

higher cohesion <=> looser coupling


Es decir, no porque tengas alta cohesion, quiere
decir que tienes bajo acoplamiento, AMBAS
COSAS SON DIFERENTES Y NO VAN DE LA MANO

Si tienes que modificar algo en t programa,


vas a tener que cambiar MUCHAS CLASES.
BAJA COHESIN

Si Modificas algo en t programa, afectas a


varias cosas.
ALTO ACOPLAMIENTO

Situaciones
comnes y
sus causas

Puedes reducir el cdigo sin perder


funcionamiento
TENAS BAJA COHESIN, AHORA TIENES ALTA
COHESIN

Utilizas getter, setter, y private correctamente.


UTILIZAS ENCAPSULAMIENTO.