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
http://www.oracle.com/technetwork/es/java/javase/downloads/index.html
Trabajo Autónomo
Instalar Net Beans en sus computadores
Top Related