private, protected, public określają, które elementy klasy bazowej są dostępne w klasie pochodnej i jak są dziedziczone:
public - wszystkie publiczne i chronione elementy klasy bazowej są dziedziczone jako publiczne i chronione w klasie pochodnejprotected - wszystkie publiczne i chronione elementy klasy bazowej są dziedziczone jako chronione w klasie pochodnejprivate - wszystkie publiczne i chronione elementy klasy bazowej są dziedziczone jako prywatne w klasie pochodnej (domyślna wartość, gdy nie określono operatora widoczności)Składnia
class Bazowa { // definicja klasy }; class Pochodna: public Bazowa { // definicja klasy };
1. Utwórz klasę pochodną klasy Wielomian o nazwie Parabola. Kod źródłowy klasy Wielomian znajdziesz w zakładce pliki lub w repozytorium GitHub.
Parabola jest szczególnym rodzajem wielomianu, którego stopień wynosi 2.
$$ f(x) = ax^2 + bx + c $$
Dla paraboli możemy zdefiniować specyficzne operacje jak, np. wyznaczenie miejsc zerowych, wyznaczenie punktu ekstremalnego, itp.
Parabola będzie wymagała dostępu do prywatnych zasobów wielomianu, aby było to możliwe należy zmienić poziom dostępu dziedziczonych elementów z private do protected w klasie WielomianParabola dodaj chronione pole delta zawierające wartość rzeczywistą równą $$ \Delta = b^2 - 4ac$$
2. Dla klasy Parabola zaimplementuj następujące operacje (dostępne publicznie):
Ekstremum, zwracającą położenie $x_e$ ekstremalnej wartości (minimum lub maksimum funkcji) $$x_e = -\frac{b}{2a}$$Pierwiastki, zwracającą liczbę pierwiastków (miejsc zerowych) oraz ich wartości. Wartością zwracaną funkcji jest liczba miejsc zerowych: 0, 1 lub 2. Wartości miejsc zerowych (jeżeli istnieją) są zwracane przez adres lub referencję w argumentach funkcji. $$x_1 = \frac{-b - \sqrt{\Delta}}{2a} \qquad x_2 = \frac{-b + \sqrt{\Delta}}{2a}$$
ObliczWartosc, która dla danej w argumencie wartości rzeczywistej x zwróci wartość wielomianu $f(x)$.
3. Napisz program, który wykorzysta klasę Parabola do wyznaczenia i wypisania wartości miejsc zerowych $x_1$ i $x_2$, wartość ekstremum $x_e$ oraz wartości funkcji w punktach $f(x_1)$, $f(x_2)$ oraz $f(x_e)$ dla dowolnej paraboli o współczynnikach $a$, $b$ i $c$ podanych przez użytkownika. Przetestuj działanie dla funkcji $f(x) = x^2 - 10^6x + 1$
Diagram klas UML
4. Zaimplementuj klasę pochodną, dziedziczącą po klasie Parabola, która zastępuje implementację funkcji Pierwiastki i wyznacza miejsca zerowe wzorami Viète’a:
5. Przetestuj działanie programu wyznaczającego miejsca zerowe funkcji kwadratowej wykorzystując klasę pochodną z punktu 4.
Diagram klas UML
Utwórz klasę pochodną klasy Wielomian o nazwie Linia reprezentującą wielomian stopnia pierwszego (linię prostą) o postaci
$$y=ax+b$$
Zaimplementuj metody umożliwiające następujące operacje na obiektach klasy Linia:
$$Ax + By = C \qquad \text{czyli} \qquad y = -\frac{A}{B}x + \frac{C}{B}$$
PunktPrzeciecia(const Linia &l), która zwraca współrzędne przecięcia się z linią l daną w argumencie funkcji. Dwie linie $y=a_1x+b_1$ i $y=a_2x+b_2$ przecinaja się w punkcie $$x = -\frac{b_2-b_1}{a_2-a_1}$$Wielomian do przechowywania współczynników $a$ i $b$ linii prostej.
Napisz program, który wykorzysta klasę Linia oraz funkcję wyznaczającą punkt przecięcia linii prostych do rozwiązania układu równań postaci
$$
\left\{\begin{array}{l}
a_1 x + b_1 y = c_1 \\
a_2 x + b_2 y = c_2 \\
\end{array}\right.
$$
Dla wartości rzeczywistych $a_1, b_1, c_1, a_2, b_2, c_2$ podanych przez użytkownika program wypisuje wartość $x$ i $y$ stanowiące rozwiązanie powyższego układu równań. Możesz założyć, że układ równań zawsze posiada rozwiązanie, tj. obie linie proste nie są równoległe i posiadają jeden punkt przecięcia.
Diagram klas UML
Przykład działania programu:
Podaj wspolczynniki a, b, c pierwszego rownania 2 8 4 Podaj wspolczynniki a, b, c drugiego rownania 1 1 2 Rozwiazaniem bedzie przeciecie linii prostych: f(x) = -0.25 x +0.50 f(x) = -1.00 x +2.00 Rozwiazanie x = 2 y = 0
Rozwiązanie w postaci plików nagłówkowych *.h i źródłowych *.cpp umieść w Moodle Zadanie 6: Klasa Linia