Está en la página 1de 38

CARRERA DE

INGENIERIA DE SOFTWARE
CON INTELIGENCIA ARTIFICIAL

www.senati.edu.pe
CURSO: PROGRAMACIÓN ORIENTADA A OBJETOS
Desarrollar los conceptos del paradigma de la programación orientada a objetos
www.senati.edu.pe
OBJETIVOS
• Conocer de este paradigma de la programación que se puede usar en cualquier
lenguaje de programación moderno.
• Conocer de los 4 pilares de la OOP.
• Definir y usar clases en nuestros programas.
• Crear objetos.
• Encapsulamiento de propiedades y métodos en una clase.

www.senati.edu.pe
PROGRAMACION ORIENTADA A OBJETOS
1. Programación Orientada a Objetos
2. Definir una clase en Python y otros lenguajes
3. Terminología
4. Pilares de la Programación Orientada a Objetos

www.senati.edu.pe
Programación Orientada a Objetos
Paradigma de programación
Es un enfoque para organizar y estructurar su código.
• Programación procedimental
Se sigue secuencialmente un procedimiento paso a paso para resolver
el problema.
• Programación orientada a objetos
Las entidades o conceptos del mundo real se modelan utilizando
objetos.
Un objeto tiene estados y comportamientos (data y código que manipule
la data).
www.senati.edu.pe
Programación Orientada a Objetos
Es una forma de escribir código que se considera de las
más efectivas.
Cuando defines una clase deberás describir el
comportamiento y forma de ese objeto.
Objeto es la forma de referirse a la información creada por
una clase (Instancia de una clase).
Cada Instancia de la clase tendrá la misma “forma” pero
diferente información.

www.senati.edu.pe
Instance Object
Clases Objetos

• Instancias u Objetos Nombres: Nombres:


• Instanciación Nombres
Id
Nombres: Juan
Id: 34274
Mabel Doris
Id: 1451 Id: 4545
• Encapsulación Libro Prestado
Devolver Libro
Libro Prestado
Devolver Libro
Libro Prestado Libro Prestado
Devolver Libro Devolver Libro
• Estado -> Variables
• Comportamiento -> Métodos
• Reusabilidad de Código
• Herencia
Titulo: Titulo:
• Seguridad en los datos Titulo
Isbn
Algoritmos
Titulo: Java
Isbn: 654321
Plantillas

• Abstracción Autor
Isbn: 123456
Autor: Charles
Autor: Neil
Isbn: 142354
Autor: Eden
Issue Issue
• Polimorfismo Deposit
Issue
Deposit
Deposit
Issue
Deposit

Class Objects

www.senati.edu.pe
www.senati.edu.pe
4 PILARES DE LA OOP
Abstracción: Es cuando separamos los datos de
un objeto para luego generar un molde (una
clase).
Encapsulamiento: Lo puedes utilizar cuando
deseas que ciertos métodos o propiedades sean
inviolables o inalterables.

Herencia: Nos permite crear nuevas clases a


partir de otras.
Polimorfismo: Proviene de Poli = muchas, morfismo
= formas. Se utiliza para crear métodos con el mismo
nombre pero con diferente comportamiento.
www.senati.edu.pe
Definir una clase en diferentes lenguajes

JavaScript (Crear / Instanciar) PHP (Crear / Instanciar)

<?php
class Cliente{ class Cliente{
// resto de la clase // resto de la clase
} }

const cliente = new Cliente(); $cliente = new Cliente();


?>

www.senati.edu.pe
Definir una clase en diferentes lenguajes

Python (Crear / Instanciar) Java (Crear / Instanciar)

class Cliente: Public class Cliente{


# resto de la clase // resto de la clase
}

cliente = Cliente() Cliente cliente = new Cliente();

www.senati.edu.pe
Terminología
Instancia

El objeto es creado al llamar una clase.

Atributo de Clase

Es una propiedad que tendrán todos los objetos creados con nuestras clases.

Método

Es una función que existe dentro de una clase.

www.senati.edu.pe
Ejemplo:

www.senati.edu.pe
Pilares de la Programación Orientada a Objetos
Abstracción Encapsulamiento

Son los datos necesarios de una clase.


Como en el ejemplo anterior, si se Permite restringir u ocultar el
desea guardar datos de una Persona, acceso a los datos dentro de la
necesitas: Nombres, Apellidos, Fecha misma clase del mundo exterior
Nacimiento, Género. (usualmente se modifican vía
En la abstracción se debe agregar métodos en la misma clase)
todos los datos necesarios y evitar
datos innecesarios.

www.senati.edu.pe
Herencia en Python
En un lenguaje orientado a objetos cuando hacemos que una clase (subclase)
herede la definición de otra clase (superclase), de manera que se aplique a
instancias de éstas, estamos haciendo que la subclase contenga todos los
atributos y métodos que tenía la superclase.
No obstante al acto de heredar de una clase también se le llama a menudo
“extender o derivar una clase”.
Este mecanismo nos permite, a la hora de definir una subclase, indicar sólo
aquellas características que son específicas, mientras que las que son
comunes con otras subclases de la misma superclase, decimos que las
hereda.
Se llama también clase padre a la superclase y clase hijo a la subclase.

www.senati.edu.pe
Herencia en Python
En phython la sintaxis es:

Si queremos heredar los atributos y métodos y agregar otros nuevos se puede


usar la función super() como se verá en otro ejemplo.

www.senati.edu.pe
Herencia en Python – Diagrama Clases UML
Ejemplo

www.senati.edu.pe
Herencia Multiple en Python
A diferencia de lenguajes como Java y C#, el lenguaje Python permite la
herencia múltiple, es decir, se puede heredar de múltiples clases.
La herencia múltiple es la capacidad de una subclase de heredar de múltiples
súper clases.
Esto conlleva un problema, y es que si varias súper clases tienen los mismos
atributos o métodos, la subclase sólo podrá heredar de una de ellas.
En estos casos Python dará prioridad a las clases más a la izquierda en el
momento de la declaración de la subclase

www.senati.edu.pe
Herencia Múltiple en Python – Diagrama Clases UML

Ejemplo

www.senati.edu.pe
Herencia Múltiple en Python – Ejercicio

Implementar
el siguiente
diagrama:

www.senati.edu.pe
Clases Abstractas
Un concepto importante en programación orientada a objetos
es el de las clases abstractas.
Unas clases en las que se pueden definir tanto métodos como
propiedades, pero que no pueden ser instancias directamente.
Solamente se pueden usar para construir subclases.
Permitiendo así tener una única implementación de los
métodos compartidos, evitando la duplicación de código.

www.senati.edu.pe
Propiedades de las clases abstractas
Las clases abstractas no pueden ser instanciadas.
No es necesario que se tenga una implementación de todos los métodos. Pudiendo
ser estos abstractos.
Los métodos abstractos solamente tienen una declaración, pero no una
implementación.
Las clases derivadas de las clases abstractas debe implementar todos los métodos
abstractos. Sino se define alguno no se podrá crear la clase.
En Resumen, las clases abstractas define una interfaz común para las subclases.
Proporciona atributos y métodos comunes para todas las subclases evitando así la
necesidad de duplicar código. Imponiendo además lo métodos que deber ser
implementados para evitar inconsistencias entre las subclases.

www.senati.edu.pe
Clases Abstractas en Python – Ejemplo

Implementar
el siguiente
diagrama:

www.senati.edu.pe
Contenido Estático (de Clase) en Python
Variables de CLASE
Antes de aprender esto repasemos lo siguiente:
• Las clases agrupan objetos con propiedades y características en común.
• Instancia significa crear un objeto a partir de una clase.
• Los atributos son elementos que almacenan datos (diferenciando los objetos
dentro de la misma clase) utilizando variables de instancia.
Las variables de clase corresponden a una clase determinada y son accesibles
sólo invocando la clase.
Las variables de instancia también a una clase determinada pero sólo es
accesible mediante la instancia del objeto.
Y lo mismo sucede con los métodos!
www.senati.edu.pe
Variables de Clase en Python

Diagrama de Clase
Y de Objetos Instanciados

www.senati.edu.pe
Diseño de CLASES en Python
Implemente el siguiente Diagrama de clases
en Python

www.senati.edu.pe
Polimorfismo en Python
El polimorfismo es uno de los pilares básicos en la programación orientada
a objetos, por lo que para entenderlo es importante tener las bases de la
POO y la herencia bien asentadas.
El término polimorfismo tiene origen en las palabras poly (muchos) y morfo
(formas), y aplicado a la programación hace referencia a que los objetos
pueden tomar diferentes formas. ¿Pero qué significa esto?
Pues bien, significa que objetos de diferentes clases pueden ser accedidos
utilizando el mismo interfaz, mostrando un comportamiento distinto
(tomando diferentes formas) según cómo sean accedidos.
En lenguajes de programación como Python, que tiene tipado dinámico, el
polimorfismo va muy relacionado con el duck typing.
www.senati.edu.pe
Diseño de CLASES en Python

Implemente el siguiente
Diagrama de clases en Python

www.senati.edu.pe
LAB VentasMuebles
Una empresa desea registrar la Venta de Muebles que ofrece a los clientes.
En este proceso, debemos ingresar el número de la boleta, la fecha, el nombre del cliente, la
descripción del mueble, y el precio del mismo.
La empresa aplica el siguiente descuento: si el precio es mayor a 500 su descuento es el 10%
del precio, sino el descuento es el 2% del precio. El precio de venta neto es la diferencia del
precio con su descuento.
Se pide realizar las siguientes actividades:
• Crear un proyecto Python.
• Diseño de la Clase, sus atributos, propiedades y métodos.
• Diseñar el Formulario, agregando sus controles
• Programe el formulario instanciando la clase, ingrese sus datos y visualice los resultados.

www.senati.edu.pe
VentasMuebles

www.senati.edu.pe
LAB Transporte
Una empresa de Transportes solicita un programa que permita registrar el transporte de carga
pesada a provincia.
En este proceso, debemos ingresar el número de la guía, la fecha del documento, el nombre
del Cliente, la descripción de la carga y la cantidad de Toneladas Métricas (TM) de la carga.
La empresa cobra por cada TM de carga S/. 150; el costo del transporte es el producto de la
tarifa por TM por la cantidad de TM de la carga. Por concepto de seguro cobrará el 2% del
costo de transporte; el Monto es la suma de costo de transporte y el seguro. Se aplicará el
IGV que representa el 18% del Monto, donde el Monto Total se obtiene de la suma del IGV y
el Monto.
Se pide:
• Diseño de la Clase, sus atributos, propiedades, métodos y el constructor
• Diseñar el Formulario, agregando sus controles y programación.

www.senati.edu.pe
LAB Transporte

www.senati.edu.pe
LAB Empresa
Las empresas de producción necesitaban trasladar su materia prima a provincia y, es por ello
que se crean las empresas de Transportes las cuales se dedican al traslado de la materia
prima cobrando por ello un flete: costo de la tarifa por la cantidad de Toneladas Métricas (TM).
Estas empresas de transporte registraban el nombre del Destinatario, la dirección del destino
(Departamento del país) y la cantidad de TM que trasladaban, la tarifa era estándar: S/.150
por TM.
La empresa Bronco está constituida bajo el concepto del costo de la tarifa única.
La empresa Flores maneja el costo de la tarifa según su destino: para Arequipa, Moquegua o
Tacna la tarifa es S/.200; para Piura, Tumbes y Cajamarca la tarifa es de S/.220; el resto
conserva su mismo costo: S/.150; además toda empresa que traslade su materia prima por
esta empresa deberá pagar por concepto de seguro el importe del 0.5% del flete, obteniendo
así el monto: suma del flete y del seguro.
• Diseñe la Clase Base, definiendo sus atributos, propiedades y métodos.
• Defina las Clases Derivadas.
• Realizar la programación de las Clases Derivadas.
www.senati.edu.pe
LAB EmpresaBronco

www.senati.edu.pe
LAB EmpresaFlores

www.senati.edu.pe
LAB FullCopias
Programa para servicio de fotocopiado.
En este proceso, debemos ingresar el Nombre del Cliente, la descripción del documento y el
número de copias por documento, por ejemplo: 2 copias de recibo por honorarios.
Las empresas cobran por cada copia S/. 0.10, obteniendo el Importe de las fotocopias: (costo
de la fotocopia)(cantidad de documentos)(número de copias por documento).
El costo de su servicio está en función al tamaño del documento: si este es A4 el costo de la
copia es S/.0.08; si es A3 el costo de la copia es S/.0.15 y los demás es de S/0.10, obteniendo
así el importe de las fotocopias.
Realizar:
• Diseñe la Clase Base FOTOCOPIAS definiendo sus atributos, propiedades, métodos y el
constructor.
• Defina la Clase Derivada FULLCOPIA la cual permita sobrescribir el cálculo del importe

www.senati.edu.pe
LAB FULLCOPIAS

www.senati.edu.pe
www.senati.edu.pe

También podría gustarte