Módulo 1 Unidad 2

Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1de 55

Unidad 02

Programación Orientada a Objetos

Copyright © Octubre de 2019 por TECSUP


1
Introducción
• En la presente unidad, se detalla los
fundamentos de la programación orientada a
objetos usando el lenguaje de programación
Java, revisando todas las técnicas asociadas a
este paradigma de programación.
Objetivos
• Comprender los conceptos básicos de la
Programación Orientada a Objetos (POO).
• Utilizar las características avanzadas de la
programación orientación a objetos de Java.
Temas
Esta unidad está compuesta por los siguientes temas:

Tema 1: Programación estructurada


Tema 2: Programación orientada a objetivos
Tema 3: Técnicas involucradas en la POO
Tema 4: Otros conceptos relacionados a la POO

4
Tema 1:
Programación estructurada

Copyright © Octubre de 2019 por TECSUP


5
Programación Estructurada
• Estilo disciplinado de programación.
• Técnica que lleve a programas altamente
modificables.
• Sencillez, claridad y elegancia.
Programación Estructurada
• La Programación Estructurada se emplea
desde el principio de los ‘70 y es uno de
los métodos más utilizados en el campo de
la programación.
• Un programa estructurado se construye
partiendo el programa en piezas mas
pequeñas y manejables conocidas como
subrutinas, subprogramas, funciones o
procedimientos.
Programación Estructurada
Tema 2:
Programación Orientada a Objetos

Copyright © Octubre de 2019 por TECSUP


9
POO
• Cambiar la forma de pensar.
• Todo gira entorno a objetos.
• Los objetos son entidades que tienen:
– CARACTERÍSTICAS, y
– COMPORTAMIENTOS.
• Consiste en modelar los Objetos del mundo real como
Objetos de software.
• En POO, un programa se compone sólo de objetos.
POO
• Clase: Plantilla para crear objetos.
• Objeto: Instancia creada a partir de la Clase.
Analogía:
Plano Casa
Clase Objeto
• Mensaje: Cuando los objetos se comunican
entre sí.
POO
• Características: Almacena las
características o el estado del objeto. En la
POO, las características son almacenadas en
Variables.
• Comportamientos: Es lo que hace el objeto.
Debe modificar alguna característica. En la
POO, los comportamientos se almacenan en
Métodos.
POO
¿Qué es un objeto?
• Constituye el concepto principal en la tecnología
orientada a objetos.
• Alrededor tenemos objetos del mundo real. Por
ejemplo: computadora, proyector, aire
acondicionado, alumnos, entre otros.
• Los objetos del mundo real tienen dos
elementos: CARACTERÍSTICAS y
COMPORTAMIENTOS.
POO - Software
¿Qué es un objeto?
• Los objetos de software son modelados a partir
de objetos del mundo real, por lo tanto también
tienen características y comportamientos.
• Un objeto de software mantiene sus
características en variables y sus
comportamientos en métodos.
• Resumen: Un objeto de software es un conjunto
de atributos y métodos.
POO
Objeto de Software
POO
Una Bicicleta como Objeto de Software
POO
Resumen sobre los Objetos de Software
• Objeto e instancia se refieren a lo mismo.
• A partir de ahora, a los objetos de software se
les llamará simplemente objetos.
• A las variables de los objetos se les conoce
como variables de instancia o variables
miembro.
• A los métodos de los objetos se les conoce
como métodos de la instancia o métodos
miembro.
POO
Mensajes entre Objetos
 Un objeto solo no tiene mucha utilidad.
 Un programa escrito en base a la POO se
puede entender como:
“Conjunto de objetos enviando mensajes y
respondiendo a otros mensajes”.
POO
Mensajes entre Objetos
• Para mandar un mensaje, se necesita lo
siguiente:
– El objeto a quien vamos a enviar el mensaje.
– El nombre del método que vamos a ejecutar.
– Los parámetros que requiera ese método.
POO
Mensajes entre Objetos
POO
Objetivos de la POO
 Fomentar la reutilización y extensión del
código.
 Implementar sistemas complejos de manera
sencilla.
 Reducción de la brecha entre el mundo de los
problemas y el mundo de los modelos.
 Programación por eventos.
 Programación en ambientes de interfaz gráfica.
POO
Ventajas de la POO
• Facilidad de mantenimiento.
• Rapidez de desarrollo.
• Más fácil de entender porque se utilizan
abstracciones más cercanas a la realidad.
• Reusabilidad.
• Extensibilidad.
• Portabilidad.
POO
Resumen de Objetos
• La programación orientada a objetos fue
concebida por quienes concebían el mundo
como poblado de objetos que interactúan
entre si.
• El atractivo de la orientación a objetos es que
proporciona conceptos y herramientas con las
cuales se modela y representa el mundo real
tan fielmente como sea posible.
POO
Clases
• Las Clases son las plantillas de los objetos.
• A partir de las Clases se crean los objetos
(conocidos también como instancias).
• Desde otra perspectiva: Las Clases agrupan a
un conjunto de objetos del mismo tipo.
• Definición: Una Clase es una plantilla que define
variables y métodos comunes para todos los
objetos de cierto tipo.
POO
Clases
• Retomando el ejemplo del objeto Bicicleta,
podemos decir que existe una Clase Bicicleta y,
a partir de ella, se pueden crear varios objetos
Bicicleta con diferentes características.
POO
Clases
POO
Clases VS Objetos
• Las Clases permiten crear los Objetos.
• Los Objetos son los existen en un programa,
ocupan una posición en memoria y son lo que
habitan en un software orientado a objetos.
• Las Clases no pueden ser usadas si es que no
son instanciadas (instanciar significa crear los
Objetos).
POO
Resumen
“La Programacion Orientada a Objetos es un
metodo de implementacion en el que los
programas se organizan como colecciones
cooperativas de objetos, cada uno de los cuales
representa una instancia de alguna clase, y
cuyas clases son todas miembros de una
jerarquia de clases unidas mediante relaciones”
Grady Booch
Tema 3:
Técnicas involucradas en la POO

Copyright © Octubre de 2019 por TECSUP


29
1. Abstracción
• Es la representación de las características
esenciales de un objeto, así como de su
comportamiento.
• Definir una abstracción significa describir
una entidad del mundo real, no importando
lo compleja que pueda ser, representando
sus características y comportamiento.
2. Encapsulamiento

• Mecanismo que permite unir, en una única


abstracción, todas las propiedades
(características) y funcionalidades
(comportamiento) de una entidad.
• Booch: “… es el proceso de almacenar en un
mismo compartimiento los elementos de una
abstracción que constituyen su estructura y su
comportamiento”.
2. Encapsulamiento
Ventaja:
– Facilita el aumento de la complejidad, por
el uso de cajas negras de las cuales se
conoce el comportamiento pero no los
detalles internos.
Desventaja:
– Sobrecarga por las llamadas a los
métodos, aún para acceder a atributos.
3. Principio de Información Oculta

• Consiste en la capacidad de proveer la


posibilidad de ocultar los detalles de la
representación interna de un objeto y exponer
solo aquellos detalles necesarios para el resto
del sistema.
• Los otros objetos dependerán de un
comportamiento específico y no de la
implementación interna de un objeto.
3. Principio de Información Oculta
4. Herencia
• Es una relación entre Clases en donde una Clase
(conocida como Hija) comparte las
características y comportamiento de otra Clase
(conocida como Padre).
4. Herencia
4. Herencia
Beneficios de la herencia
• Reusabilidad del Software.
– Mayor productividad en el desarrollo.
– Mayor confiabilidad del código.
• Compartición de Código.
• Consistencia de implementación.
• Polimorfismo.
• Ocultamiento de información.
4. Herencia
Costos de la herencia
• Mayor tamaño del programa.
• Tiempo de procesamiento adicional al
paso de mensajes.
• Complejidad de los programas.
5. Polimorfismo
Es la propiedad de los Objetos de
comportarse de forma específica ante
un mensaje.
Los Objetos polimórficos permiten el
procesamiento de objetos cuyo tipo no
se conoce en tiempo de compilación.
5. Polimorfismo
• Un sistema típico construido con “Objetos”
puede llegar a estar constituido por una gran
cantidad de ellos.
• Si cada uno posee un lenguaje distinto para
comunicarse, deberíamos administrar un
diccionario demasiado extenso.
• Hay que reducir el lenguaje. Objetos parecidos
tienen que responder a los mismos mensajes.
• Es la cualidad que poseen los objetos de
“distintas especies” de “implementar” un mismo
“mensaje”, cada uno a su conveniencia.
Tema 4:
Otros conceptos relacionados a la POO

Copyright © Octubre de 2019 por TECSUP


41
1. Constructor de la Clase

• Es un método de la Clase que efectúa


tareas de inicialización.
• Al instanciar un objeto, se invoca
implícitamente su constructor.
• En el constructor se debe iniciar el estado
de la Clase (es decir, sus variables).
• Todas las Clases tienen constructor.
2. Interfases
• Una interfase define métodos sin
implementar.
• Sirve para definir ciertos comportamientos
que se desea que implementen las clases.
• Permite modelar la herencia múltiple.
3. Paquetes
• Los paquetes son agrupaciones de
Clases, Interfases y paquetes.
• Se puede agrupar las Clases e Interfases
por:
– Funcionalidad similar: ventas, reportes,
administración, etc.
– Tipo de Clase: servlets, beans, applets, etc.
4. Clases Abstractas
• Usualmente utilizadas para crear métodos sin tener que
implementarlos por completo.
• Similar a interfases.
• Usando el modificador abstract se puede crear un
método sin implementación.
• Las clases abstractas “obligan” a sus subclases a
implementar los métodos no implementados en la clase
abstracta.
4. Clases Abstractas
public abstract class Figura {
private int x,y;
public Figura(int nx,int ny){ x=nx; y=ny; }
public int getX(){ return x; }
public int getY(){ return y; }
public abstract double getArea();
/* cada figura debería tener un método getArea() para obtener
el area de la figura */

}
4. Clases Abstractas
• Cualquier clase con un método abstracto es,
esencialmente, una abstracción.
• No se pueden crear objetos de una clase abstract.
• Si se pueden crear objetos de clases derivadas, siempre que la
clase derivada haya implementado los métodos que falten.
4. Clases Abstractas
public class Rectangulo extends Figura {
private int w,h;
public Rectangulo(int x, int y, int w, int h) {
super(x,y);
this.w=w; this.h=h; }

//implementando el método abstracto


public double getArea() {
return w*h;
}
}
4. Clases Abstractas
• Una “referencia abstracta” puede ser usada para
referenciar cualquier clase derivada de una clase
abstracta.
• Ejemplo:
Figura[] figuras = { new Rectangulo(0,0,3,4),
new Triangulo(0,0,5,7) }
double a_rect = figuras[0].getArea();
double a_tri = figuras[1].getArea();
5. Clases Finales
• Evita que se sobreescriba un método en alguna subclase
o clase extendida o derivada.
• Ejemplo:
class Persona {
public final String obtenerDatos() { ... } }

class Visor extends Persona {


public String obtenerDatos() { ... } // ilegal
}
5. Clases Finales
• Evita que existan clases extiendas o subclases.
• Proteje el acceso a todos los miembros de la clase
public final class Sin_acceso { ... }

class Rebelde extends Sin_acceso { } // ilegal


5. Clases Finales
• La mayoría de los lenguaje permiten almacenar
datos durante la ejecución del programa.
• En Java, los objetos que se instancian son
almacenados la memoria.
• La memoria del sistema está organizada en 3
segmentos:
• Text segment (code segment)
• Stack segment
• Heap segment
6. Recolector de basura
• Las variables que se crean dentro de los métodos son
alojadas en el Stack Segment, por ello, ni bien el método
termina de ejecutarse (return), todas las variables se
desasignan.
• En cambio, los objetos son alojados en el Heap Segment.
• Algunos lenguajes de programación requieren que el
programador elimine los objetos del Heap Segment
cuando ya no lo usen.
• En Java, el recolector de basura se encarga de limpiar los
objetos que ya no son usados; técnicamente, aquellos que
no tienen referencia de otros objetos.
6. Recolector de basura
• No hay forma de forzar al Recolector de basura para
que se ejecute.
• Los métodos System.gc() y Runtime.gc() no fuerzan al
Recolector de basura a que se ejecutan. Estos
métodos sólo sugieren al JVM a que recoja los objetos
no usados.
• Una buena práctica es establecer los Objetos que ya
no vamos a usar como null:
public Object pop() {
Object returnValue = storage[index];
storage[index--] = null;
return returnValue;
}
Conclusiones
• En la presente unidad se detalló la
programación orientada a objetos.
• Este paradigma presenta diversas técnicas
como la herencia, abstracción,
encapsulamiento, entre otros, que fueron
detallados en esta unidad.

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy