.. py:module:: cercle Classe Cercle ============= Utilitzeu el mòdul :py:mod:`punt2D` [#p2d]_ dissenyat a l'exercici :doc:`../Classe_Punt2D/index` per dissenyar la classe :py:class:`Cercle` següent. Deseu-la al fitxer :file:`cercle.py`. .. py:class:: Cercle(ctr, rd) Retorna un nou cercle tal que el centre és una instància a la classe :py:class:`~punt2D.Punt2D` que té com a coordenades els components de la tupla *ctr* i el radi és *rd*. **Atributs**: .. py:attribute:: centre Centre del cercle, una instància a la classe :py:class:`~punt2D.Punt2D`. .. py:attribute:: radi Radi del cercle **Mètodes:** .. py:method:: conté_punt2D(p) Retorna True si el punt p és dins del cercle i False en cas contrari. .. py:method:: intersecció_cercle(c) Retorna un string que indiqui la posició relativa del cercle `c` respecte al cercle. El string pot tenir un del següents valors: 'disjunts' si els dos cercles són disjunts, 'intersecants' si intersequen, 'conté' si `c` està totalment contingut pel cercle i 'contingut' si `c` conté el cercle. Aquesta classe ha de suportar l'operació següent: +--------------------------+---------------------------------+ | Operació | Resultat | +==========================+=================================+ | c1 == c2 | retorna `True` si els centres | | | de c1 i c2 coindideixen i els | | | seus radis són iguals | +--------------------------+---------------------------------+ La classe :py:class:`Cercle` també suporta la funció :py:class:`str` que retorna un string en format: `Cercle(Punt2D(xc, yc), r)` on `xc` i `yc` són les coordenades del centre del cercle i `r` el seu radi. .. rubric:: Observacions #. En dissenyar el mètode `__init__`, haureu de vigilar que el paràmetre que rep és una tupla. Per tant, dins d'aquest mètode, cal crear la instància a :py:class:`~punt2D.Punt2D` que representa el centre. #. Per tal que la comparació entre cercles tingui el comportament esperat, haureu d'implementar el mètode `__eq__`. Observeu que aquest mètode ha estat implementat també en la classe :py:class:`~punt2D.Punt2D` i que per tant podeu utilitzar l'operador `==` per comparar dos punts. #. Per a que la funció :py:class:`str` proporcioni la funcionalitat desitjada, haureu de dissenyar el mètode `__str__`. Disposeu d'aquest joc de proves al fitxer :download:`cercle.txt `. .. rubric:: Solució Disposeu d'una solució al fitxer :download:`cercle.py `. .. rubric:: Notes .. [#p2d] Si no teniu el mòdul :py:mod:`punt2D`, podeu descarregar-lo: :download:`punt2D.py <../Classe_Punt2D/solucio/punt2D.py>`.