====== Dziedziczenie ======
===== Klasa Wielomian =====
**1.** Utwórz klasę pochodną klasy **Wielomian** o nazwie **Linia**.\\
Zadeklaruj i zdefiniuj konstruktor:
* kopiujący
* domyślny (inicjuje linię y=0)
* posiadający 2 argumenty rzeczywiste definiujące linię na płaszczyźnie y=ax+b
* posiadający argumenty określające dwa punkty na płaszczyźnie. Linia przechodzi przez oba punkty.
Zaimplementuj metody:
Punkt PunktPrzeciecia(const Linia &l) const;
double MiejsceZerowe();
Linia Prostopadla(double x); // linia prostopadła przecinająca linie *this w punkcie x
Linia Prostopadla(Punkt x); // linia prostopadla przechodzaca przez punkt x
Powyżej używany jest typ **Punkt** (obiekt tego typu określa punkt na płaszczyźnie).
Jak powinna wyglądać definicja tego typu?
2. Utwórz klasę pochodną klasy **Wielomian** o nazwie **Parabola**.\\
Zaimplementuj konstruktor:
* kopiujący
* inicjujący parabolę trzema wartościami a,b i c, które definiują parabolę y=ax^2+bx+c. Ustaw wartości domyślne argumentów a,b,c=0.
Zaimplementuj metodę:
* zwracającą położenie ekstremalnej wartości (minimum lub maksimum funkcji)
* zwracającą ilość pierwiastków (miejsc zerowych) oraz ich wartości
3. Napisz program testujący działanie zaimplementowanych metod.
**Przykładowy diagram klas UML**
{{.:2011_1:wielomian2.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.