Commit 0cf59f3d by Patryk Czarnik

PracownikPlus

parent 538fa786
'''
Zaimplementuj klasę PracownikPlus, która będzie klasą pochodną Pracownik.
Klasa ta powinna umożliwiać dodatkowo przyznawanie premii pracownikowi.
>>> pp = PracownikPlus('Jan', 'Nowak', 100.0)
>>> pp.praca(4)
>>> pp.praca(6)
>>> pp.premia(700.0)
>>> pp.wyplata()
1700.0
'''
from pracownik1 import Pracownik
# W tej wersji definując podklasę, nie zakładam żadnych szczegółów implementacji klasy Pracownik,
# korzystam jedynie z jej metod.
# Wystarczy, aby klasa Pracownik spełniała wymagania z poprz. zadania, czyli aby testy dizałały,
# a ta ↓ definicja klasy PracownikPlus będzie OK.
class PracownikPlus(Pracownik):
def __init__(self, imie, nazwisko, stawka):
super().__init__(imie, nazwisko, stawka)
self.suma_premii = 0
def premia(self, kwota_premii):
self.suma_premii += kwota_premii
def wyplata(self):
try:
return super().wyplata() + self.suma_premii
finally:
self.suma_premii = 0
'''
Zaimplementuj klasę PracownikPlus, która będzie klasą pochodną Pracownik.
Klasa ta powinna umożliwiać dodatkowo przyznawanie premii pracownikowi.
>>> pp = PracownikPlus('Jan', 'Nowak', 100.0)
>>> pp.praca(4)
>>> pp.praca(6)
>>> pp.premia(700.0)
>>> pp.wyplata()
1700.0
'''
from pracownik2 import Pracownik
# W tej wersji zakładamy, że klasa Pracownik została napisana w wersji 2,
# gdzie obiekt Pracownik posiada atrybut kasa.
# Jeśli tak jest, to możemy kwotę premii dodawać od razu do tego atrybutu,
# a nie musimy zmieniać treści żadnej metody.
# Uwaga! Takie podejście jest ryzykowne, bo jeśli klasa, z której dziedziczymy, zmieni swoje szczegóły implementacji,
# to klasa dziedzicząca przestanie działać.
class PracownikPlus(Pracownik):
def premia(self, kwota_premii):
self.kasa += kwota_premii
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment