====== 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.