Unidad 1_Programacion Orientada a Objetos

47
Programación Orientada a Objeto

Transcript of Unidad 1_Programacion Orientada a Objetos

Page 1: Unidad 1_Programacion Orientada a Objetos

Programación Orientada

a Objeto

Page 2: Unidad 1_Programacion Orientada a Objetos

Unidad 1: INTRODUCCIÓN A LA

PROGRAMACIÓN ORIENTADA A OBJETO

En esta unidad se introducirán conceptos relacionados a:

Page 3: Unidad 1_Programacion Orientada a Objetos

Programación Orientada a Objeto

Paradigma

Forma de entender y representar la realidad

Conjunto de teorías, estándares y métodos que, juntos,representan un modo de organizar el pensamiento, es decir, elmodo de ‘ver’ el mundo.

El termino “object-oriented” significa que podemos organizar elsoftware como una colección de objetos discretos que tienenincorporado estructura de datos y comportamiento. Los mismosque cooperan entre si.

Page 4: Unidad 1_Programacion Orientada a Objetos

Object-Oriented Programming Languages

Page 5: Unidad 1_Programacion Orientada a Objetos

Programación Orientada a Objeto VS.

Programación Estructurada

Programacion Estructurada: Descomposicion Algoritmica

o funcional del problema, el software es visto como un

proceso.

Programacion Orientada a Objeto: Descompone el

problema en un set de objetos bien definidos, la

descomposicion funcional es realizada luego de que el

sistema ha sido descompuesto en objetos. Es un

procedimiento mas intuitivo que motiva el reuso de

objetos.

Page 6: Unidad 1_Programacion Orientada a Objetos

Programación O-O vs Estructurado

Los lenguajes de programación estructurada:

Están orientados a acciones.

La unidad de programación es la función.

La programación orientada a objetos:

Encapsula datos (atributos) y métodos

(comportamiento) en objetos que están relacionados

entre sí.

La unidad de programación es la clase.

Page 7: Unidad 1_Programacion Orientada a Objetos

Programación O-O vs Estructurado

Topología de un sistema

estructurado Topología de un sistema orientado a objetos

Page 8: Unidad 1_Programacion Orientada a Objetos

Que es un Objeto?

Piensen en Objetos del mundo real

Estado Comportamiento

Que estados o atributos puede tener la bicicleta? Que comportamientos puede tener?

Page 9: Unidad 1_Programacion Orientada a Objetos

Un objeto:

Almacena sus estados en campos o atributos (Representados por algún

tipo de variable en un lenguaje de programación)

Expone su comportamiento en a través de métodos (Funciones en

algún lenguaje de programación)

Los métodos actúan directamente sobre los estados del objeto.

El objeto permanece en control de como el mundo de afuera puede

usarlo.

Piensen de nuevo en la bicicleta si tengo un comportamiento

“Cambiar Velocidad” afectaría directamente al estado actual de mi

objeto. Como? Por que?

Page 10: Unidad 1_Programacion Orientada a Objetos

Ejemplo de qué es un objeto

• ¿Qué tendría un elemento que modele un carro?

• Tendría variables que indicarían el estado actual del carro:

• La velocidad es 70 km/h

• 2 Km recorridos

• Marcha actual es la 3ª

• Estas variables corresponden a las de un carro en

particular

• Se conocen como variables de instancia o variables

miembro

Page 11: Unidad 1_Programacion Orientada a Objetos

Ejemplo de qué es un objeto

• El objeto carro podría tener métodos:

• Acelerar

• Frenar

• Cambiar de velocidad

• Estos métodos afectan a una instancia u objeto carro en

particular

• Se denominan métodos de instancia o métodos miembro

Page 12: Unidad 1_Programacion Orientada a Objetos

Modelamiento de un carro como

objeto

• Atributos:• Velocidad

• Recorrido

• Marcha

• Métodos:• Acelerar

• Frenar

• Cambiar velocidad

velocidadrecorridomarcha

acelerar

frenar

cambiarVelocidad

Page 13: Unidad 1_Programacion Orientada a Objetos

Que es una clase?

Piensen en una clase como un “plano”, “plantilla” del

cual los objetos son creados.

Los objetos no necesariamente van a ser iguales y se

rigen a sus atributos individuales.

“Por ende, una clase es una plantilla de código que

provee valores iniciales de estado (atributos) e

implementaciones de comportamiento (métodos)”

Classes and Objects | The Web's Where You Study In!.

(2016). Ustudy.in. Retrieved 13 October 2016, from

http://www.ustudy.in/node/654

Al final y en pocas palabras, un objeto será la

Instancia de una clase!!!!

Page 14: Unidad 1_Programacion Orientada a Objetos

Clases y Objetos

Class Template

Objetos

Page 15: Unidad 1_Programacion Orientada a Objetos

Pilares de la Orientación a Objetos

Abstracción

PolimorfismoHerencia

Encapsulamiento

Page 16: Unidad 1_Programacion Orientada a Objetos

El progreso de la abstracción

Abstracción

Es una descripción o especificacion simplificada de un sistema, que

enfatiza algunos de los detalles de un sistema mientras suprime

otros.

Expresa las características esenciales de un objeto, las cuales

distinguen al objeto de los demás

Concentrarse en lo esencial, ignorar lo irrelevante

Es una técnica para crear, comprender o manejar sistemas complejos.

Page 17: Unidad 1_Programacion Orientada a Objetos

El progreso de la abstracción

Abstracción

Mediante la Abstracción creamos MODELOS de la realidad.

Se aplica a todos los ámbitos no solo a las Ciencias de la

Computación

Vehículo

Page 18: Unidad 1_Programacion Orientada a Objetos

Abstracción

Cada objeto representa una

abstracción

Una caja negra esconde

detalles de los cuales no te

tienes que preocupar

Les permite como

programadores controlar la

complejidad de los programas

solo pensando acerca de

características destacadas

Page 19: Unidad 1_Programacion Orientada a Objetos

Entonces vamos a programar modelando el problema como un conjunto de

componentes que colaboran entre ellos

Uds. determinarán cuales son los bloques que deben de construir

Pondrán los componentes juntos para que colaboren adecuadamente.

Page 20: Unidad 1_Programacion Orientada a Objetos

Ejemplo - Tetris

¿Cuáles son los objetos en el juego?

¿Qué saben hacer esos objetos en el

juego?

¿Qué propiedades tienen esos objetos?

Page 21: Unidad 1_Programacion Orientada a Objetos

Ejemplo - Tetris

¿Cuáles son los objetos en el juego? Tablero, piezas

Habilidades: ¿Qué saben hacer esos

objetos en el juego? Pieza

Crearse, Caer, Rotar, Parar cuando choca

con otra pieza.

Tablero Crearse, Remover columnas, Verificar el

fin de juego

Page 22: Unidad 1_Programacion Orientada a Objetos

Ejemplo - Tetris

Propiedades: ¿Qué propiedades tienen

esos objetos? Pieza

Orientación, Posición, forma, color

Tablero Tamaño, columna

Page 23: Unidad 1_Programacion Orientada a Objetos

Encapsulamiento

Se puede pensar en encapsulamiento como una protección de que los datos de un objeto sean arbitrariamente modificados o incorrectamente usados por objetos externos.

El acceso al código o a la data esta altamente controlado a través de una interfaz publica

La ventaja del código encapsulado es que se sabe como usarlo sin importar como este implementado

velocidadrecorridomarcha

acelerar

frenar

cambiarVelocidad

Page 24: Unidad 1_Programacion Orientada a Objetos

• Ventajas de encapsular

• Capacidad de crear módulos

• El código fuente de un objeto puede escribirse y mantenerse independiente del código fuente del resto de los objetos.

• Reutilización de objetos

• Protección de información

• Un objeto tendrá una interfaz pública perfectamente definida que otros objetos podrán usar para comunicarse con él.

• No necesitamos entender cómo funcionan los métodos

Encapsulamiento

Page 25: Unidad 1_Programacion Orientada a Objetos

Herencia

La herencia es el proceso en el cual un objeto adquiere las propiedades de

otro objeto en base a una clasificación jerárquica.

Una subclase o clase hijo adquirirá todas las propiedades de su clase padre.

Page 26: Unidad 1_Programacion Orientada a Objetos

Herencia

Por la herencia se forman jerarquías de clases (superclases y subclases).

La clase hija hereda el interfaz (con la implementación de las operaciones) y

los atributos.

Relación “es un”

Permite la reutilización de código.

Page 27: Unidad 1_Programacion Orientada a Objetos

Ejemplo de Herencia

Page 28: Unidad 1_Programacion Orientada a Objetos

Tipos de Herencia

Simple: una clase (clase hija) puede heredar de otra clase

(una clase padre).

Múltiple: una clase (clase hija) puede heredar de otras

clases padres (tener varias clases padres).

No está disponible en todos los lenguajes (disponible en

C++; en Java sólo para la herencia de interfaz).

Page 29: Unidad 1_Programacion Orientada a Objetos

Herencia Múltiple

Page 30: Unidad 1_Programacion Orientada a Objetos

Herencia Múltiple

Problema de ambigüedad: unVehiculoAnfibio.Desplazarse();

Los lenguajes ofrecen mecanismos para deshacer la ambigüedad

(en C++ => unVehiculoAnfibio.VehiculoTerrestre::Desplazarse()).

Page 31: Unidad 1_Programacion Orientada a Objetos

Polimorfismo

El polimorfismo en biología, se refiere al principio en que un

organismo o especie puede adoptar muchas formas o etapas.

Este principio también puede ser aplicado en la programación

Orientada a Objeto. Por ejemplo, subclases de una clase pueden

adoptar sus propios comportamientos, y a la vez compartir

comportamientos de su clase padre.

Generalmente se lo identifica como una interfaz para ser usada en

una clase general de acciones. La acción especifica depende de la

naturaleza de la situación.

Page 32: Unidad 1_Programacion Orientada a Objetos

Ejemplo de Polimorfismo

FiguraGeométrica

Atributo:

area

Método:

ObtenerArea

Atributos:

longitud

ancho

Métodos:

CrearRectangulo

ObtenerArea

Atributos:

radio

ancho

Métodos:

CrearCirculo

ObtenerArea

rectángulo círculo

Page 33: Unidad 1_Programacion Orientada a Objetos

Ventajas de la Programación Orientada a

Objeto Reusó de Código:

Los objetos creados pueden ser reusados a través de diferentes programas

Encapsulación

Una vez que el objeto es creado el conocimiento de su implementación no es necesario para su uso.

Los objetos tienen la habilidad de proteger ciertas partes de si mismo para no ser alterados.

Beneficios de Diseño

Sistemas Complejos son difíciles de diseñar, programas Orientados a Objetos fuerzan a los programadores a planear extensivamente.

Mantenimiento de Software

Page 34: Unidad 1_Programacion Orientada a Objetos

Java

El lenguaje a usar en este curso es Java Java es un lenguaje de objetos

Java incorpora el uso de la orientación a objetos como uno de sus pilares básicosy fundamentals

Es un lenguaje interpretado

Es un lenguaje de propósito general

En Java todo programa por más sencillo o pequeño que sea es forzado a implementar objetos.

En Java nada se puede hacer sin usar al menos un objeto.

Page 35: Unidad 1_Programacion Orientada a Objetos

Java - Características

Orientado a Objetos

Distribuido

Simple

Multihilo

Seguro

Independiente de la Plataforma

Page 36: Unidad 1_Programacion Orientada a Objetos

Orientado a Objetos

Page 37: Unidad 1_Programacion Orientada a Objetos

Distribuido

Page 38: Unidad 1_Programacion Orientada a Objetos

Simple

Page 39: Unidad 1_Programacion Orientada a Objetos

Multihilo

Page 40: Unidad 1_Programacion Orientada a Objetos

Seguro

Forza restricciones sobre las operaciones permitidas

Antes de ejecutar se verifican los bytecodes de la aplicación.

Page 41: Unidad 1_Programacion Orientada a Objetos

Multiplataforma

Page 42: Unidad 1_Programacion Orientada a Objetos

Bytecode

Page 43: Unidad 1_Programacion Orientada a Objetos

Java Virtual Machine

Una Máquina virtual Java (en inglés Java Virtual Machine, JVM) es un máquina

virtual de proceso nativo, es decir, ejecutable en una plataforma específica,

capaz de interpretar y ejecutar instrucciones expresadas en un código binario

especial (el Java bytecode), el cual es generado por el compilador del

lenguaje Java.

El código binario de Java no es un lenguaje de alto nivel, sino un verdadero

código máquina de bajo nivel, viable incluso como lenguaje de entrada para

un microprocesador físico. Como todas las piezas del rompecabezas Java, fue

desarrollado originalmente por Sun Microsystems.

Page 44: Unidad 1_Programacion Orientada a Objetos

Java - API

Page 45: Unidad 1_Programacion Orientada a Objetos

NetBeans IDE 8.2

Download: https://netbeans.org/downloads/

Page 46: Unidad 1_Programacion Orientada a Objetos

http://www.oracle.com/technetwork/es/java/javase/downloads/index.html

Page 47: Unidad 1_Programacion Orientada a Objetos

Trabajo Autónomo

Instalar Net Beans en sus computadores