Eval 3 - Programacion - Informe
Eval 3 - Programacion - Informe
Eval 3 - Programacion - Informe
Así bien, hay otros puntos a tratar cuando se habla de las POO, por ejemplo:
El modelo computacional del paradigma orientado a objetos ¿De qué trata?
Pues los objetos se comunican entre sí enviando mensajes. Un mensaje es
una solicitud para que un objeto realice una acción.
Por otro lado tenemos la comparación de la POO con otros paradigmas (Sí,
existen otros paradigmas de programación), existe la programación procedural
el cual es otro tipo de paradigma, pero la POO ofrece una serie de ventajas
sobre otros tipos de programación que veremos más adelante.
Modelo computacional:
Encapsulamiento:
Reusabilidad y Modularidad:
• Clases: Una clase Persona podría tener atributos como nombre, edad
y dirección. Esta clase podría ser utilizada para crear objetos que
representen a diferentes personas.
Arquitectura Cliente/Servidor:
• Un cliente web podría ser un objeto que solicita una página web a un
servidor web.
Objetos
Ejemplo:
Podríamos tener la clase Perro, una instancia de esta clase podría ser el objeto
perro llamado "Chicho". La clase Perro especificaría que todos los perros
tendrían un nombre, color de pelo, una altura. Mientras que la instancia
"Chicho" contendrá valores específicos para cada uno de estos atributos.
Podemos definir a una clase como una plantilla que define variables y métodos
comunes para todos los objetos de cierto tipo
Clases
Ejemplo:
Un ejemplo de una clase en POO podría ser una clase Coche. Un coche tiene
ciertas características como el modelo, la marca, la matrícula, el color, etc.
También puede realizar ciertas acciones como acelerar, frenar, girar, etc.
class Coche:
self.marca = marca
self.modelo = modelo
self.matricula = matricula
self.color = color
def acelerar(self):
def frenar(self):
Instancia
Como ya hemos comentado, los objetos son ejemplares de una clase. Así
pues, a la hora de crear un objeto, debemos seguir los siguientes pasos:
1) Declarar el objeto.
1. Persona persona1;
Mensajes
Método
Un método es una función que se define dentro de una clase y se utiliza para
representar el comportamiento de un objeto. Los métodos se utilizan para
realizar tareas específicas en un objeto, como cambiar el estado de un objeto,
calcular un valor, interactuar con otros objetos, etc.
Variables de instancia
Cuando creamos una clase en Python, lo más común es inicializar los atributos
o variables de instancia en el método de inicialización __init__, aunque
también podrían crearse variables de instancia en otros métodos de instancia.
Creación de objetos
Destructor de objetos
Por ejemplo, el destructor de la clase entero puede ser definido tal y como
se muestra a continuación.
~entero(){}
Igualdad e identidad
Ejemplos de igualdad:
# Números
1 == 1 # True
# Cadenas
“Hola” == “Hola” # True
# Listas
Ejemplos de identidad:
A=1
B=1
A is b # True
A = [1, 2, 3]
B=a
A is b # True
Diferencias:
Generalización y especialización
Superclase y subclase
Una cosa que debemos tener clara a la hora de meternos en las lides de la
herencia es que no existe propiamente un tipo de clase llamado sub-clase o
super-clase. Estos conceptos se utilizan para definir la relación que existe
entre dos clases concretas. Una sub-clase es simplemente la que hereda de
otra clase, a la que llamaremos super-clase; dicho de otro modo, la super-clase
es la clase madre y la sub clase la clase hija. Igual como ocurre en el resto de
las relaciones, nuestra sub-clase puede ser al mismo tiempo una super-clase
para otras clases, y así sucesivamente. Esto es algo que veremos muy
comúnmente en la POO donde, por ejemplo, todas las clases derivan, en algún
punto de la clase Object.
Terminología importante:
Subclase: la clase que hereda la otra clase se conoce como subclase (o una
clase derivada, clase extendida o clase hija). La subclase puede agregar sus
propios campos y métodos, además de los campos y métodos de la
superclase.
Herencia simple
Herencia múltiple
Cuando se deriva una clase usando varias clases bases la misma se denomina
herencia múltiple. Usando la herencia múltiple una clase derivada recibe los
atributos de dos o más clases bases. Si se utiliza la herencia múltiple para
derivar una clase el constructor de la clase derivada deberá llamar a los
constructores de cada una de las clases bases.
Interfaz
Las Interfaces son usadas para indicar qué métodos debe obligatoriamente
implementar (contener) una Clase (aunque no tienen por qué comportarse del
mismo modo).
Ejemplo práctico:
Supongamos que tenemos una clase padre Animal con un método comer().
La clase hija Perro hereda este método, pero queremos que los perros tengan
un comportamiento específico al comer, como ladrar antes de hacerlo. Para
esto, podemos redefinir el método comer() en la clase Perro de la siguiente
manera:
class Animal:
def comer(self):
class Perro(Animal):
def comer(self):
perro = Perro()
perro.comer() # Imprime "El perro ladra" y luego "El animal está comiendo"
This y Super
Por otro lado, this nos permite especificar que nuestras variables están
señalando a la misma clase donde estamos trabajando, ya sea una clase
normal, anidada, subclase o superclase.
Concepto de Polimorfismo:
Ejemplo:
Tipos de Polimorfismo:
Ejemplo:
Java
vehiculo = Coche()
Ejemplo:
C++
Referencias Polimórficas:
Ejemplo:
Java
Vehiculo referencia;
Ventajas del Polimorfismo:
Tipos de relaciones:
Asociación
Es una relación entre dos objetos que no implica propiedad. En otras palabras,
los objetos no se "pertenecen" entre sí.
Ejemplo:
Un objeto Persona puede tener una relación de asociación con un objeto
Coche. La persona puede conducir el coche, pero el coche no "pertenece" a
la persona.
Agregación
Ejemplo:
Un objeto Coche puede tener una relación de agregación con un objeto Motor.
El motor es un componente del coche y no puede existir independientemente
del coche.
Composición
Es una relación entre dos objetos en la que un objeto "es parte" del otro. El
objeto que es parte del otro se denomina "parte" y el objeto del que forma parte
se denomina
CONCLUSIÓN
Algunos aspectos claves que aprendimos de la POO pueden ser que, los
objetos son entidades que encapsulan datos y comportamiento. Las clases
son plantillas que definen la estructura y el comportamiento de objetos, y que
la herencia es el mecanismo para crear nuevas clases a partir de clases
existentes, puede decirse que estos son los tres pilares bases de la POO.
Además nos deja claro que el polimorfismo es una capacidad de los objetos
para responder al mismo mensaje de forma diferente, por otro lado, el
encapsulamiento es la protección de los detalles internos de los objetos, la
reutilización es la creación de clases generales y reutilizables, y la modularidad
viene siendo la división del código en unidades independientes.
Por otro lado, la POO puede ser más compleja de aprender y comprender que
otros paradigmas de programación y puede ser menos o más eficiente que la
programación procedural en algunos casos específicos, además el uso
excesivo de la herencia y el polimorfismo puede dificultar la lectura y el
mantenimiento del código.
http://cv.uoc.edu/annotation/cb7a0462407a23d1f3fc46cb1d4e01f8/645413/PI
D_00249622/PID_00249622.html
https://programacion.top/conceptos/instancia/
https://es.wikipedia.org/wiki/Objeto_(programaci%C3%B3n)
https://programacion.top/orientada-objetos/clase/
https://programacion.net/articulo/programacion_orientada_a_objetos_279#:~:
text=Los%20objetos%20son%20instancias%20de,color%20de%20pelo%2C
%20una%20altura.
https://prezi.com/nm2sndpntwsx/mensajes-en-el-contexo-programacion-
orientada-a-objetos/
https://www.codigopiton.com/variables-de-clase-y-de-instancia-en-python/
https://universidad-de-los-andes.gitbooks.io/fundamentos-de-
programacion/content/Nivel2/6_ClasesYObjetos.html
http://cidecame.uaeh.edu.mx/lcc/mapa/PROYECTO/libro15/25_destructores.
html
https://edukativos.com/apuntes/archives/3707
https://www.studocu.com/es-mx/document/instituto-tecnologico-superior-de-
tierra-blanca/programacion-avanzada/32-clasificacion-herencia-simple-
herencia-multiple/28326902
https://informaticapc.com/poo/interfaces.php
https://platzi.com/clases/1629-java-oop/21575-super-y-
this/#:~:text=super%3A%20es%20la%20palabra%20reservada,en%20la%20
que%20se%20utiliza.