Bekijk de onderstaande klasse Datum. Deze klasse bevat de methode
__str__() die het mogelijk maakt een datum in een welbepaald formaat
af te drukken, namelijk dag/maand/jaar, waarbij de maand numeriek weergegeven wordt.
Het is de bedoeling om in deze oefening twee nieuwe klassen te definiƫren die overeren
van de klasse Datum, waarbij verschillende afdrukformaten gedefinieerd worden, namelijk:
NedDatum : afdrukformaat : dag maand jaar (gescheiden door spaties) waarbij de maand in tekst
weergegeven wordt (voorbeeld: 1 december 2016 ).
EngDatum : afdrukformaat : maand dag, jaar waarbij de maand in tekst en in het
Engels wordt aangegeven (voorbeeld: December 1, 2016). Er verschijnt een spatie tussen de maand en de dag,
terwijl de dag en het jaar door een komma en een spatie gescheiden worden.
Datum hoef je niet in te dienen.
class Datum(object):
aantal_dagen = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
min_jaar = 1900
@staticmethod
def _is_geldig(dag, maand, jaar):
if maand > 0 and maand < 13 and jaar > Datum.min_jaar :
return dag > 0 and dag <= Datum.aantal_dagen[maand - 1]
else:
return False
def __init__(self, dag, maand, jaar):
if Datum._is_geldig(dag, maand, jaar):
self._dag = dag
self._maand = maand
self._jaar = jaar
else:
self._dag = 0
self._maand = 0
self._jaar = 0
def get_dag(self):
return self._dag
def get_maand(self):
return self._maand
def get_jaar(self):
return self._jaar
def __str__(self):
return str(self._dag) + '/' + str(self._maand) + '/' + str(self._jaar)
d_standaard = Datum(1, 12, 2016) d_engels = EngDatum(1, 12, 2016) d_nederlands = NedDatum(1, 12, 2016) print(d_standaard) -> 1/12/2016 print(d_engels) -> December 1, 2016 print(d_nederlands) -> 1 december 2016