Programación orientada a objetos (Dominguez Gonzalez, Jose Antonio & Perez Hernandez, Juan Daniel)

16
Programación Orientada a Objetos “Conceptos POO” Por: Dominguez Gonzalez, Jose Antonio Pérez Hernández, Juan Daniel

Transcript of Programación orientada a objetos (Dominguez Gonzalez, Jose Antonio & Perez Hernandez, Juan Daniel)

Page 1: Programación orientada a objetos (Dominguez Gonzalez, Jose Antonio & Perez Hernandez, Juan Daniel)

Programación Orientada a Objetos

“Conceptos POO”

Por: Dominguez Gonzalez, Jose Antonio

Pérez Hernández, Juan Daniel

Page 2: Programación orientada a objetos (Dominguez Gonzalez, Jose Antonio & Perez Hernandez, Juan Daniel)

Clases

Características de un buen programa:

• Fácil de entender�

• Mantenible�

• Reutilizable�

Page 3: Programación orientada a objetos (Dominguez Gonzalez, Jose Antonio & Perez Hernandez, Juan Daniel)

Clases Hay principios de diseño que ayudan en el diseño de las clases y la

estructura del programa:• Diseño dirigido por responsabilidades�

• Acoplamiento y cohesión�• Refactorización�

Page 4: Programación orientada a objetos (Dominguez Gonzalez, Jose Antonio & Perez Hernandez, Juan Daniel)

Métodos

Es un algoritmo asociado a un objeto o clase cuya ejecución se desencadena tras la recepción de un mensaje. Es lo que el objeto puede hacer

Page 5: Programación orientada a objetos (Dominguez Gonzalez, Jose Antonio & Perez Hernandez, Juan Daniel)

Constructores y Destructores

Son métodos que permiten establecer el estado inicial y final de un objeto. Los constructores se pueden definir con un conjunto de argumentos arbitrario, pero no pueden devolver nada. Y los destructores no pueden recibir ni devolver ningún valor.

• El constructor debe llamarse igual que la clase, y el destructor el nombre de la clase precedido del carácter.

En ObjGraf.h:

class TObjGraf { ...

// Constructor de objetos TObjGraf TObjGraf

(TPaintBox *_PaintBox, Tcolor_Color=clBlack,

int _X=0, int _Y=0);

// El destructor sería: ~TObjGraf (void); };

Page 6: Programación orientada a objetos (Dominguez Gonzalez, Jose Antonio & Perez Hernandez, Juan Daniel)

Constructores

los constructores:

• Se llaman igual que la clase.

• Solamente pueden tener modificador de acceso.

• Podemos poner la lista de argumentos que mejor obedezca a nuestras necesidades.

Page 7: Programación orientada a objetos (Dominguez Gonzalez, Jose Antonio & Perez Hernandez, Juan Daniel)

Herencia

donde una clase nueva se crea a partir de una clase existente. La principal ventaja de la herencia es la capacidad para definir atributos y métodos nuevos para la subclase, que luego se aplican a los atributos y métodos heredados.

Page 8: Programación orientada a objetos (Dominguez Gonzalez, Jose Antonio & Perez Hernandez, Juan Daniel)

Objeto• Es una unidad dentro de un

programa de computadora que consta de un estado y de un comportamiento, que a su vez constan respectivamente de datos almacenados y de tareas realizables durante el tiempo de ejecución.

• Un objeto puede ser creado instanciando una clase, como ocurre en la programación orientada a objetos, o mediante escritura directa de código y la replicación otros objetos, como ocurre en la programación basada en prototipos.

Page 9: Programación orientada a objetos (Dominguez Gonzalez, Jose Antonio & Perez Hernandez, Juan Daniel)

Abstracción

La abstracción consiste en aislar un elemento de su contexto o del resto de los elementos que lo acompañan. En programación, el término se refiere al énfasis en el "¿qué hace?" más que en el "¿cómo lo hace?" (característica de caja negra). El común denominador en la evolución de los lenguajes de programación, desde los clásicos o imperativos hasta los orientados a objetos, ha sido el nivel de abstracción del que cada uno de ellos hace uso.

Page 10: Programación orientada a objetos (Dominguez Gonzalez, Jose Antonio & Perez Hernandez, Juan Daniel)

Cohesión

La cohesión tiene que ver con que cada módulo del sistema se refiera a un único proceso o entidad. A mayor cohesión, mejor: el módulo en cuestión será más sencillo de diseñar, programar, probar y mantener.

En el diseño estructurado, se logra alta cohesión cuando cada módulo (función o procedimiento) realiza una única tarea trabajando sobre una sola estructura de datos.

Page 11: Programación orientada a objetos (Dominguez Gonzalez, Jose Antonio & Perez Hernandez, Juan Daniel)

Encapsulamiento

• se denomina encapsulamiento al ocultamiento del estado, es decir, de los datos miembro de un objeto de manera que sólo se pueda cambiar mediante las operaciones definidas para ese objeto.

Page 12: Programación orientada a objetos (Dominguez Gonzalez, Jose Antonio & Perez Hernandez, Juan Daniel)

Clases AbstractasEste Tipo de Clases nos permiten crear “método generales”, que recrean un comportamiento común, pero sin especificar cómo lo hacen. A nivel de código tienen por particularidad que algunos de sus métodos no tienen “cuerpo de declaración”, ¿qué quiere decir esto? no tienen las llaves { } ni código dentro de ellos y deben estar precedidos por la palabra clave abstract. Si una clases contiene uno o más métodos abstractos está clase debe ser abstracta.

Estas clases como son generalidades no pueden ser instanciadas por ningún objeto (se dice que su nivel de abstracción es demasiado alto), entonces su único fin es ser heredado/extendido por otras clases.

Page 13: Programación orientada a objetos (Dominguez Gonzalez, Jose Antonio & Perez Hernandez, Juan Daniel)

Interfaces

Las interfaces, tal como las clases abstractas. no se pueden instanciar. Sus métodos deben ser re-escritos por la clase que implemente.

Page 14: Programación orientada a objetos (Dominguez Gonzalez, Jose Antonio & Perez Hernandez, Juan Daniel)

Polimorfismo

Es la capacidad que tienen los objetos de una clase de responder al mismo mensaje o evento en función de los parámetros utilizados durante su invocación. Un objeto polimórfico es una entidad que puede contener valores de diferentes tipos durante la ejecución del programa.

Page 15: Programación orientada a objetos (Dominguez Gonzalez, Jose Antonio & Perez Hernandez, Juan Daniel)

Acoplamiento

El acoplamiento mide el grado de relacionamiento de un módulo con los demás. A menor acoplamiento, mejor: el módulo en cuestión será más sencillo de diseñar, programar, probar y mantener.En el diseño estructurado, se logra bajo acoplamiento reduciendo las interacciones entre procedimientos y funciones, reduciendo la cantidad y complejidad de los parámetros y disminuyendo al mínimo los parámetros por referencia y los efectos colaterales.

Page 16: Programación orientada a objetos (Dominguez Gonzalez, Jose Antonio & Perez Hernandez, Juan Daniel)

Asociación

La asociación se podría definir como el momento en que dos objetos se unen para trabajar juntos y así, alcanzar una meta.

Un punto a tomar muy en cuenta es que ambos objetos son independientes entre sí, veremos un poco más adelante qué implicación tiene esto. Para validar la asociación, la frase “Usa un”, debe tener sentido:

El ingeniero usa una computadora

El cliente usa tarjeta de crédito.