====== Dziedziczenie - klasa abstrakcyjna ====== ===== Klasa Wielomian ===== **1.** Utwórz klasę **Gauss** - reprezentującą funkcję Gaussa, zawierającą: * konstruktor inicjowany wartościami średniej i odchylenia * konstruktor kopiujący * metodę ''ObliczWartosc'' wyznaczającą wartość funkcji w punkcie ''x'' * zaprzyjaźnioną funkcję przeciążającą operator << wypisujący komunikat do strumienia **2.** Utwórz klasę **Funkcja** stanowiącą klasę bazową klasy **Wielomian** i klasy **Gauss**. Jakie cechy (metody, atrybuty) można uogólnić do klasy Funkcja? \\ Klasa **Funkcja** zawiera: * metodę czysto wirtualną ''ObliczWartosc'' * zaprzyjaźnioną funkcję przeciążająca operator << **3.** Napisz program testujący działanie metody wirtualnej **Przykładowy diagram klas UML** {{..:po_2014_1:wielomian3.png}} ===== Figury ===== Zaimplementuj klasy **Figura**, **Kolo**, **Kwadrat** i **Trojkat** oraz odpowiednie metody zgodnie z podanym diagramem (kliknij w obrazek aby powiększyć): {{:zajecia:po:figury1.png?300|}} Konstruktory domyślne inicjują wartości boków figur (promienia) zerami zaś zmienna **nazwa** jest inicjowana łańcuchami znaków, odpowiednio: "Figura", "Kwadrat", "Kolo" i "Trojkat".\\ Metody **Obwod()** i **Pole()** dla obiektu klasy **Figura** niech zwracają wartość 0.\\ Dociąż operator << dla obiektu klasy **Figura** oraz strumienia wyjściowego **ostream** (uczyń tą funkcję przyjacielem klasy Figura), tak aby wywołanie postaci: Kwadrat k(3); cout << k << endl; Trojkat t(3,4,5); cout << t << endl; generowało nastepujący komunikat: Kwadrat o polu 9 i obwodzie 12. Trojkat o polu 6 i obwodzie 12. Metody Pole() i Obwod() nie muszą (a nawet nie powinny) być definiowane dla klasy Figura. Uczyń je czysto wirtualnymi.