Unidad 1_Programacion Orientada a Objetos

Post on 21-Jan-2018

84 views 5 download

Transcript of Unidad 1_Programacion Orientada a Objetos

Programación Orientada

a Objeto

Unidad 1: INTRODUCCIÓN A LA

PROGRAMACIÓN ORIENTADA A OBJETO

En esta unidad se introducirán conceptos relacionados a:

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.

Object-Oriented Programming Languages

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.

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.

Programación O-O vs Estructurado

Topología de un sistema

estructurado Topología de un sistema orientado 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?

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?

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

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

Modelamiento de un carro como

objeto

• Atributos:• Velocidad

• Recorrido

• Marcha

• Métodos:• Acelerar

• Frenar

• Cambiar velocidad

velocidadrecorridomarcha

acelerar

frenar

cambiarVelocidad

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!!!!

Clases y Objetos

Class Template

Objetos

Pilares de la Orientación a Objetos

Abstracción

PolimorfismoHerencia

Encapsulamiento

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.

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

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

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.

Ejemplo - Tetris

¿Cuáles son los objetos en el juego?

¿Qué saben hacer esos objetos en el

juego?

¿Qué propiedades tienen esos 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

Ejemplo - Tetris

Propiedades: ¿Qué propiedades tienen

esos objetos? Pieza

Orientación, Posición, forma, color

Tablero Tamaño, columna

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

• 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

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.

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.

Ejemplo de Herencia

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

Herencia Múltiple

Herencia Múltiple

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

Los lenguajes ofrecen mecanismos para deshacer la ambigüedad

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

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.

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

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

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.

Java - Características

Orientado a Objetos

Distribuido

Simple

Multihilo

Seguro

Independiente de la Plataforma

Orientado a Objetos

Distribuido

Simple

Multihilo

Seguro

Forza restricciones sobre las operaciones permitidas

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

Multiplataforma

Bytecode

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.

Java - API

NetBeans IDE 8.2

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

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

Trabajo Autónomo

Instalar Net Beans en sus computadores