Top Banner
Lenguaje de Programación Orientada a Objetos Marielena Lujano G.
21

Lenguaje de Programación Orientada a Objetos

Feb 08, 2017

Download

Data & Analytics

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Lenguaje  de  Programación  Orientada  a Objetos

Lenguaje de Programación Orientada a Objetos

Marielena Lujano G.

Page 2: Lenguaje  de  Programación  Orientada  a Objetos

La programación orientada a objetos, es, desde su raíz, una forma de concebir un programa de computadora. Un programa es una serie de instrucciones que le indican a la computadora que hacer. La manera en que la POO ve a un programa es como un conjunto de objetos que operan juntos en formas predefinidas para realizar tareas.

Programación Orientada a Objetos

Page 3: Lenguaje  de  Programación  Orientada  a Objetos

Abstracción: Cada objeto en el sistema sirve como modelo de un “agente” abstracto que puede realizar trabajo, informar y cambiar su estado , y “comunicarse” con otros objetos en el sistema sin revelar cómo se implementan estas características.

Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.

Principio de ocultación: El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción

Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en “tiempo de ejecución”, esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en “tiempo de compilación”) de polimorfismo, tales como las plantillas y lasobrecarga de operadores de C++.

Herencia: las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple; esta característica no está soportada por algunos lenguajes (como Java).

CARACTERISTICAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

Page 4: Lenguaje  de  Programación  Orientada  a Objetos

Objetos

Un objeto es un elemento independiente de un programa de computadora, que representa a un grupo asociado de características y esta diseñado para realizar tareas específicas. A los objetos también se les conoce como instancias.

FUNDAMENTO DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

Page 5: Lenguaje  de  Programación  Orientada  a Objetos

Clases:

Una clase es una plantilla que se utiliza para crear múltiples objetos con características similares. Las clases engloban todas las características de un conjunto particular de objetos. Cuando escribe un programa en un lenguaje orientado a objetos, usted no define objetos individuales, sino que define clases de objetos.

Page 6: Lenguaje  de  Programación  Orientada  a Objetos
Page 7: Lenguaje  de  Programación  Orientada  a Objetos

En general, cada clase que escribas esta compuesta de dos componentes: Atributos Comportamiento

Comportamiento: Es la manera en que una clase de objetos puede hacer cualquier cosa para sí o para otros objetos. El comportamiento de una clase determina qué objetos de esa clase hacen cambiar sus atributos y también qué hacen cuando otros objetos les piden hacer algo. El comportamiento para una clase de objetos se implementa a través de métodos. Atributos: Los atributos son las cosas individuales que diferencian una clase de objetos de otros y determinan la apariencia, estado y otras cualidades de la clase. También pueden incluir información acerca del estado de un objeto. En una clase, los atributos están definidos por variables. Cada objeto puede tener valores distintos para sus variables y a éstas se les denomina variables de instancia.

COMPORTAMIENTO Y ATRIBUTOS

Page 8: Lenguaje  de  Programación  Orientada  a Objetos
Page 9: Lenguaje  de  Programación  Orientada  a Objetos

Un especificador (modificador) de acceso o alcance es una palabra clave (reservada) que nos permite controlar nivel de alcance que tiene cada variable, método o clase. Existen tres public, protected, private, static, final.

public establece un nivel de acceso total, es decir una clase public puede ser usada por otras clases del mismo paquete y de otros paquetes no relacionados, lo mismo para los métodos y variables. public es el especificador de acceso mas utilizado en estudiantes ya que no nos enfrentamos a la dificultad (¿..?) de tener que determinar que se puede y que no se puede utilizar en un clase.

private establece un nivel restringido de acceso, En el cual los miembros declarados como tal solo son accesibles dentro de la clase, aunque la clase herede de esta ultima. las variable y métodos private son usados cuando los clientes de una clase no deben preocuparse (ni les debe importar) como se efectúan las acciones claves de un programa. establecer miembros private establece el mayor nivel de seguridad.

protected establece un nivel de acceso intermedio entre public y private en el que los miembros solo son accesibles por clases y métodos dentro del mismo paquete.

static el modificador static crea variables y metodos de clase (a esto es lo que nos referimos cuando hablamos de variables de clase) estos objetos pueden ser llamados desde cualquier parte de la clase modificando sus valores reales de forma definitiva.

final el modificador final, crea una constante, en realidad en java no existen las constantes, pero final hace que las variables imiten su comportamiento. Cualquier intento por modificar una variable final creara un error en tiempo de ejecucion. Un ejemplo de final, es la variable PI, de la clase Math

ESPECIFICADORES DE ACCESO

Page 10: Lenguaje  de  Programación  Orientada  a Objetos

Un método constructor es aquél que un objeto llama cuando es creado, es decir, cuando se construye. Un constructor tiene las siguientes características: • Siempre tienen el mismo nombre que la clase • No tienen tipo de regreso • El objetivo de un constructor es el de inicializar un objeto cuando éste es creado. Asignaremos los valores iniciales así como los procesos que ésta clase deba realizar. • Se utiliza para crear tablas de métodos virtuales y poder así desarrollar el polimorfismo, una de las herramientas de la programación orientada a objetos. Al utilizar un constructor, el compilador determina cual de los objetos va a responder al mensaje (virtual) que hemos creado. • Tiene un tipo de acceso, un nombre y un paréntesis.

CONSTRUCTORES

Page 11: Lenguaje  de  Programación  Orientada  a Objetos
Page 12: Lenguaje  de  Programación  Orientada  a Objetos

Un destructor es una función miembro con igual nombre que la clase, pero precedido por el carácter ~. Una clase sólo tiene una función destructor que, no tiene argumentos y no devuelve ningún tipo. o Un destructor realiza la operación opuesta de un

constructor, limpiando el almacenamiento asignado a los objetos cuando se crean. El compilador llama automáticamente a un destructor del objeto cuando el objeto sale fuera del ámbito.

o Si un destructor no se define en una clase, se creará por defecto un destructor que no hace nada.

DESTRUCTORES

Page 13: Lenguaje  de  Programación  Orientada  a Objetos

La herencia es específica de la programación orientada a objetos, donde una clase nueva se crea a partir de una clase existente. La herencia (a la que habitualmente se denomina subclases) proviene del hecho de que la subclase (la nueva clase creada) contiene las atributos y métodos de la clase primaria. 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. Esta particularidad permite crear una estructura jerárquica de clases cada vez más especializada.

La gran ventaja es que uno ya no debe comenzar desde cero cuando desea especializar una clase existente. Como resultado, se pueden adquirir bibliotecas de clases que ofrecen una base que puede especializarse a voluntad (la compañía que vende estas clases tiende a proteger las datos miembro usando la encapsulación).

LA HERENCIA EN PROGRAMACIÓN ORIENTADA A OBJETOS

Page 14: Lenguaje  de  Programación  Orientada  a Objetos

Existen dos tipos de herencia Herencia Simple: En esta jerarquía cada clase tiene como

máximo una sola superclase. La herencia simple permite que una clase herede las propiedades y métodos de su superclase en una cadena jerárquica.

Herencia múltiple: Una malla o retícula consta de clases, cada una de las cuales pueden tener dos o más superclases inmediatas. Una herencia múltiple es aquella en la que cada clase puede heredar las propiedades y métodos de cualquier número de clases.

TIPOS DE HERENCIA EN POO

Page 15: Lenguaje  de  Programación  Orientada  a Objetos

Una clase base virtual es una clase que es compartida por otras clases base con independencia del número de veces que esta clase se produce en la jerarquía de derivación. Suponer, por ejemplo, que la clase T se deriva de las clases C y D cada una de las cuales se deriva de la clase A. Esto significa que la clase T tiene dos instancias de A en su jerarquía de derivación. C++ permite instancias múltiples de la misma clase base. Sin embargo, si sólo se desea una instancia de la clase A para la clase T, entonces se debe declarar A como una clase base virtual. Las clases base virtuales proporcionan un método de anular el mecanismo de herencia

múltiple, permitiendo especificar una clase que es una clase base compartida. Una clase derivada puede tener instancias virtuales y no virtuales de la misma clase base.

CLASE BASES VIRTUALES

Page 16: Lenguaje  de  Programación  Orientada  a Objetos

La visibilidad de una propiedad o método se puede definir anteponiendo a su declaración una de las palabras reservadas public, protected o private.

A los miembros de clase declarados como 'public' se puede acceder desde donde sea; a los miembros declarados como 'protected', solo desde la misma clase o medianta clases heredadas.

A los miembros declarados como 'private' únicamente se puede acceder desde la clase que los definió.

VISIBILIDAD DE LA HERENCIA EN POO

Page 17: Lenguaje  de  Programación  Orientada  a Objetos

CLASES ABSTRACTAS: Estas clases se caracterizan por tener algunos de sus métodos declarados como abstractos, pero ¿qué es un método abstracto?. Un método abstracto es aquel que está definido, pero no tiene cuerpo, es decir, le declaramos el nombre, los parámetros y el tipo de devolución pero no le declaramos lo que va entre llaves "{}", es más, no le ponemos llaves.

Estas clases se utilizan para permitir que otras clases hereden de ella y proporcionar un modelo a seguir.

La declaración de una clase y método abstracto es el siguiente:

Public abstract class nombreClase{ public abstract tipo nombre(argumentos (si los lleva));

}

CLASES ABSTRACTAS EN POO

Page 18: Lenguaje  de  Programación  Orientada  a Objetos
Page 19: Lenguaje  de  Programación  Orientada  a Objetos

Es una función cuyo comportamiento, al ser declarado "virtual", es determinado por la definición de una función con la misma cabecera en alguna de sus subclases. Este concepto es una parte muy importante del polimorfismo en la POO.

El concepto de función virtual soluciona los siguientes problemas:

En POO, cuando una clase derivada hereda de una clase base, un objeto de la clase derivada puede ser referido (o coercionado) tanto como del tipo de la clase base como del tipo de la clase derivada. Si hay funciones de la clase base redefinidas por la clase derivada, aparece un problema cuando un objeto derivado ha sido coercionado como del tipo de la clase base. Cuando un objeto derivado es referido como del tipo de la base, el comportamiento de la llamada a la función deseado es ambiguo.

Distinguir entre virtual y no virtual sirve para resolver este problema. Si la función en cuestión es designada "virtual", se llamará a la función de la clase derivada (si existe). Si no es virtual, se llamará a la función de la clase base.

MÉTODOS VIRTUALES EN POO

Page 20: Lenguaje  de  Programación  Orientada  a Objetos

En principio se hereda todo menos:

Constructor y Destructor

Aunque no se heredan ni el constructor ni el destructor de la clase base, cuando se crea o se destruye un objeto de la clase derivada se invocan automáticamente los de la clase base. Se usa el constructor por defecto (es decir sin parámetros).

CONSTRUCTORES Y DESTRUCTORES CON HERENCIA

Page 21: Lenguaje  de  Programación  Orientada  a Objetos

Gracias por su atención