
#coding:utf-8

"""
Exemples d'herència i de polimorfisme
"""

import math

class Cercle:
    
    def __init__(self, x, y, r):
        self.x = x
        self.y = y
        self.r = r
    
    def area(self):
        return math.pi * (self.r ** 2)

    def mou(self, x, y):
        self.x += x
        self.y += y

    def __str__(self):
        return 'centre='+ str( (self.x,self.y) ) + ', radi=' + \
            str(self.r)


class SectorCircular(Cercle):
    """
    Classe derivada de Cercle
    """
    
    def __init__(self, x, y, r, angle):
        super().__init__(x, y, r)
        self.angle = angle

    def area(self):
        return self.r ** 2 * self.angle / 2.0
    
    def __str__(self):
        return super().__str__() + ', angle=' + str(self.angle)


class rectangle:
    
    def __init__(self, x, y, l):
        self.x = x
        self.y = y
        self.l = l
    
    def area(self):
        return self.l ** 2

    def mou(self, x, y):
        self.x += x
        self.y += y

    def __str__(self):
        return 'centre='+ str( (self.x,self.y) ) + ', costats= ' + str(self.l)


def suma_arees(e1, e2):
    """
    Funció polimòrfica que admet qualsevol tipus d'objecte geomètric
    (Cercles, àrees circulars i/o quadrats)
    """
    return e1.area() + e2.area()

