2. Unidad 1: INTRODUCCIÓN A LA
PROGRAMACIÓN ORIENTADA A OBJETO
En esta unidad se introducirán conceptos relacionados a:
3. 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, el
modo de ‘ver’ el mundo.
El termino “object-oriented” significa que podemos organizar el
software como una colección de objetos discretos que tienen
incorporado estructura de datos y comportamiento. Los mismos
que cooperan entre si.
5. 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.
6. 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.
7. Programación O-O vs Estructurado
Topología de un sistema
estructurado Topología de un sistema orientado a objetos
8. Que es un Objeto?
Piensen en Objetos del mundo real
Estado Comportamiento
Que estados o atributos puede tener la bicicleta? Que comportamientos puede tener?
9. 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?
10. 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
11. 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
13. 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!!!!
15. Pilares de la Orientación a Objetos
Abstracción
PolimorfismoHerencia
Encapsulamiento
16. 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.
17. 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
18. 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
19. 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.
20. Ejemplo - Tetris
¿Cuáles son los objetos en el juego?
¿Qué saben hacer esos objetos en el
juego?
¿Qué propiedades tienen esos objetos?
21. 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
22. Ejemplo - Tetris
Propiedades: ¿Qué propiedades tienen
esos objetos?
Pieza
Orientación, Posición, forma, color
Tablero
Tamaño, columna
23. 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
velocidad
recorrido
marcha
acelerar
frenar
cambiar
Velocidad
24. • 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
25. 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.
26. 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.
28. 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).
30. Herencia Múltiple
Problema de ambigüedad: unVehiculoAnfibio.Desplazarse();
Los lenguajes ofrecen mecanismos para deshacer la ambigüedad
(en C++ => unVehiculoAnfibio.VehiculoTerrestre::Desplazarse()).
31. 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.
33. 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
34. 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ásicos
y 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.
35. Java - Características
Orientado a Objetos
Distribuido
Simple
Multihilo
Seguro
Independiente de la Plataforma
43. 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.