Clase 8: Herencia J.Alvarez.

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Advertisements

Definición de Clases y Variables de referencia.
POLIMORFISMO UNIDAD 4.
Programación Interactiva Fundamentos de Programación
Te presento a Python Qué es Python? Lenguaje interpretado
Herencia simple y multiple
La Programación Orientado a Objetos
Método en Java.
class Circulo extends Circunferencia Circunferencia perimetro Circunferenciaradio Circulo area Circulo.
Modificadores.
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Repaso/resumen Introducción a la programación Orientada a Objetos 1.Strings 2.Archivos 3.Clases y objetos 4.Herencia 5.Ventanas 6.Dibujos y Gráficos.
Modulos y Paquetes. Módulos Un módulo es un componente que provee definiciones de funciones, variables o clases relativas a un tema común. Un módulo reside.
Computación II Repaso de java Karina Figueroa Mora.
Scripts y funciones día18, 25-feb-15 SPAN 4350 Cultura computacional en español Harry Howard Tulane University.
Programación avanzada en Java Miguel Ángel Corella 23 de Septiembre de 2005.
Clases y Objetos. Clases La definición mas sencilla tiene la forma:
Tipos Abstracto de Datos. Constructores de Listas Secuencia ordenada de objetos. – Lista = ["a", "b", “1", “2", "3"] Referencias con corchetes [X]. –
RESOLUCIÓN DE SISTEMAS DE ECUACIONES LINEALES CLASE 117.
La herencia múltiple es más compleja, tenemos que tener presente que cuando en una clase se heredan al mismo nivel varias clases origen, el.
Clase Teórica No. 3 Introducción a Java
U6 Ejercicios ¡¡¡¡PREPARANDO LA PEC1!!!!. ERRORES FRECUENTES EN test de 8/10/2015 Nombre de la función no muy bueno : debe ser ImprimeNombreMes o ImprimeMesEnLetra.
Resolución de problemas con Python
INS-204 Fundamentos de Programacion notas de clase, objetivo, programar en Python con nivel medio de destreza.
Clase N°9 Objetivo de la clase: Describir y dar ejemplos de aristas y caras de figuras 3D, y lados de figuras 2D: que son paralelos, que se intersectan.
Introducción a Python Por Cristian Suárez Sistemas Operativos 1 Año 2010.
Cuerpos geométricos. ¿Qué son los cuerpos geométricos? Un cuerpo geométrico es una figura geométrica de tres dimensiones (largo, ancho y alto), que ocupa.
PROGRAMA DE MAESTRÍA EN INGENIERÍA DE SOFTWARE Integrantes: Edwin Pilataxi Henry Pilataxi José Dorado.
5º PRIMARIA C.P. CERRO DE LA CRUZ
Clase1: lectura/escritura/asignación
Clase 9: Repaso/Resumen
Figura Rectangulo Elipse Cuadrado Circulo area (): double
Clase 11: Herencia 21-enero (J.Alvarez).
Clase 9: Repaso/Resumen
Clase 9: Repaso/Resumen
Figuras 3D.
Clase 8: Repaso/Resumen
Clase 9: Repaso/Resumen
Clase7: Objetos y Clases
Clase 11: Herencia 15-abril (J.Alvarez).
Clase 9: Repaso/Resumen
Clase 12: Ventanas J.Alvarez. Clase 12: Ventanas J.Alvarez.
Clase 12: Ventanas J.Alvarez. Clase 12: Ventanas J.Alvarez.
Apuntes de Matemáticas 3º ESO
INTRODUCCION A UN LENGUAJE DE PROGRAMACIÓN
HISTORIA El lenguaje fue creado por Yukihiro "Matz" Matsumoto, quien empezó a trabajar en Ruby el 24 de febrero de 1993, y lo presentó al público en el.
Desde «hola mundo» a conexiones con Bases de datos
Clase 11: Herencia 15-abril (J.Alvarez).
Paul Leger Funciones Paul Leger
2º de Primaria.
Vocabulario L-7.
Clase10: Objetos y Clases
REPASO TEMA 12 Completa: Escribe V o F 1.
CC 1002: Introducción a la Programación Clase 22
Completa con una línea horizontal o vertical para igualar el modelo. ¿Qué crees que hay que hacer? Completa con una línea horizontal o vertical para.
CC 1002: Introducción a la Programación Clase 20
Clase 11: Herencia 15-abril (J.Alvarez).
Clase 11: Herencia 15-abril (J.Alvarez).
Problema: ordenar 3 números generados al azar
Clase10: Objetos y Clases
Clase 11: Herencia 21-enero (J.Alvarez).
print “Calcular área y perímetro de círculo”
Clase10: Objetos y Clases
Archivos en disco: motivación
CC 1002: Introducción a la Programación Clase 15: Estructuras mutables
clase4: instrucción if-else
Archivos en disco: motivación
CUERPO GEOMÉTRICO : CUBO Clase Lunes 17 de Junio 2019.
Variables, Expresiones y Enunciados
Clase1: lectura/escritura/asignación
Transcripción de la presentación:

Clase 8: Herencia J.Alvarez

import math class Circulo: def __init__(self,x): if x<=0: exit("radio<=0”) self.r=x def perimetro(self): return 2*math.pi*self.r def area(self): return math.pi*self.r**2 class Cuadrado: if x<=0: exit(“lado<=0”) self.a=x def perimetro(self): return 4*self.a def area(self): return self.a**2 Nota. Constructores son similares

Solución 2. Con Herencia import math class Figura: def __init__(self,x): #constructor único if x<=0: exit(“nº<=0") self.x=x #significado de x depende de figura class Circulo(Figura): def area(self): return math.pi*self.x**2 def perimetro(self): return 2*math.pi*self.x class Cuadrado(Figura): def area(self): return self.x**2 def perimetro(self): return 4*self.x

Otras figuras? class Rectangulo(Figura): Clase 8: Herencia Otras figuras? class Rectangulo(Figura): def __init__(self,x,y): #constructor Figura.__init__(self,x) #ctor clase Figura self.y=y #ancho if y<=0: exit(“nº<=0") def area(self): return self.x*self.y def perimetro(self): return 2*(self.x+self.y) Uso? r=Rectangulo(nº,nº) J.Alvarez

class Triangulo(Figura): def __init__(self,x,y,z): if x<=0 or y<=0 or z<=0 \ #continua… or x+y<=z or x+z<=y or y+z<=x: exit("no forman triangulo") self.x=x; self.y=y; self.z=z def perimetro(self): return self.x+self.y+self.z def area(self): s=(self.x+self.y+self.z)/2; return math.sqrt(s*(s-self.x)*(s-self.y)*(s-self.z)) Uso? t=Triangulo(nº,nº,nº)

r=raw_input(“circulo,cuadrado,rectangulo o ” + \ “triangulo?").lower() if r=="circulo": f=Circulo(input("radio?")) elif r=="cuadrado": f=Cuadrado(input("lado?")) elif r=="rectangulo": f=Rectangulo(input("largo?"),\ input("ancho?")) elif r=="triangulo": f=Triangulo(input("lado1?"),\ input("lado2?"),\ input("lado3?")) else: exit("figura incorrecta") print "area=",f.area() print "perimetro=",f.perimetro()

A B C Herencia “transitiva” (“sucesiva”) class A: def __init__(self,x): self.a=x def f(self): return self.a class B(A): #hereda de A def __init__(self,x,y): A.__init__(self,x) self.b=y def g(self): return self.b class C(B): #hereda de B def __init__(self,x,y,z): B.__init__(self,x,y) self.c=z def h(self): return self.c Uso? >>>c=C(1,2,3) >>>c.f()+c.g()+c.h() 6 A B C

A.__init__(self,x) A B C Herencia “múltiple” class A: def __init__(self,x): self.a=x #una variable def f(self): return self.a class B: self.b=x #una variable def g(self): return self.b class C(A,B): #C hereda de clases A y B def __init__(self,x,y,z): A.__init__(self,x) B.__init__(self,y) self.c=z #tres variables pq a y b se heredan def h(self): return self.c Uso? >>>c=C(1,2,3) >>>c.f()+c.g()+c.h() 6 A B C

Solución 1. Con clases independientes import math class Esfera: def __init__(self,x): if x<=0: exit("radio<=0") self.r=x def area(self): return 4*math.pi*self.r**2 def volumen(self): return 4.0/3.0*math.pi*self.r**3 class Cubo: if x<=0:exit("lado<=0") self.a=x return 6*self.a**2 return self.a**3

Solución 2. Con Herencia import math class Cuerpo: def __init__(self,x): if x<=0: exit(“nº<=0") self.x=x class Esfera(Cuerpo): def area(self): return 4*math.pi*self.x**2 def volumen(self): return 4.0/3.0*math.pi*self.x**3 class Cubo(Cuerpo): return 6*self.x**2 return self.x**3

Uso de archivos Convención: cada clase en un archivo con nombre de la clase #archivo Cuerpo.py import math class Cuerpo: def __init__(self,x): if x<=0: exit(“nº<=0") self.x=x

#archivo Esfera.py from Cuerpo import Cuerpo #desde archivo importe clase class Esfera(Cuerpo): def area(self): return 4*math.pi*self.x**2 def volumen(self): return 4.0/3.0*math.px*self.x**3 #archivo Cubo.py class Cubo(Cuerpo): return 6*self.x**2 return self.x**3

#archivo nombre.py from Esfera import Esfera from Cubo import Cubo r=raw_input(“esfera o cubo?”).lower() if r=="esfera": cuerpo=Esfera(input("radio?")) elif r=="cubo": cuerpo=Cubo(input("lado?")) else: exit("error") print "area=",cuerpo.area() print "volumen=",cuerpo.perimetro()