Modulo 2. Programacion Orientada a Objetos

19
Es una coincidencia. Nunca las han visto Mod. 2

description

Modulo 2. Programacion Orientada a Ob

Transcript of Modulo 2. Programacion Orientada a Objetos

Es una coincidencia. Nunca las han visto

Es una coincidencia.Nunca las han vistoMod. 2Fases de anlisis y diseoAnlisis 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

AbstraccinEs el proceso de simplificar un problema complejo enfocndose tan slo en los aspectos relevantes para la solucin.En el desarrollo de software esto significa centrarse en lo que es y hace un objeto antes de decidir cmo debera ser implementado.

Abstraccin

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

Modificadores de accesoModificadorClase a nivel archivoClase anidadaVariableMtodoConstructorBloque de cdigopublicSISISISISINOprivateNOSISISISINOprotectedNOSISISISINODEFAULTSISISISISIN/AEncapsulacinLa regla general de encapsulacin es: OCULTAR LOS ATRIBUTOS (private) y proporcionar interfaces pblicas, es decir mtodos (public) get() y set(). 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.

Acoplamiento y CohesinTodo 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 .

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

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

ABAcoplamientoSi A usa a B (por ejemplo, crea una instancia de B), pero B no usa A, entonces son dbilmente acoplados (loosely coupled).

ABAcoplamientoSi ambas A y B se utilizan entre si, entonces estn estrechamente acopladas (tightly coupled).

ABCohsionPiense en el siguiente escenario: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?.

CohsionMientras que el acoplamiento se refiere a la forma en que dos clases interactan unas con otras. 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.

CohsionEl objetivo es disear las clases con gran cohesin, que realicen tareas bien definidas y relacionadas (llamada tambin la cohesin funcional). 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

Principios orientados a objetos(Weak vs. Strong) Encapsulation (Tight vs. Loose) Coupling (Low vs. High) Cohesion 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

Situaciones comnes y sus causasSi tienes que modificar algo en t programa, vas a tener que cambiar MUCHAS CLASES.BAJA COHESINSi Modificas algo en t programa, afectas a varias cosas.ALTO ACOPLAMIENTOPuedes reducir el cdigo sin perder funcionamientoTENAS BAJA COHESIN, AHORA TIENES ALTA COHESINUtilizas getter, setter, y private correctamente.UTILIZAS ENCAPSULAMIENTO.