Programación orientada a objetos (POO) [JAVA]

18
Módulo 2 Programación Orientada a Objetos

description

 

Transcript of Programación orientada a objetos (POO) [JAVA]

Page 1: Programación orientada a objetos (POO) [JAVA]

Módulo 2 Programación

Orientada a Objetos

Page 2: Programación orientada a objetos (POO) [JAVA]

Fases de análisis y diseño:

2

Análisis

• ¿Qué?objetivos debe

perseguir el sistema.

• Se definen los

elementos implicados:

Usuarios, dispositivos y

otros sistemas, las

actividades Y

comportamientos.

Diseño

• ¿Cómo? alcanzará el

sistema esos objetivos.

• Se crea un modelo de

los elementos

implicados (UML ->

Unified Modeling

Language).

Page 3: Programación orientada a objetos (POO) [JAVA]

28/04/2013

Page 4: Programación orientada a objetos (POO) [JAVA]

Abstracción:

• Es el proceso de simplificar un problema complejo

enfocándose tan sólo en los aspectos relevantes para la

solución.

• En el desarrollo de software esto significa centrarse en lo

que es y hace un objeto antes de decidir cómo debería ser

implementado.

4

Page 5: Programación orientada a objetos (POO) [JAVA]

Abstracción:

Page 6: Programación orientada a objetos (POO) [JAVA]

¿Cuál es la diferencia entre Clase

y Objeto?:

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

• Una clase es el prototipo del objeto.

• Le dice a la máquina virtual cómo 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.

Clase

JVM

Page 7: Programación orientada a objetos (POO) [JAVA]

Modificadores de acceso:

Modificador Clase a

nivel de

archivo

Variable Método Constructor Bloque

de código

public SI SI SI SI NO

private NO SI SI SI NO

protected NO SI SI SI NO

DEFAULT SI SI SI SI N/A

Page 8: Programación orientada a objetos (POO) [JAVA]

Encapsulación:

• La regla general de encapsulación es: OCULTAR LOS

ATRIBUTOS (private) y proporcionar interfaces públicas, es

decir métodos (public) get() y set().

• Se denomina encapsulamiento al ocultamiento del estado, es

decir, de los datos miembro, de un objeto de manera que

sólo 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

cómo lo hace.

• Por lo tanto, la encapsulación garantiza la integridad de

los datos que contiene un objeto.

Page 9: Programación orientada a objetos (POO) [JAVA]

Acoplamiento y cohesión:

• Todo desarrollador de software debe tener en cuenta que se

obtienen tantos más beneficios cuanto más alta es la

cohesión (High Cohesion) y más bajo es el acoplamiento

(Loose coupling) en la programación orientada a objetos .

Page 10: Programación orientada a objetos (POO) [JAVA]

Acoplamiento:

• El acoplamiento débil (Loose coupling) se refiere a reducir al

mínimo la dependencia de un objeto en otros objetos.

• En otras palabras, puede cambiar la implementación de una

clase sin afectar a otras clases.

• Estas propiedades hacen que el código extensible y fácil de

mantener.

Page 11: Programación orientada a objetos (POO) [JAVA]

Acoplamiento:

• 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 método en el otra), no están acopladas.

A B

Page 12: Programación orientada a objetos (POO) [JAVA]

Acoplamiento:

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

no usa A, entonces son débilmente acoplados (loosely

coupled).

A B

Page 13: Programación orientada a objetos (POO) [JAVA]

Acoplamiento:

Rev. 1.0 28/04/2013

• Si ambas A y B se utilizan entre si, entonces están

estrechamente acopladas (tightly coupled).

A B

Page 14: Programación orientada a objetos (POO) [JAVA]

Cohesión:

• Piense en el siguiente escenario:

• La clase A necesita hacer una conexión a una Base de Datos (DB), para ello en

la clase A declaras un método llamado getConnection() donde haces la

conexión a la DB mediante un usuario y contraseña.

• La clase B también necesita enlazarse a la base de datos y decides copiar el código dentro del método getConnection() de la clase A y pegarlo en la clase

B.

• Creas una clase C y haces el mismo procedimiento anterior.

• Nuestro diseño cumple con el objetivo, tenemos un par de líneas que hacen la

conexión satisfactoriamente a la DB.

• ¿Qué sucederá si por alguna razón cambia el usuario y

contraseña de la DB?.

Page 15: Programación orientada a objetos (POO) [JAVA]

Cohesión:

• Mientras que el acoplamiento se refiere a la forma en que

dos clases interactúan unas con otras.

• La cohesión se refiere a cómo una clase se estructura.

• La cohesión es una medida interna de la clase referente a lo

bien estructurado y muy relacionado con la funcionalidad en

una clase.

Page 16: Programación orientada a objetos (POO) [JAVA]

Cohesión:

• El objetivo es diseñar las clases con gran cohesión, que

realicen tareas bien definidas y relacionadas (llamada

también la cohesión funcional).

• Los métodos públicos de una clase altamente cohesivos

suelen poner en práctica una sola tarea específica que se

relaciona con el propósito de la clase.

• Un método en una clase no debe realizar una tarea que en

realidad debería ser implementada por otra clase.

Page 17: Programación orientada a objetos (POO) [JAVA]

Cohesión: Yo hago la

conexión a la

base de

datos.

Muy bien yo utilizo tu

método getConnection(), si

algo cambia tu

solucionas los

problemas.

Yo también

necesito

conectarme

a la BD.

¿Hay alguien que

se conecte ya a la

DB?, no quiero

trabajar doble

Page 18: Programación orientada a objetos (POO) [JAVA]

Principios Orientados a objetos:

• (Weak vs. Strong) Encapsulation

• (Tight vs. Loose) Coupling

• (Low vs. High) Cohesion

higher cohesion <=> looser coupling