Classes Punt3D, Esfera i Pilota¶
Classe Punt3D¶
Al fitxer punt3D.py disposeu de la implementació de la classe Punt3D que representa un punt de l’espai 3D a partir de les seves coordenades cartesianes. Vegeu-ne l’especificació:
- class esfera.Punt3D(x, y, z)¶
Construeix una instància a partir de les coordenades cartesianes x, y i z
Atributs
La classe suporta la funció str() que retorna un string de format: «(x, y, z)».
En un interpret de python, proveu de crear, consultar i modificar atributs de les instàncies de
Punt3D, per exemple:
>>> p = Punt3D(0, 0, 0)
>>> print(str(p))
(0.0, 0.0, 0.0)
Classe Esfera¶
La classe Esfera, especificada a continuació, representa una esfera a partir del seu centre i radi.
- class esfera.Esfera(centre, radi)¶
Construeix una instància a partir del centre (instància a
Punt3D) i radi.Atributs
Mètodes
- volum()¶
Retorna el volum de l’esfera, en centímetres cúbics.
Vegeu un exemple d’us de la classe:
>>> c = Esfera(p, 1.0)
>>> print(str(c))
Esfera de centre (0.0, 0.0, 0.0) i radi 1.0
>>> print('{:.2f}'.format(c.volum()))
4.19
Implementeu aquesta classe en el fitxer
esfera.py. Disposeu dels jocs de proves al fitxertest-esfera.txti d’una solució al fitxeresfera.py.
Classe Pilota¶
La classe Pilota es deriva per herència de la classe Esfera i
representa una pilota esfèrica. Vegeu-ne l’especificació:
- class pilota.Pilota(radi, centre, pes, color)¶
Construeix una instància a partir del radi, centre, pes i color.
Atributs (a més dels de la classe base)
Mètodes (a més del de la classe base)
- densitat()¶
Retorna la densitat de la pilota en grams per centímetres cúbics.
La funció
str()sobre la classePilotaretorna un string com el de la classeEsferaperò amb el substring «Pilota» en lloc de «Esfera».
Vegeu un exemple d’us de la classe:
>>> p = Punt3D(0, 0, 0)
>>> print(str(p))
(0.0, 0.0, 0.0)
>>> c = Pilota(1.0, p, 3.5, 'vermell')
>>> print(str(c))
Pilota de centre (0.0, 0.0, 0.0) i radi 1.0
>>> print('{:.2f}'.format(c.volum()))
4.19
>>> c.color
'vermell'
>>> print('{:.2f}'.format(c.pes))
3.50
>>> print('{:.2f}'.format(c.densitat()))
0.84
Observeu que, a diferència de la classe base, en la instanciació, el paràmetre del radi precedeix el del centre.
Implementeu aquesta classe en el fitxer
pilota.py. Disposeu dels jocs de proves al fitxertest-pilota.txti d’una solució al fitxerpilota.py.