diff --git a/labs04/task02.py b/labs04/task02.py index 88741a4..bc57b5c 100644 --- a/labs04/task02.py +++ b/labs04/task02.py @@ -1,3 +1,64 @@ #!/usr/bin/env python2 # -*- coding: utf-8 -*- +class Employee: + id_pracownika=1 + lista_id=[] + def __init__(self,imie,nazwisko): + self.imie = imie + self.nazwisko = nazwisko + self.id_pracownika = Employee.id_pracownika + Employee.id_pracownika += 1 + self.lista_id.append(self.id_pracownika) + + def get_id(self): + return (self.id_pracownika) + +class Recruiter(Employee): + def __init__(self, imie, nazwisko): + + Employee.__init__(self,imie,nazwisko) + self.recruited = [] + + def recruit(self,id_pracownika): + + if id != self.id_pracownika: + if id_pracownika in Employee.lista_id: + self.recruited.append(id_pracownika) + else: + print("Nie ma takiego pracownika") + else: + print("Rekruter nie moze rekrutowac samego siebie") + +class Programmer(Recruiter): + def __init__(self,imie,nazwisko,rekruter): + Recruiter.__init__(self,imie,nazwisko) + + def recruited_by(self): + print(f'Osoba {self.imie} {self.nazwisko} zostala zrekrutowana przez rekrutera o ID {Recruiter.id_pracownika}') + + +print('********') +pracownik1 = Employee('Jan', 'Kowalski') +print(pracownik1.imie) +print(pracownik1.nazwisko) +print(pracownik1.get_id()) + +print('********') + +pracownik2 = Employee('Anna', 'Nowak') +print(pracownik2.imie) +print(pracownik2.nazwisko) +print(pracownik2.get_id()) + +print('********') + +pracownik3 = Programmer('Janusz','Gajos', 1) +print(pracownik3.imie) +print(pracownik3.nazwisko) +print(pracownik3.id_pracownika) +print(pracownik3.get_id()) +pracownik3.recruited_by() + + + diff --git a/labs04/task03.py b/labs04/task03.py index 88741a4..75352d7 100644 --- a/labs04/task03.py +++ b/labs04/task03.py @@ -1,3 +1,65 @@ -#!/usr/bin/env python2 -# -*- coding: utf-8 -*- +""" ćwiczenie 3 (zadanie domowe) +Stwórz klasę ``Point``, która będzie reprezentować punkt w przestrzeni wielowymiarowej: + * Konstruktor ma przyjąc tylko 1 parametr: listę współrzednych. Wykorzystaj funkcję z pierwszego zadania, żeby sprawdzić, czy lista zawiera wyłącznie liczby. + * Napisz metodę add, która doda dwa punkty po współrzędnych i zwróci obiekt typu ``Punkt``. + Zaimplementuj własny wyjątek ``DimensionError``, który zostaje wyrzucony, jeżeli dodawany punkt ma inny wymiar. + * Napisz metodę ``to\_string``, która zwróci łancuch znakowy, który w czytelny sposób przedstawi punkt. + * Napisz metodę __len__, która zwróci liczbę współrzędnych punktu. Zobacz, czy możesz teraz wywołać funkcję len na obiekcie typy punkt. + * Napisz metodę __str__, która bedzie działać dokładnie tak samo jak metoda ``to_string``. Wyświetl obiekt typy Point korzystając z funkcji print. +""" +class DimensionError(Exception): + """Klasa odpowiadajaca za wyjatek współrzędnych <>3""" + def __init__(self, text): + self.text = text + def __str__(self): + return self.text + +class Point: + """Klasa reprezentująca punkt w 3D""" + def __is_numeric(self,n): + for i in n: + if not (isinstance(i, int) or isinstance(i,float)): + return False + return True and len(n) > 0 + + def __init__(self, xyz): + """Konstruktor klasy Point, argument xyz - lista puntkwo w 3D. Warunkiem sa 3 wspolrzedne""" + if not self.__is_numeric(xyz): + raise DimensionError("Nieprawidlowe wspolrzedne!") + if len(xyz) != 3: + raise DimensionError("Nieprawidlowa liczba wspolrzednych (<> 3)") + self.x = xyz[0] + self.y = xyz[1] + self.z = xyz[2] + + def to_string(self): + """Wypisuje wektor współrzędnych punktu w 3D jako string""" + return '[' + ','.join([str(self.x), str(self.y), str(self.z)]) + ']' + + def add(oPoint1, oPoint2): + """Metoda statyczna klasy Point. Zwraca sumę współrzędnych danych 2 punktów w 3D + + arg1 - obiekt klasy Punkt + arg2 - obiekt klasy Punkt + """ + l1 = [oPoint1.x, oPoint1.y, oPoint1.z] + l2 = [oPoint2.x, oPoint2.y, oPoint2.z] + nl = [c1+c2 for c1, c2 in zip(l1, l2)] + return Point(nl) + + def __len__(self): + """Zwraca liczbe wspolrzednych""" + return 3 + + def __str__(self): + """Funkcja string dla klasy Point, wypisuje wspolrzedne punktu jako string""" + return self.to_string() + +if __name__ == "__main__": + pkt1 = Point([4, 8, 12]) + print('pkt1 =', pkt1) + pkt2 = Point([-1, 0, 3]) + print('pkt2 =', pkt2) + pkt3 = Point.add(pkt1, pkt2) + print('pkt3 = pkt1 (+) pkt2 = ', pkt3) \ No newline at end of file