Está en la página 1de 40

Programación Orientada a

Objetos

Sesión01: Introducción a POO

Escuela de Ingeniería de Computación y Sistemas


Ing. Freddy Infantes Quiroz
finfantesq@upao.edu.pe
Agenda

• Introducción a Programación Orientada a Objetos


• 4 Pilares de la Programación Orientada a Objetos
• Conceptos de Clases y Objetos.
• Atributos, Constructor y Métodos
• Implementación de Clases y Objetos.
• Actividad.

Ing. Freddy Infantes Quiroz


Logro

• Al finalizar la sesión el estudiante debe conocer y comprender las


definiciones básicas de Programación orientada a objetos como:
• Clases
• Objetos
• Abstracción
• Encapsulamiento
• Herencia
• Polimorfismo.

Ing. Freddy Infantes Quiroz


Introducción a la Programación Orientada a Objetos

• Una nueva forma de pensar.

Programación Programación Orientada


Estructurada a Objetos

Ing. Freddy Infantes Quiroz


Introducción a la Programación Orientada a Objetos
• Programación estructurada • Programación orientada a objetos
Inicio

Proceso

Proceso Funcion

Proceso Funcion

Proceso

Fin

Ing. Freddy Infantes Quiroz


Solución de problemas “con orientación a objetos”
Problema: Quiero enviar un paquete a un amigo que vive en otra ciudad.
• Opciones:
1- Hacerlo todo yo mismo
- Descomposición en subproblemas (prog. estructurada).
2- Delegar en alguien para que lo haga (ejm. Correos).
- Realizar un encargo” (prog. orientada a objetos).

• Solución orientada a objetos:


- Se busca un objeto capaz de enviar un paquete.
- Se le envía un mensaje con mi solicitud.
- El objeto se hace responsable de satisfacer mi solicitud.
- El objeto utiliza un algoritmo que yo no tengo por qué conocer.
Ing. Freddy Infantes Quiroz
Solución de problemas “con orientación a objetos”
Consecuencias:

• Un programa orientado a objetos se estructura como un conjunto de agentes que


interactúan (programa como colección de objetos).

• Cada objeto proporciona un servicio que es utilizado por otros objetos (reutilización).

• La acción se inicia por la transmisión de un mensaje al objeto responsable de


realizarla.

• Si el receptor acepta el mensaje, acepta la responsabilidad de llevar a cabo la acción


solicitada.

• El receptor puede utilizar cualquier técnica que logre el objetivo deseado.

Ing. Freddy Infantes Quiroz


¿Qué es la Programación orientada a Objetos?

• La programación orientada a objetos, es un conjunto de normas, que


se basan en la idea de construir un software de forma mucho más
cercana a la vida real.

• Simplificando las tareas de desarrollo de software y entregando


importantes beneficios a los programadores, los cuales se benefician
principalmente de la reutilización de código, evitando así volver a
realizar tareas comunes una y otra vez.

Ing. Freddy Infantes Quiroz


Pilares de la Programación Orientada a Objetos

Ing. Freddy Infantes Quiroz


1. Abstracción

• La abstracción se centra en las características esenciales de algún


objeto de acuerdo a la perspectiva del observador. (olvidándose de
otras no esenciales.)

Clase Perro
2. Encapsulamiento
• Oculta los detalles de la implementación de un objeto.
• Cada clase “firma un contrato con el exterior” comprometiéndose a exhibir un
determinado comportamiento, pero cómo lo consigue queda oculto o
encapsulado en el interior de la clase.
• “La abstracción y el encapsulamiento son conceptos complementarios: la
abstracción se centra en el comportamiento observable de un objeto, mientras
que el encapsulamiento se centra en la implementación que da lugar a ese
comportamiento” (Booch).

Ing. Freddy Infantes Quiroz


3. Herencia

• Se refiere a compartir atributos y métodos entre objetos que se


relacionan de manera jerárquica.

Ing. Freddy Infantes Quiroz


4. Polimorfismo

• Es la habilidad de tomar muchas formas.


• Múltiples formas de ejecutar un mismo método común y que
pertenecen a varias clases.

Ing. Freddy Infantes Quiroz


Ventajas de la POO

• Reutilización de código.
• Extensibilidad de código.
• Facilidad de mantenimiento del software.
• Portabilidad.
• Rapidez de Desarrollo de software.
• Facilita el trabajo en equipo.
• Más fáciles de entender porque se usa abstracciones cercanas al
mundo real.

Ing. Freddy Infantes Quiroz


Objetos: estado + comportamiento + Identidad

Ing. Freddy Infantes Quiroz


Clases y Objetos
Después de identificar los requerimientos de una aplicación, debemos identificar las clases y los
objetos necesarios para construir una aplicación, así que vamos a ver qué son clases y objetos.
Clase Objeto
Una clase es la abstracción de las Los objetos son instancias
propiedades y operaciones o acciones de una clase
que ejecutan los objetos del mundo
real.
Es decir, las unidades
En términos coloquiales la CLASE que existen en el
es como si fuera una plantilla mundo real de una
que sirve para crear los objetos clase específica.

Clase Perro
Una similitud es la siguiente:
Objetos La clase es como un molde para hacer
tortas y todas las tortas hechas con el
molde son los objetos
Ing. Freddy Infantes Quiroz
Clases y Objetos
Veamos los siguientes ejemplos de clases y objetos

Clase Objetos de la clase


Nombre de
la clase Vehículo Objeto 1 Objeto 2 Objeto 3
Marca
Marca:Chevrolet Marca: Renault Marca: Ford
Referencia Referencia: Aveo Referencia: Clio Referencia: Fiesta
Características Modelo Modelo: 2012 Modelo: 2010 Modelo: 2013
Placa: CDW152 Placa: DMK789 Placa: AYR548
de la clase Placa Color: Rojo Color: Verde Color: Azul
Color Valor: $20,000,000 Valor: $5,000,000 Valor:$35,000,000

Valor
Cada objeto tiene valores propios para cada una de las
características de la Clase
Los objetos que existen en el mundo real pueden ser conceptuales o
físicos. Este es un ejemplo de objetos físicos.
Ing. Freddy Infantes Quiroz
Clases y Objetos
Ahora veamos un ejemplo de objetos conceptuales
Clase Objetos de la clase
Nombre de
la clase Cuenta Objeto 1 Objeto 2 Objeto 3
número
tipo número: 45878 número: 75369 número: 85214
Características Saldo Tipo: Ahorros tipo: Corriente tipo: Ahorros
de la clase Saldo: 500,000 saldo: 1,800,000 saldo: 120,000
transacciones Transacciones: 2 Transacciones: 5 Transacciones: 4

Los objetos conceptuales existen en el mundo real pero por no son tangibles.
Las características de las clases que se presentan en los ejemplos son solo algunas,
porque pueden tener muchas más.
Ing. Freddy Infantes Quiroz
Clases y Objetos

Las clases no sólo tienen características, también tienen comportamientos, por


ejemplo:
Acciones que se
Clase Comportamientos pueden realizar
sobre los objetos
Cuenta ➢ depositar de la clase
➢ retirar
➢ abonar intereses
➢ Cobrar comisión mensual
➢ Etc…

➢ calcular impuesto anual


Vehículo ➢ cambiar el valor
➢ matricular ante tránsito
➢ pagar comparendo
➢ Etc…

Ing. Freddy Infantes Quiroz


Ejemplos de Clases y Objetos

Ing. Freddy Infantes Quiroz


Implementación de Clases

Ing. Freddy Infantes Quiroz


Notación UML para Clases

Cuenta Clase

- saldo: int
- transacciones: int Atributos :Cuenta
+ Cuenta()
+ depositar(monto: int): void
+ girar(monto: int): void Métodos
+ obtenerSaldo(): int
+ obtenerTransaccones(): int

a) Forma Expandida b) Forma Abreviada

Ing. Freddy Infantes Quiroz


Atributos

• Son los datos que caracterizan a los objetos de una clase y


determinan el estado de un objeto. Pueden ser:
• Atributos de instancia:
Determinan el estado de los objetos. Cada objeto puede tener valores
diferentes para estos atributos.
Ejm: nombre y edad de un Alumno.

• Atributos de clase:
Son comunes a todas las instancias de la clase, por tanto el valor es el mismo
para todos los objetos.
Ejm: nombre de escuela de un alumno.
Ing. Freddy Infantes Quiroz
Sintaxis de Atributo

• Sintaxis: tipoDato nombVariable;

El tipo de dato puede ser:


- Tipo Primitivo: int, float, double, char, String, etc.
- Tipo Compuesto: String, referencia a objetos de otra clase.

• Ejemplo: class Cuenta


{
int saldo;

}
Ing. Freddy Infantes Quiroz
Métodos

• Representan todas aquellas acciones que se pueden realizar sobre un


objeto de cierta clase
• Por ejemplo: La clase Vehículo puede incluir los métodos: encender, acelerar, frenar
• Típicamente se utilizan para:
• Obtener el estado del objeto: obtener algún atributo en particular (métodos getter).
• Modificar el estado del objeto: modificar algún atributo en particular (métodos
setter).
• Por ejemplo: obtenerSaldo, modificarSaldo, etc.

• Son funciones, por lo tanto: pueden retornar valores y recibir parámetros.

Ing. Freddy Infantes Quiroz


Ejemplo de Métodos
• Ejemplo: Cuenta

Tipo Retorno: Puede ser


✓void: método no retorna valor.
✓Un tipo primitivo: int, float, String, etc.
✓Una clase: String, Vehiculo, Cliente, CajaAhorro, etc.
✓Un arreglo de tipos primitivos o clase: int[], float[], Vehiculo[],
Cliente[], etc. Ing. Freddy Infantes Quiroz
¿Qué es un Constructor?

• Un constructor es un método especial que se llama automáticamente


cuando se crea un Objeto.
• Tiene el mismo nombre que la clase.
• Pueden recibir parámetros pero no retornan ningún valor.
• Se utilizan para inicializar los atributos de la clase.
• Pueden sobrecargarse: Se pueden definir varios constructores los
cuales deben diferenciarse en los parámetros.
Ejm:
- Cliente()
- Cliente(nombre)
- Cliente(nombre, edad)
Ing. Freddy Infantes Quiroz
Tipos de Constructor

• Constructor sin parámetros Cuenta

(por defecto).
Cuenta()

• Constructor con parámetros.


Ing. Freddy Infantes Quiroz
Ciclo de Vida de los Objetos

El proceso para crear objetos tiene dos etapas:


• Declaración:
Los objetos se declaran indicando el nombre de la clase y después el
nombre del objeto.
NombClase nombObj; Ejm: Cuenta cta1;

• Creación:
El objeto se crea con la palabra reservada new y una llamada al
constructor. Ejm:
nombObj= new NombConstructor(); cta1= new Cuenta();
Ing. Freddy Infantes Quiroz
Ciclo de Vida de los Objetos

• Ambos pasos (declaración de la referencia, y creación del objeto) se pueden


realizar en la misma línea:

Cuenta cta1 = new Cuenta();


Clase
Objeto Constructor
Operador que crea un
(Variable de referencia)
nuevo Objeto

Nota:
✓ Los objetos en Java no necesitan destrucción explícita por parte del
programador.
✓ El lenguaje tiene implementado un sistema de recolección de basura (garbage
collection). Ing. Freddy Infantes Quiroz
Mensajes
• Un programa en ejecución es una colección de objetos que se crean, interactúan y
se destruyen
• La interacción se basa en mensajes que son enviados de un objeto a otro, de
modo que el emisor le pide al receptor la ejecución de un método.
• Cada mensaje tiene tres componentes: Paciente Médico
• El objeto destinatario del mensaje Mensaje
• El nombre del método a ejecutar
• Los parámetros (si existen) del método
Recepcionista

objeto.método()

objeto.método(parámetros)
Paciente Médico

Ing. Freddy Infantes Quiroz


Instanciación de Clases
• Tipos:

- Implícita:
Se instancia en forma directa al Constructor de la Clase.
Ejm:
new Cuenta()

- Explícita:
Se especifica de que clase se va a instanciar el Objeto
Ejm: Cuenta cta1 = new Cuenta()
Ing. Freddy Infantes Quiroz
Ejemplo de Implementación de clases

Ing. Freddy Infantes Quiroz


Caso de Estudio

• En un Banco se requiere de un programa que permita registrar los


depósitos y giros de una cuenta. Además que muestre el saldo actual y el
número de transacciones (giros y depósitos) realizadas de la cuenta(Caja de
Ahorro).

Cuenta

Ing. Freddy Infantes Quiroz


Ing. Freddy Infantes Quiroz
Ing. Freddy Infantes Quiroz
1. Crear la Clase usando UML
Cuenta

- saldo: int
- transacciones: int
+ Cuenta()
+ depositar(monto: int): void
+ girar(monto: int): void
+ obtenerSaldo(): int
+ obtenerTransaccones(): int
• Tiene los siguientes métodos:
• depositar(int monto) : permite abonar el valor de monto a la cuenta.
• girar(int monto): permite registrar un giro por el valor de monto.
• obtenerSaldo(): retorna el saldo de la cuenta (valor int).
• obtenerTransacciones(): retorna la cantidad total de transacciones (giros y
depósitos) que se han hecho sobre la cuenta (valor int).
• Y el siguiente constructor:
• Cuenta(): inicializa la cuenta con saldo y contador de transacciones en cero.
Ing. Freddy Infantes Quiroz
2. Implementación de la Clase
Cuenta

Cuenta

Cuenta.java
Ing. Freddy Infantes Quiroz
3. Crear una Clase Main para Instanciar los Objetos

• Se creará instancias de la clase Cuenta y se accesarán sus métodos.


• Es posible realizar varias instancias.
PruebaCuenta1 {

Cuenta Cuenta
Cuenta Cuenta

Ing. Freddy Infantes Quiroz


PruebaCuenta2 {

Cuenta cta1 Cuenta();

cta1

cta1

cta1
cta1

Ing. Freddy Infantes Quiroz

También podría gustarte