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

x

Coordenada x (float)

y

Coordenada y (float)

z

Coordenada z (float)

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

centre

Centre de l’esfera (una instància a la classe Punt3D)

radi

Radi de l’esfera (float) en centímetres

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 fitxer test-esfera.txt i d’una solució al fitxer esfera.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)

pes

Pes de la pilota (float) en grams

color

Color de la pilota (str)

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 classe Pilota retorna un string com el de la classe Esfera però 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 fitxer test-pilota.txt i d’una solució al fitxer pilota.py.