#! /usr/bin/python

# Datei:      gelbreifen.py
#             'GelbReifen' als Prototyp einer 'Multi-Objekt-Klasse'
#             Eigene Klassen aus dem Python-Grafikmodul abgeleitet
# Quelle:     Penon/Spolwig/Kokavecz
# Bearbeiter: Bombei, Nov.2001

from grafik import *

class GelbKreis(TKreis):	
   """
   /* Die Klasse 'GelbKreis' stellt einen gelben Kreis dar
   /* und erbt alles von 'TKreis'
   """
   def __init__(selbst,xMiPuKoordinate,yMiPuKoordinate,radius):
        """
        /*  Alle Parameter: ganze Zahlen, für die Kästchenposition ...
        """
        TKreis.__init__(selbst)
        selbst.setRadius(radius)
        selbst.setMPos(xMiPuKoordinate,yMiPuKoordinate)
        selbst.setFuellfarbe("gelb")

class GrafikContainer:
   """
   /* Die abstrakte Klasse 'GrafikContainer'
   /* sammelt Grafikobjekte, um sie darzustellen
   """
   def __init__(selbst):
        """
        /*  Attribut: Objektliste, erstmal leer
        """
        selbst.alleObjekte =  []            #   leere Liste

   def hinzufuegen(selbst, element):
        """
        /*  Hängt das übergebene Element an die Liste an
        """
        selbst.alleObjekte.append(element)

   def zeigen(selbst):
        """
        /*  Benutzt die Methode "zeigen" von "grafik"
        /*  für jedes einzelne Objekt
        """
        for aktuellesObjekt in selbst.alleObjekte:
                aktuellesObjekt.zeigen()

   def pos_versetzen_um(selbst,x,y):
        """
        /*  Benutzt die Methode "pos_versetzen_um" von "grafik"
        /*  für jedes einzelne Objekt
        """
        for aktuellesObjekt in selbst.alleObjekte:
                aktuellesObjekt.loeschen()
                aktuellesObjekt.pos_versetzen_um(x,y)


class GelbReifen(GrafikContainer):
   """
   /* Die Klasse 'GelbReifen' stellt einen gelben Reifen dar,
   /* erbt alles von 'GrafikContainer'
   /* und benutzt die Klasse 'GelbKreis'
   """
   def __init__(selbst,linkerRand,obererRand,halbMesser):
        """
        /*  Alle Parameter: ganze Zahlen, für die Kästchenposition ...
        """
        GrafikContainer.__init__(selbst)
        xMiPu            =  linkerRand + halbMesser
        yMiPu            =  obererRand + halbMesser
        innenRadius      =  halbMesser / 3 * 2
        aussenKreis      =  GelbKreis(xMiPu,yMiPu,halbMesser)
        aussenKreis.setFuellfarbe("schwarz")
        innenKreis       =  GelbKreis(xMiPu,yMiPu,innenRadius)
        selbst.hinzufuegen(aussenKreis)
        selbst.hinzufuegen(innenKreis)
