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