Apuntes_Python/01_curso/Modulo_3/3-1a_intro_POO.py
2022-12-24 22:41:20 -03:00

97 lines
3.0 KiB
Python

"""
Caracteristicas:
TODO es un objeto
Tipado Dinamico
°Menor Acoplamiento, facilita realizar cambios en los modelos
°Permite mejor aprovechamiento del polimorfismo
Es meta-circular
° Permite hacer meta-programación
PROGRAMA(POO)
Objetos que colaboran enter si enviandose mensajes
Los obejtos son creados mediante clases.
Las clases son objetos que representan conceptos o ideas del dominio del problema.
Las clases definen el msj q sabe el responder objeto.
Los obejtos son conocidos por los mensajes q saben responder.
METODOS
Son objetos que representan un conjunto de colaboraciones
En las clases se definen 2 tipos de metodos
METODOS DE INSTANCIA
Son metodos que implementan los mensajes que se envian a los obj q son instancias de una clase
METODOS DE CLASE
Son metodos que implementan los mensajes q sen envian a la clase
EXISTEN 2 implementaciones de POO
Prototipos:
- Un objeto ejemplar que representa el comportamiento de un conjunto de obetos similares
Clases:
- Una clases es un onjeto que representa un concepto o idea del dominio del problema
La SUBCLASIFICACION o HERENCIA: es una herramienta para organizar el conocimiento en ontologías
La CLASIFICACION es:
1- Una relacion estatica entre clases.
2- Obliga a tener una clase y por lo tanto su nombre antes del obejto concreo, antinatural.
3- Obliga a generealizar cuadno aun no se posee el conocimiento total de aquello q representa
La SUBCLASIFICACION ( HERENCIA )
1- Debe ser especificada de manera inversa a como se obtiene el conociento
2- Rompe el encapsulamiento, puesto que la subclase debe conocer la implementacion de la superclase
POLIMORFISMO
Dos o mas objeto son polimorficos entre si para un conjunto de mensajes, si responden a dicho
conjunto de mensajes semanticamente igual,es decir, que hacen lo mismo. Recibir objetos
polimorficos y devolver objetos polimorficos
Un método es un objeto que representa un conjunto e colaboraciones.
La reclación de conocimiento es la única relación que existe entre los objetos.
La definición de tipo en el POO es que es un conjunyo de mensajes.
MULTIPARADIGMA, FUNCIONAL e IMPERATIVO además de POO.
Todo es un objeto, es dinamicamente tipado, se puede utlizar al máximo el polimorfismo.
Se puede hacer metaprogramación.
"""
" Ejemplificación de polimorfismo "
import math
# Los enteros y los decimales son polimórficos respecto a la suma
print(
4 + 6,
4.5 + 5.7,
)
# Los enteros y decimales son polimórficos respecto a la resta
print(
4 - 3,
8.5 - 5.7,
)
# Los enteros y decimales son polimórficos respecto a la multiplicación
print(
4 * 3,
8.5 * 5.7,
)
# Pero los enteros no son polimórficos respecto a la funcion factorial
print(
math.factorial(4), # 24
#math.factorial(4.5), # ValueError
)
class ClassA(object):
def m1(self, a, b):
return a + b