Curso Programacion 2
Programación orientada a objetos
en python
¿Que es la programación orientada a objetos?
Es un paradigma de la programación que parte del concepto de “objeto” como base,
estos contienen campos (atributos o propiedades) y métodos (‘funciones’
asociadas al objeto).
¿Que es un objeto?
Son entidades que tiene un determinado identidad, estado y comportamiento.
Conceptos Básicos POO
Identidad: Es lo que distingue a un objeto de otro, lo acompaña desde su creación
hasta su muerte. Ejemplo Pikachu de ash, usted.
Estado: Situación actual en que un objeto se encuentra, se considera algo privado
y no debe ser conocido, salvo que sea necesario cuyo caso se debe acceder a el
mediante mensajes.
Comportamiento
Básicamente son el conjunto posibles respuestas a los mensajes
recibidos por un objeto se denominan comportamiento, que a su vez
pueden provocar:
Caso 1: Un cambio de estado en el objeto receptor del mensaje.
Caso 2: La devolución del estado de un objeto, en su totalidad o
parcialmente.
Caso 3: El envío de un mensaje desde el objeto receptor a otro objeto
(delegación).
recibirDanio(30)
recibirDanio(int danio){
this.hp = hp - danio
}
getCantPokemonCapturados()
getCantPokemonCapturados()
750
750
Máquina Pokédex
Delegación🤯
Pilares de POO
La POO tiene 5 pilares y estos son:
1) Abstracción
2) Delegación
3) Encapsulamiento
4) Herencia
5) Polimorfismo
Pilar POO 1: Abstracción
Imagina que tenemos un problema (consigna), la abstracción básicamente consiste
en omitir los detalles que no son necesarios para nosotros y encontrar las entidades
del problema (lo más relevante) y modelamos esas entidades con Clases. Ejemplo:
“Los aldeanos utilizan herramientas: (1) Hacha, (2) Pico y (3) Azada. Estas herramientas se desgastan cada
vez que el aldeano las usa, todas las herramientas tienen una durabilidad de 10 unidades, y tienen las sgt
características :
1) El hacha se desgasta de forma lineal.
a) Ej.: Primer uso reduce durabilidad en 1. Segundo uso reduce la durabilidad en 2, etc.
2) El pico no se desgasta.
3) La azada se desgasta siguiendo la sucesión de Fibonacci.
a) Ej.: Primer uso reduce durabilidad en 0, segundo uso reduce la durabilidad en 1, tercer uso
reduce la durabilidad en 1, etc. Serie de Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13, 21, ….
Qué entidades son importantes?
1) Hacha
2) Pico
3) Azada .
atributos que se encontraron: durabilidad y la cantidad de usos.
Atributos
Atributo (Atributo de instancia/ Variable de instancia) :
Básicamente es una variable interna del objeto que sirve para almacenar parte del
estado del mismo.
Atributo de clase (Variable de instancia) : Son compartidos entre todas las
instancias de una clase pertenecen a la clase en lugar de una instancia particular,
su valor es el mismo para todas las instancias de la clase.
Clases en python
Definición de clase:
Los objetos clase soportan dos tipos de operaciones: hacer referencia a atributos
e instanciación.
MyClass.i y MyClass.f son referencias de atributos válidas, retorna un entero y
una función respectivamente.
Constructor (Método __init__)
clase define un método __init__(), la instanciación de la clase automáticamente
invoca a __init__() para la instancia recién creada.
Atributo de clase e instancia
Métodos de instancia y de clase
Metodo de instancia (método): básicamente es la implementación de la
respuesta de un objeto a un mensaje. (que hace el objeto ante el mensaje). Se
asemeja a una función en la programación estructurada.
Método de clase: Básicamente son métodos que pertenecen a la clase y se
pueden usar sin necesidad de instanciar un objeto.
Métodos de instancia y de clase
Método de instancia
1. Atributos de instancias
2. Métodos de instancias
3. Atributos de clase
4. Métodos de clase
Métodos de instancia y de clase
Método de clase
1. Atributos de clase
2. Métodos de clase
3. (métodos de instancias si
estos no hacen referencia a
ningún atributo de instancia )
acceder
acceder
Es una relacion entre clases, por la cual se define que una clase puede ser el caso
particular de otra . A la clase más general (genérica) la llamaremos clase madre
(otra nombre como se le clase madre es: “clase base”, “clase padre”,
“superclase”) y la clase más particular la llamaremos clase hija.
1. Cuando hay herencia todas instancias de la clase hija son también instancias
de la clase madre.
2. Podemos definir un comportamiento (métodos) en la clase madre sin
necesidad de escribir el código en CADA clase hija, en la clase hija solo
colocas el codigo que las diferencia con la clase madre.
3. Dejar la herencia solamente para casos en que todos los métodos de la clase
Madre los use la clase Hija. (Es decir que la clase madre no tenga métodos
que sobren en alguna clase hija).
Pilar POO 4: Herencia
4. Redefinición: Podemos volver a definir los métodos que ya están definidos en
la clase madre en las clases hijas. Se hace porque la clase hija necesita un
comportamiento diferente al definido en la clase madre. Importante que se
mantenga la firma del método. (Vemos un cachito de polimorfismo)
Clases abstractas
Tenemos una clase abstracta cuando la clase tiene al menos un método
abstracto.
Método abstracto: es un método que no lo implementamos en la clase, pero si
deseamos que todas las clases hijas puedan entender el mensaje. Cuando
tengamos un método con implementación lo diremos método concreto
(instancia).
Además diremos que una clase es concreta cuando no tiene ningún método
abstracto.
Además una clase abstracta ya no se puede instanciar directamente, porque tiene
un método abstracto.
Clases abstractas Nombre de la clase
abstracta en (cursiva)
método abstracto
en (cursiva)
Herencia:
cumple la
relación “es
un”
Escribir el método en la clase hija significa que el método tiene una implementación
propia en la clase hija distinta a la de la clase Madre
Asociación
En POO un objeto puede estar relacionado con otro para usar los servicios
(métodos) proporcionados por ese objeto. Esta relación entre dos objetos se
conoce como asociación y es representada por una flecha en UML.
Se lee, interpreta como: “Un Héroe tiene/usa un Arma” . Importante: Nótese como
dentro de Heroe no se encuentra: -arma:Arma (No hace falta duplicar la
información poniendo Arma como atributo).
Posiblemente dentro de Heroe tenga un ArrayList<Arma> para modelar esto.
Mario RPG
Modelar usando POO un combate RPG por turnos donde existen 2 personajes y sus ataques son:
Mario 🍄 (120 HP)
1. Ataques:
a. Salto - 🦘 - Daño: 10
b. Bola de fuego - 🔥 - Daño: 15
c. Golpe con martillo - 🔨 - Daño: 20
Bowser 🐲 (80 HP) :
1. Ataques:
a. Lanzallamas - 🔥 - Daño: 20
b. Pisotón - 🦶 - Daño: 25
c. Garra sombria -🔱- Daño: 30
Features del juego:
1) El primer turno es de mario (en cada turno cada personaje puede usar solo un ataque) al finalizar su turno
sigue el de Bowser y así sucesivamente.
2) Bowser (Controlado por la máquina) puede seleccionar aleatoriamente entre Lanzallamas y Pisotón, luego
de atacar 3 veces activa su modo Rage 💢 y usará únicamente Garra sombria.
3) Mario puede usar cualquier ataque en cualquier momento y es controlado por el jugador.
4) La lucha continua hasta que uno de los personaje pierda todos sus puntos HP, mostrando el ganador.

Programacion 2- Clase 7 python orientado a objetos

  • 1.
    Curso Programacion 2 Programaciónorientada a objetos en python
  • 2.
    ¿Que es laprogramación orientada a objetos? Es un paradigma de la programación que parte del concepto de “objeto” como base, estos contienen campos (atributos o propiedades) y métodos (‘funciones’ asociadas al objeto). ¿Que es un objeto? Son entidades que tiene un determinado identidad, estado y comportamiento.
  • 3.
    Conceptos Básicos POO Identidad:Es lo que distingue a un objeto de otro, lo acompaña desde su creación hasta su muerte. Ejemplo Pikachu de ash, usted. Estado: Situación actual en que un objeto se encuentra, se considera algo privado y no debe ser conocido, salvo que sea necesario cuyo caso se debe acceder a el mediante mensajes.
  • 4.
    Comportamiento Básicamente son elconjunto posibles respuestas a los mensajes recibidos por un objeto se denominan comportamiento, que a su vez pueden provocar: Caso 1: Un cambio de estado en el objeto receptor del mensaje. Caso 2: La devolución del estado de un objeto, en su totalidad o parcialmente. Caso 3: El envío de un mensaje desde el objeto receptor a otro objeto (delegación).
  • 5.
    recibirDanio(30) recibirDanio(int danio){ this.hp =hp - danio } getCantPokemonCapturados() getCantPokemonCapturados() 750 750 Máquina Pokédex Delegación🤯
  • 6.
    Pilares de POO LaPOO tiene 5 pilares y estos son: 1) Abstracción 2) Delegación 3) Encapsulamiento 4) Herencia 5) Polimorfismo
  • 7.
    Pilar POO 1:Abstracción Imagina que tenemos un problema (consigna), la abstracción básicamente consiste en omitir los detalles que no son necesarios para nosotros y encontrar las entidades del problema (lo más relevante) y modelamos esas entidades con Clases. Ejemplo: “Los aldeanos utilizan herramientas: (1) Hacha, (2) Pico y (3) Azada. Estas herramientas se desgastan cada vez que el aldeano las usa, todas las herramientas tienen una durabilidad de 10 unidades, y tienen las sgt características : 1) El hacha se desgasta de forma lineal. a) Ej.: Primer uso reduce durabilidad en 1. Segundo uso reduce la durabilidad en 2, etc. 2) El pico no se desgasta. 3) La azada se desgasta siguiendo la sucesión de Fibonacci. a) Ej.: Primer uso reduce durabilidad en 0, segundo uso reduce la durabilidad en 1, tercer uso reduce la durabilidad en 1, etc. Serie de Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13, 21, …. Qué entidades son importantes? 1) Hacha 2) Pico 3) Azada . atributos que se encontraron: durabilidad y la cantidad de usos.
  • 8.
    Atributos Atributo (Atributo deinstancia/ Variable de instancia) : Básicamente es una variable interna del objeto que sirve para almacenar parte del estado del mismo. Atributo de clase (Variable de instancia) : Son compartidos entre todas las instancias de una clase pertenecen a la clase en lugar de una instancia particular, su valor es el mismo para todas las instancias de la clase.
  • 9.
    Clases en python Definiciónde clase: Los objetos clase soportan dos tipos de operaciones: hacer referencia a atributos e instanciación. MyClass.i y MyClass.f son referencias de atributos válidas, retorna un entero y una función respectivamente.
  • 10.
    Constructor (Método __init__) clasedefine un método __init__(), la instanciación de la clase automáticamente invoca a __init__() para la instancia recién creada.
  • 11.
    Atributo de clasee instancia
  • 12.
    Métodos de instanciay de clase Metodo de instancia (método): básicamente es la implementación de la respuesta de un objeto a un mensaje. (que hace el objeto ante el mensaje). Se asemeja a una función en la programación estructurada. Método de clase: Básicamente son métodos que pertenecen a la clase y se pueden usar sin necesidad de instanciar un objeto.
  • 13.
  • 14.
    Método de instancia 1.Atributos de instancias 2. Métodos de instancias 3. Atributos de clase 4. Métodos de clase Métodos de instancia y de clase Método de clase 1. Atributos de clase 2. Métodos de clase 3. (métodos de instancias si estos no hacen referencia a ningún atributo de instancia ) acceder acceder
  • 16.
    Es una relacionentre clases, por la cual se define que una clase puede ser el caso particular de otra . A la clase más general (genérica) la llamaremos clase madre (otra nombre como se le clase madre es: “clase base”, “clase padre”, “superclase”) y la clase más particular la llamaremos clase hija. 1. Cuando hay herencia todas instancias de la clase hija son también instancias de la clase madre. 2. Podemos definir un comportamiento (métodos) en la clase madre sin necesidad de escribir el código en CADA clase hija, en la clase hija solo colocas el codigo que las diferencia con la clase madre. 3. Dejar la herencia solamente para casos en que todos los métodos de la clase Madre los use la clase Hija. (Es decir que la clase madre no tenga métodos que sobren en alguna clase hija). Pilar POO 4: Herencia
  • 17.
    4. Redefinición: Podemosvolver a definir los métodos que ya están definidos en la clase madre en las clases hijas. Se hace porque la clase hija necesita un comportamiento diferente al definido en la clase madre. Importante que se mantenga la firma del método. (Vemos un cachito de polimorfismo)
  • 18.
    Clases abstractas Tenemos unaclase abstracta cuando la clase tiene al menos un método abstracto. Método abstracto: es un método que no lo implementamos en la clase, pero si deseamos que todas las clases hijas puedan entender el mensaje. Cuando tengamos un método con implementación lo diremos método concreto (instancia). Además diremos que una clase es concreta cuando no tiene ningún método abstracto. Además una clase abstracta ya no se puede instanciar directamente, porque tiene un método abstracto.
  • 19.
    Clases abstractas Nombrede la clase abstracta en (cursiva) método abstracto en (cursiva) Herencia: cumple la relación “es un” Escribir el método en la clase hija significa que el método tiene una implementación propia en la clase hija distinta a la de la clase Madre
  • 20.
    Asociación En POO unobjeto puede estar relacionado con otro para usar los servicios (métodos) proporcionados por ese objeto. Esta relación entre dos objetos se conoce como asociación y es representada por una flecha en UML. Se lee, interpreta como: “Un Héroe tiene/usa un Arma” . Importante: Nótese como dentro de Heroe no se encuentra: -arma:Arma (No hace falta duplicar la información poniendo Arma como atributo). Posiblemente dentro de Heroe tenga un ArrayList<Arma> para modelar esto.
  • 21.
    Mario RPG Modelar usandoPOO un combate RPG por turnos donde existen 2 personajes y sus ataques son: Mario 🍄 (120 HP) 1. Ataques: a. Salto - 🦘 - Daño: 10 b. Bola de fuego - 🔥 - Daño: 15 c. Golpe con martillo - 🔨 - Daño: 20 Bowser 🐲 (80 HP) : 1. Ataques: a. Lanzallamas - 🔥 - Daño: 20 b. Pisotón - 🦶 - Daño: 25 c. Garra sombria -🔱- Daño: 30 Features del juego: 1) El primer turno es de mario (en cada turno cada personaje puede usar solo un ataque) al finalizar su turno sigue el de Bowser y así sucesivamente. 2) Bowser (Controlado por la máquina) puede seleccionar aleatoriamente entre Lanzallamas y Pisotón, luego de atacar 3 veces activa su modo Rage 💢 y usará únicamente Garra sombria. 3) Mario puede usar cualquier ataque en cualquier momento y es controlado por el jugador. 4) La lucha continua hasta que uno de los personaje pierda todos sus puntos HP, mostrando el ganador.