Está en la página 1de 21

PYTHON DESDE CERO PARA INGENIEROS

CLASE No 14 – 15 : Clases y Objetos

RELATOR: BILL CLINT MAQUIN VALLADARES


INGENIERO DE MINAS – DESARROLLADOR DE SOLUCIONES INFORMÁTICAS
BCMAQUINV@UNI.PE

NUBE MINERA 2020


Clases y Objetos
Los conceptos de la programación orientada a objetos tienen origen en Simula 67, un lenguaje diseñado
para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard del Centro de Cómputo Noruego en
Oslo. La idea ocurrió para agrupar diversos tipos de naves en diversas clases de objetos, siendo responsable
cada clase de objetos de definir sus propios datos y comportamientos. Fueron refinados más tarde en
Smalltalk, que fue desarrollado en Simula en Xerox PARC (cuya primera versión fue escrita sobre Basic) pero
diseñado para ser un sistema completamente dinámico en el cual los objetos se podrían crear y modificar
"en marcha" (en tiempo de ejecución) en lugar de tener un sistema basado en programas estáticos.

La programación orientada a objetos tomó posición como el estilo de programación dominante a mediados
de los años ochenta, en gran parte debido a la influencia de C++, una extensión del lenguaje de
programación C. Su dominación fue consolidada gracias al auge de las Interfaces gráficas de usuario, para las
cuales la programación orientada a objetos está particularmente bien adaptada.

NUBE MINERA 2020


Atributos Metodos
Nombre Respirar
Clases y Objetos – Conceptos fundamentales Apellido Caminar
Entidades: Cualquier tipo de objeto o concepto Edad Comer
sobre el que se recoge propiedades (atributos) y Sexo Hablar
definir sus funcionalidades (métodos). DNI Escuchar
Atributo: Variable de un tipo de datos asociados a Telefono Dormir
un objeto, y cuyo valor puede ser alterado por la Clase persona
ejecución de algún método.
Método: Desde el punto de vista del
comportamiento, es lo que el objeto puede hacer.
Un método puede producir un cambio en las
propiedades del objeto, o la generación de un
"evento" con un nuevo mensaje para otro objeto
del sistema. Atributos Valor Atributos Valor
Clase: es una entidad que se usa como plantilla Nombre Carlos Nombre Carolina
Apellido Alcántara Apellido Giraldo
(molde), que define los métodos y atributos del Edad 55 Edad 29
objeto que representa, pero luego, cada objeto Sexo M Sexo F
tendrá sus propios valores y compartirán las mismas DNI 8888888 DNI 4555555
funciones. Telefono 95454654 Telefono 94854124

Instanciar: crear objetos de una clase. Objeto: persona1 Objeto: persona2


NUBE MINERA 2020
Clases y Objetos

En Python cualquier elemento del lenguaje pertenece a una clase y todas las clases tienen el mismo rango y
se utilizan del mismo modo.

NUBE MINERA 2020


Clases y Objetos:
Una clase consta de dos partes el encabezado que comienza con el término class más el nombre de la clase
seguido de dos puntos (:) y un cuerpo donde se declaran los atributos y los método

La documentación de una clase debe situarse


después del encabezado y justo antes del lugar
donde se declaren las variables y los métodos
de la clase.

Variable de clase: Es una variable cuyo


valor es compartida por todos los
objetos de la clase

variable de instancia: se define dentro


de un método y pertenece a un objeto
determinado de la clase instanciada..
Self: hace referencia al objeto especifico creado a partir de una clase
Desde cualquier lugar de un programa se puede acceder a la cadena de documentación de una clase accediendo al
atributo especial: NombreClase.__doc__
NUBE MINERA 2020
Clases y Objetos – __init__()
Variables de clase

El método __init__() es especial porque se ejecuta


automáticamente cada vez que se crea una nuevo
objeto. Este método, que es opcional, se llama
constructor y se suele utilizar para inicializar las variables
de los objetos creados a partir de una clase.

Variables de instancia

En cada creación de un objeto


esta variable se le hace una
asignación aumentada.

Este método retorna la


nota promedio

NUBE MINERA 2020


Clases y Objetos

Tanto para acceder a los atributos, como para


llamar a los métodos de una clase se utiliza el
método denominado notación de punto que
se basa en escribir el nombre del objeto o de la
clase seguido de un punto y el nombre del
atributo o del método con los argumentos que
procedan: clase.atributo, objeto.atributo,
objeto.método([argumentos]).

Pare crear nuevamente el atributo realizar una


nueva asignación
NUBE MINERA 2020
Funciones para atributos: getattr(), hasattr(), setattr() y delattr()

getattr(): La función getattr() se utiliza para acceder al


valor del atributo de un objeto Si un atributo no existe
retorna el valor del tercer argumento (es opcional).

hasattr(): La función hasattr() devuelve True o False


dependiendo si existe o no el atributo indicado.

setattr(): Se utiliza para asignar un valor a un atributo.


Si el atributo no existe entonces será creado.

delattr(): La función delattr() es para borrar el


atributo de un objeto. Si el atributo no existe se
producirá una excepción del tipo AttributeError.

NUBE MINERA 2020


Clases y Objetos

Llamada de métodos desde otro método de la


misma clase

NUBE MINERA 2020


Clases y Objetos – Características
Abstracción: Se refiere a que un elemento pueda aislarse del resto de elementos y de su contexto para
centrar el interés en lo qué hace y no en cómo lo hace (caja negra).
Modularidad: Es la capacidad de dividir una aplicación en partes más pequeñas independientes y
reutilizables llamadas módulos.
Encapsulación: Consiste en reunir todos los elementos posibles de una entidad al mismo nivel de
abstracción para aumentar la cohesión, contando con la posibilidad de ocultar los atributos de un objeto (en
Python, sólo se ocultan en apariencia).
Herencia: se refiere a que una clase pueda heredar las características de una clase superior para obtener
objetos similares. Se heredan tanto los atributos como los métodos. Éstos últimos pueden sobrescribirse
para adaptarlos a las necesidades de la nueva clase. A la posibilidad de heredar atributos y métodos de
varias clases se denomina Herencia Múltiple.
Polimorfismo: Alude a la posibilidad de identificar de la misma forma comportamientos similares asociados
a objetos distintos. La idea es que se sigan siempre las mismas pautas aunque los objetos y los resultados
sean otros.

NUBE MINERA 2020


Clases y Objetos – Colaboración de clases
La colaboración es el primer tipo de relación entre dos clases. Es cuando una clase contiene un objeto de
otra clase como atributo, y esta relación es del tipo "...tiene un..." o "...es parte de...".

Atributos Metodos
Atributos Metodos
Nombre __init__
cliente1 __init__
Monto Depositar
cliente2 operar
extraer
Depositos
retornar

NUBE MINERA 2020


Atributos Metodos Atributos Metodos
cliente1 __init__ Nombre __init__
cliente2 operar Monto Depositar
Depositos extraer
retornar

NUBE MINERA 2020


Clases y Objetos – Herencia
La herencia es una de las características más importantes de la Programación Orientada a Objetos. Consiste
en la posibilidad de crear una nueva clase a partir de una o más clases existentes, heredando de ellas sus
atributos y métodos que podrán utilizarse como si estuvieran definidos en la clase hija.
Las clases derivadas se declaran como cualquier clase con la diferencia de incluir después de su nombre el
nombre de la clase superior (entre paréntesis) de la que heredará sus características
La herencia responden a la pregunta ClaseA "..es un.." ClaseB.

NUBE MINERA 2020


Atributos Metodos
Nombre Respirar
Clases y Objetos – Herencia Apellido Caminar
Edad Comer
Sexo Hablar
DNI Escuchar
Telefono Dormir
Clase persona

Atributos Valor Atributos Valor


Nombre Carlos Nombre Carolina
Apellido Alcántara Apellido Giraldo
Edad 55 Edad 29
Sexo M Sexo F
DNI 8888888 DNI 4555555
Telefono 95454654 Telefono 94854124

Objeto: persona1 Objeto: persona2


NUBE MINERA 2020
Atributos Metodos
Clases y Objetos – Herencia Nombre
Apellido
Respirar
Caminar
Edad Comer
Sexo Hablar
DNI Escuchar
Telefono Dormir
Sueldo Impuestos
Llamamos al Clase Empleados
método init de
la clase padre.
Referencia a
la clase padre.

Atributos Valor
Nombre Carolina
Apellido Giraldo
Edad 29
Sexo F
DNI 4555555
Telefono 94854124
Sueldo 3500
Llamando a un método Objeto: karolG
de la clase padre.
NUBE MINERA 2020
Clases y Objetos – Herencia Múltiple La herencia múltiple se refiere a la
posibilidad de crear una clase a partir de
múltiples clases superiores. Es importante
nombrar adecuadamente los atributos y
los métodos en cada clase para no crear
conflictos

El método __del__ es un método especial, ejecuta un


bloque de código cuando se elimina el objeto con la
palabra reservada del NombreObjeto.
NUBE MINERA 2020
Clases y Objetos – Funciones issubclass() y isinstance()
La función issubclass (SubClase, ClaseSup) se utiliza para
comprobar si una clase (SubClase) es hija de otra superior
(ClaseSup), devolviendo True o False según sea el caso.

La función booleana isinstance(Objeto, Clase) se utiliza


para comprobar si un objeto pertenece a una clase o clase
superior.

NUBE MINERA 2020


Clases y Objetos
CLASE PADRE
Camiones Mineros
SUBCLASE

CAMIONES PARA CANTERA CAMIÓN PARA MINERIA CAMIONES ARTICULADOS CAMIÓN MINERO DE BAJO PERFIL
CAT 772G CAT 789D CAMIONES ARTICULADOS 725C2 CAMIÓN MINERO AD22 DE
Avance 1 12.9 km/h Avance 1 12.6 km/h Avance 1 8 km/h BAJO PERFIL
Avance 2 17.7 km/h Avance 2 17.1 km/h Avance 2 15 km/h Avance 1 5.6 Km/h
Avance 3 24 km/h Avance 3 23.1 km/h Avance 3 22 km/h Avance 2 10.7 Km/h
Avance 4 32.2 km/h Avance 4 31.2 km/h Avance 4 34 km/h Avance 3 16.0 Km/h
Avance 5 43.6 km/h Avance 5 42.3 km/h Avance 5 47 km/h Avance 4 25.3 Km/h
Avance 6 58.7 km/h Avance 6 57.2 km/h Avance 6 55 km/h Carga Útil 22 tons
Avance 7 79.7 km/h Carga util 181 tons Carga Útil 26.5 tons T. combustible 360 l
Carga Útil 45 tons combustible 3785 l T. combustible 412 l
combustible 530 l

OBJETO
NUBE MINERA 2020
Clases y Objetos
CLASE PADRE
EQUIPOS DE CARGUÍO
SUBCLASE

CARGA ACARREO DESCARGA (LHD) PALAS DE CABLE ELÉCTRICA CARGADORES DE RUEDAS RETROEXCAVADORAS PARA MINERÍA
LHD R1300G PALAS DE CABLE ELÉCTRICA 7295 CARGADORES DE RUEDAS GRANDES 994K PALAS HIDRÁULICA PARA MINERÍA 6020B
Avance - 1 4.5 km/h CARGA ÚTIL DEL BALDE 45T Carga Útil Nominal 40.8 tons Carga Útil Nominal 21.6 tons
Avance - 2 7.8 km/h
Avance - 3 15 km/h
Avance - 4 26.3 km/h
Retroceso - 1 4.5 km/h
Retroceso - 2 7.8 km/h
Retroceso - 3 14.8 km/h
Retroceso: 4 23 km/h
Carga Útil 6.8 tons
combustible 295 l

OBJETO
NUBE MINERA 2020
Clases y Objetos – Simulación

Camión Cargado
Atributos Métodos
marca acarreo
nombre descargar
Botadero
Atributos Métodos
galones numero de vueltas
total depositado descargar
capacidad de acarreo demora
material en acarreo
numero de vuelta
Atributos Métodos tiempo de operación
marca carguío registro
nombre numero de atención
capacidad de cuchara
numero de servicios
registro
Carguío

Cola Camión Descargado

NUBE MINERA 2020


PYTHON DESDE CERO PARA INGENIEROS
CLASE No 14 – 15 : Clases y Objetos

RELATOR: BILL CLINT MAQUIN VALLADARES


INGENIERO DE MINAS – DESARROLLADOR DE SOLUCIONES INFORMÁTICAS
BCMAQUINV@UNI.PE

GRACIAS POR SU ATENCIÓN

NUBE MINERA 2020

También podría gustarte