La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Programación Orientada a Objetos

Presentaciones similares


Presentación del tema: "Programación Orientada a Objetos"— Transcripción de la presentación:

1 Programación Orientada a Objetos

2 Conceptos Fundamentales
¿Qué es OOP? Una serie de normas para mejorar la programación Se basa en la idea natural de un mundo lleno de objetos El Objeto es su elemento fundamental La programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación. Con la POO se deben pensar las cosas de una manera distinta, para escribir programas en términos de objetos, propiedades, métodos y otros conceptos. Durante años, los programadores se han dedicado a construir aplicaciones muy parecidas que resolvían una y otra vez los mismos problemas. Para conseguir que los esfuerzos de los programadores puedan ser utilizados por otras personas se creó la POO. Que es una serie de normas de realizar las cosas de manera que otras personas puedan utilizarlas y adelantar su trabajo, de manera que se consiga que el código se pueda reutilizar. El concepto de programación orientada a objetos (OOP) no es nuevo, lenguajes clásicos como SmallTalk se basan en ella. Dado que la OOP. se basa en la idea natural de la existencia de un mundo lleno de objetos y que la resolución del problema se realiza en términos de objetos, un lenguaje se dice que está basado en objetos si soporta objetos como una característica fundamental del mismo. El elemento fundamental de la OOP es, como su nombre lo indica, el objeto. Podemos definir un objeto como un conjunto complejo de datos y programas que poseen estructura y forman parte de una organización. Esta definición especifica varias propiedades importantes de los objetos. En primer lugar, un objeto no es un dato simple, sino que contiene en su interior cierto número de componentes bién estructurados. En segundo lugar, cada objeto no es un ente aislado, sino que forma parte de una organización jerárquica o de otro tipo.

3 Conceptos Fundamentales
¿Qué es lo que ves?

4 Conceptos Fundamentales
¿Qué es lo que ves?

5 Conceptos Fundamentales
¿Qué es lo que ves?

6 Conceptos Fundamentales
¿Qué tienen en común?

7 Conceptos Fundamentales
¿Qué tienen en común? Pensar en términos de objetos es muy parecido a cómo se hace en la vida real. Por ejemplo, pensar en un coche para tratar de modelizarlo en un esquema de POO. Se diría que el coche es el elemento principal que tiene una serie de características, como podrían ser el color, el modelo o la marca. Además tiene una serie de funcionalidades asociadas, como pueden ser ponerse en marcha, parar o estacionar. En un esquema POO el coche sería el objeto, las propiedades serían las características como el color o el modelo y los métodos serían las funcionalidades asociadas como ponerse en marcha o parar. Los programas Orientados a objetos utilizan muchos objetos para realizar las acciones que se desean realizar y ellos mismos también son objetos. Es decir, el taller de coches será un objeto que utilizará objetos coche, herramienta, mecánico, recambios, etc.

8 Conceptos Fundamentales
¿Qué es una clase? Clase  Clasificación Clasificación en base a comportamiento y atributos comunes Crea un vocabulario La forma en que nos comunicamos La forma en que pensamos Las clases son declaraciones de objetos, también se podrían definir como abstracciones de objetos. Esto quiere decir que la definición de un objeto es la clase. Cuando programamos un objeto y definimos sus características y funcionalidades en realidad lo que estamos haciendo es programar una clase. La clasificación se basa en un comportamiento y atributos comunes. Permite crear un vocabulario estandarizado para comunicarse y pensar dentro del equipo de trabajo.

9 Conceptos Fundamentales
¿Qué es una clase? Construcción Estática Describe: Comportamiento común Atributos [estado] Estructura de datos Incluye: Datos Funciones o métodos Una clase es una construcción estática que describe un comportamiento común y atributos (que toman distintos estados). Su formalización es a través de una estructura de datos que incluye datos y funciones, llamadas métodos. Los métodos son los que definen el comportamiento.

10 Conceptos Fundamentales
Constructores y Destructores Dos métodos de las clases Existen por defecto Constructor, inicializa valores Destructor, libera recursos al finalizar la vida de una instancia de una clase creada en memoria Existen constructores y destructores por defecto Toda clase tiene, de manera implícita o explicita, dos métodos. El constructor y el destructor. El constructor es llamado cuado la clase comienza a ocupar un lugar en memoria, es decir, cuando comienza a ser utilizada, al ser instanciada. Se encarga de inicializar valores, e incluso muchas veces de llamar a otros constructores de otras clases. El destructor es un método que se llama al finalizar la vida de la instancia de la clase, para liberar recursos. Cualquiera de los dos métodos tienen que formar parte de las clases, existen constructores y destructores por defecto, para las clases mas simples. En clases mas complejas, el desarrollador deberá implementar estos métodos. Muchas veces, los constructores reciben parámetros con los valores con los que la clase debe inicializarse. Las llamadas a constructores y destructores pueden ser implícitas o explicitas, dependiendo de la clase, la aplicación, etc.

11 Conceptos Fundamentales
¿Qué es un objeto?

12 Conceptos Fundamentales
¿Qué es un objeto? Instancia de una clase Un objeto posee: Identidad: Es diferenciable entre uno y otro Comportamiento: Realiza tareas específicas Estado: Almacena información Fija Variable Los objetos son ejemplares de una clase cualquiera. Cuando creamos un ejemplar tenemos que especificar la clase a partir de la cual se creará. Esta acción de crear un objeto a partir de una clase se llama instanciar Por ejemplo, un objeto de la clase fracción es por ejemplo 3/5. El concepto o definición de fracción sería la clase, pero cuando ya estamos hablando de una fracción en concreto 4/7, 8/1000 o cualquier otra, la llamamos objeto. El objeto, la instancia de una clase, posee: Identidad, es decir que es posible diferenciar entre una instancia u otra. Comportamiento que le permite realizar tareas específicas, como a todos los objetos de su misma clase. Estado que se determina a través de cierta información almacenada, que puede ser fija o variable.

13 Pilares de la POO Herencia Polimorfismo Encapsulamiento Abstracción

14 Pilares de la POO Abstracción Ignorancia selectiva
Decide que es importante y que no lo es Se enfoca [depende] en lo que es importante Ignora [no depende] de lo que no es importante Utiliza la encapsulación para reforzar la abstracción La abstracción de datos permite no preocuparse de los detalles no esenciales. Existe en casi todos los lenguajes de programación. Las estructuras de datos y los tipos de datos son un ejemplo de abstracción. Los procedimientos y funciones son otro ejemplo. Es la capacidad de un objeto de cumplir sus funciones independientemente del contexto en el que se lo utilice; o sea, un objeto “cliente” siempre expondrá sus mismas propiedades y dará los mismos resultados a través de sus eventos, sin importar el ámbito en el cual se lo haya creado. Es poder generalizar un objeto como tipo de dato, con sus características y comportamientos comunes.

15 Pilares de la POO Encapsulamiento Acelera() velocidad Frena() 125 km/h
Esta característica es la que denota la capacidad del objeto de responder a peticiones a través de sus métodos sin la necesidad de exponer los medios utilizados para llegar a brindar estos resultados. O sea, el método Acelerar() del objeto “auto”, siempre aumentará la velocidad, sin necesidad de tener conocimiento de cuáles son los recursos que ejecuta para llegar a brindar este resultado. Frena() 40 km/h

16 Pilares de la POO ¿Porqué utilizar encapsulamiento?
Dos grandes razones: Control Cambio La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya que las Clases se ven como cajas negras donde sólo se conoce el comportamiento pero no los detalles internos, y esto es conveniente porque solo interesará conocer qué hace la Clase pero no será necesario saber cómo lo hace.

17 Pilares de la POO Encapsulamiento
Los métodos son públicos: son accesibles desde fuera Los datos son privados: accesibles desde dentro Acelera() velocidad El encapsulamiento también es llamado “ocultamiento de la información”, esto asegura que los objetos no pueden cambiar el estado interno de otros objetos de maneras inesperadas; solamente los propios métodos internos del objeto pueden acceder a su estado. Cada tipo de objeto expone una interfaz a otros objetos que especifica cómo otros objetos pueden interactuar con él. Algunos lenguajes permiten un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. Frena() Controlador del Motor

18 Pilares de la POO Datos del Objeto Color: Ázul Color 2: Gris
Instrumental Digital Ventanas eléctricas 4 asientos Color: Verde Color 2: Negro Instrumental digital 2 asientos La clase auto define una serie de atributos: Color, Color2, Instrumental, Asientos, etc. Cada una de las instancias de esa clase, toma valores diferentes.

19 Pilares de la POO Datos del Objeto
Describen información para todos los objetos Número de llantas: 4 Capacidad del tanque: 40 litros Tipo de Transmisión: Automática Hay ciertos atributos que pueden ser comunes a todas las instancias de una clase, son definidos como estáticos.

20 Pilares de la POO Métodos Estáticos
Solo pueden acceder a datos estáticos Encapsula los datos estáticos Son invocados en la clase, no en el objeto. No es necesaria la creación de una instancia para invocarlos Los métodos estáticos definidos en una clase, pueden ser invocados sin necesidad de instanciar la clase. Solo accederán a datos estáticos. El llamar a métodos estáticos generalmente resulta cómodo, sobre todo en tareas de inicialización de las clases, por ejemplo.

21 Pilares de la POO Herencia Es “un tipo de” relación Entre Clases
Relación “es un” Entre Clases Va de la generalización a la especialización Clase base Clase derivada Hereda la implementación La herencia es uno de los conceptos más cruciales en la POO. La herencia básicamente consiste en que una clase puede heredar sus variables y métodos a varias subclases (la clase que hereda es llamada superclase o clase padre). Esto significa que una subclase, aparte de los atributos y métodos propios, tiene incorporados los atributos y métodos heredados de la superclase. De esta manera se crea una jerarquía de herencia. Relación “es un” significa que la clase hija (o heredera), es, además, lo mismo que su padre. Es decir, un auto “es un” transporte, un caballo “es un” animal, etc. Estos pueden compartir (y extender) su comportamiento sin tener que reimplementar su comportamiento. Esto suele hacerse habitualmente agrupando los objetos en clases y las clases en árboles o enrejados que reflejan un comportamiento común.

22 Pilares de la POO Herencia - Jerarquía de Clases POO Transporte
Marítimo Aire Nieve Tierra DentroAtmosfera FueraAtmosfera 1-Persona N-Personas POO

23 Pilares de la POO Herencia Múltiple
Singular: La clase hija deriva de una única clase padre Múltiple: La clase hija deriva de varias clases padre No es soportada por todos los lenguajes Puede ser confusa

24 Pilares de la POO Polimorfismo
Literalmente significa tomar varias formas Tareas similares son realizadas por métodos con mismo nombre Suma: Enteros Decimales Fracciones Simplifican la tarea del desarrollador, al no tener que recordar distintos nombres para comportamientos iguales. Esta propiedad indica la posibilidad de definir varias operaciones con el mismo nombre, diferenciándolas únicamente en los parámetros de entrada. Dependiendo del objeto que se introduzca como parámetro de entrada, se elegirá automáticamente cual de las operaciones se va a realizar. Ya está habituado al operador <<suma>> que está presente en todos los lenguajes de programación. Sin embargo, los operadores <<suma de fracciones>> y <<suma de números complejos>> no existen en casi ningún lenguaje de programación. Los lenguajes OOP permiten definir un operador <<suma>> tal que reconozca que tipo de objeto se le está aplicando, a través de operaciones de objetos. Previamente deberá definir la fracción y el número complejo como una clase y la operación suma como una operación de una clase. Definiendo adecuadamente las operaciones suma de fracciones y suma de números imaginarios, el operador suma devolverá, en el caso que los operandos sean fracciones, una fracción y , en el caso de los números imaginarios, otros número imaginario. Este tipo de polimorfismo no esta relacionado directamente con POO. Este tipo de comportamiento es conocido como sobrecarga. Se define un mismo método con distintos parámetros de entrada y de salida, y es el framework quien, al momento de recibir una llamada al método, analiza cual es el que debe ser invocado.

25 Pilares de la POO Polimorfismo
La definición del método reside en la clase base La implementación del método reside en la clase derivada La invocación es resuelta al momento de ejecución Early binding Late binding El término de polimorfismo también define la capacidad de que más de un objeto puedan crearse usando la misma clase de base para lograr dos conceptos de objetos diferentes, en este caso podemos citar el típico ejemplo de los teléfonos, los cuales se basan en un teléfono base, con la capacidad de hacer ring y tener un auricular, para luego obtener un teléfono digital, inalámbrico, con botonera de marcado y también, tomando la misma base, construir un teléfono analógico y con disco de marcado. Si en el momento de la compilación de un programa se conoce la clase concreta del objeto que se usará, las llamadas a sus métodos quedarán fijadas mediante lo que se conoce como "enlace estático o temprano" (early binding), si no, habrá de determinarse la llamada adecuada en tiempo de ejecución, efectuándose entonces un "enlace dinámico o tardío" (late binding).

26 Resumen ¿Qué es la Programación Orientada a Objetos? Clases y Objetos
Métodos y Atributos Encapsulamiento Herencia Polimorfismo

27


Descargar ppt "Programación Orientada a Objetos"

Presentaciones similares


Anuncios Google