Dziedziczenie

Dziedziczenie

Przeciążanie metod w klasach pochodnych

Operatory widoczności: private, protected, public

Inicjalizacja i destrukcja obiektów z dziedziczonych

Składnia

class Bazowa { // definicja klasy }; class Pochodna: public Bazowa { // definicja klasy };

Ćwiczenie: Klasa pochodna Parabola

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. Dla paraboli możemy zdefiniować specyficzne operacje jak, np. wyznaczenie miejsc zerowych, wyznaczenie punktu ekstremalnego, itp.

klasa Parabola będzie wymagała dostepu do prywatnych zasobów wielomianu, aby było to możliwe nalezy zmienić poziom dostępu dziedziczonych elementow z private do protected

dodaj chronione pole delta zawierające wartość rzeczywistą równą
Wartość delty ustalana jest automatycznie w momencie zmiany współczynników , m.in. w konstruktorze, podczas inicjowania obiektu.

2. Dla klasy Parabola zaimplementuj następujące operacje (dostępne publicznie):

konstruktor inicjujący parabolę trzema wartościami , i , które definiują parabolę Ustaw wartości domyślne argumentów .

konstruktor kopiujący

funkcję składową zwracającą położenie ekstremalnej wartości (minimum lub maksimum funkcji)

funkcję składową zwracającą ilość pierwiastków (miejsc zerowych) oraz ich wartości. Wartością zwracaną jest liczba 0, 1 lub 2 określająca występowanie i ilość miejsc zerowych. Dodatkowo, jeżeli istnieją miejsca zerowe, to zwracane są wartości miejsc zerowych i (np. przez adres zmiennej w argumentach lub referencję).

funkcję składową ObliczWartosc, która dla danej w argumencie wartości rzeczywistej x zwróci wartość wielomianu .

4. Napisz program, który wykorzysta klasę Parabola do wyznaczenia i wypisania wartości miejsc zerowych i , wartość ekstremum oraz wartości funkij w punktach , oraz dla dowolnej paraboli o współczynnikach , i podanych przez użytkownika. Przetestuj działanie dla funkcji

Diagram klas UML

5 . Zaimplementuj klasę pochodną, dziedziczącą po klasie Parabola, która zastępuje implementację funkcji wyznaczającej pierwiastki i wykorzystuje do obliczeń wzory Viète’a:

gdy funkcja zwraca wartość pierwiastka obliczoną bazową funkcją oraz równą

gdy funkcja zwraca wartość pierwiastka obliczoną bazową funkcją oraz równą

6. Przetestuj działanie programu wyznaczającego miejsca zerowe funkcji kwadratowej wykorzystując klasę pochodną z punktu 5.

Diagram klas UML

Zadanie 6: Klasa pochodna Linia

Utwórz klasę pochodną klasy Wielomian o nazwie Linia reprezentującą wielomian stopnia pierwszego

Zaimplementuj metody umożliwiające następujące operacje na obiektach klasy Linia:

konstruktor domyślny (inicjuje linię )

konstruktor posiadający 2 argumenty i , oba reprezentujące wartość rzeczywistą. Konstruktor tworzy linię na płaszczyźnie o podanych współczynnikach

konstruktor posiadający 3 argumenty , i , wszystkie reprezentują liczby rzeczywiste. Konstruktor tworzy linię prostą zdefiniowaną równaniem ogólnym

funkcję składową PunktPrzeciecia(const Linia &l), która zwraca współrzędne przecięcia się z linią l daną w argumencie funkcji. Dwie linie i przecinaja się w punkcie

Napisz program, który wykorzysta klasę Linia oraz funkcję wyznaczającą punkt przecięcia linii prostych do rozwiązania układu równań postaci

Dla wartości rzeczywistych podanych przez użytkownika program wypisuje wartość i stanowiące rozwiązanie powyższego układu równań. Zakładamy, ż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