W kroku tym poznasz mechanizmy rozszerzania funkcjonalności wcześniej zrealizowanej (i zamkniętej) klasy.
Wykonuj zadania w podanej kolejności.
-
Zastanów się nad możliwością rozszerzenia typu
BigRational
na typBigRationalPro
przez dziedziczenie, wprowadzając dodatkową funkcjonalność:mieszana reprezentacja tekstowa ułamka (znak, część całkowita, spacja, część ułamkowa zapisana w formie ułamka właściwego)
[znak][część całkowita] «licznik»/«mianownik»
np.-2 3/4
dla ułamka niewłaściwego, ale dla ułamka właściwego3/4
.Spróbuj wykonać to zadanie, ale w innym projekcie typu class library.
-
Zamknij klasę
BigRational
uniemożliwiając jej dziedziczenie. UWAGA: zamykając klasę projekt z poprzedniego punktu nie będzie się kompilował. -
Rozszerz klasę
String
o metodęToBigRational()
, konwertującą obiekt typustring
na obiekt typuBigRational
. Wykorzystaj stosowną metodę zaimplementowaną w klasieBigRational
. -
W projekcie Console App utwórz klasę
BigRationalExtensions
w plikuBigRationalExtensions.cs
. Zaimplementuj w niej metodę rozszerzającą typBigRational
odwracającą ułamek (tworzenie nowego ułamka, w którym licznik zamienia się z mianownikiem). Przykład użycia:(new BigRational("2/3")).Reverse()
zwróci ułamek3/2
. -
Zaimplementuj metodę rozszerzającą
Pow
podnoszącą ułamek do podanej potęgi. Przykład użycia:(new BigRational("2/3")).Pow(2)
zwróci ułamek4/9
. -
W klasie
BigRationalExtensions
dodaj metodę umożliwiającą obliczanie średniej arytmetycznej dla potencjalnie wielu argumentów typuBigRational
. Dodaj również metodęList<BigRational> Range(BigRational lowerBound, BigRational upperBound, BigRational step)
generującą ciąg arytmetyczny ułamków począwszy odlowerBound
z krokiemstep
tak, aby nie przekroczyćupperBound
. Musisz przewidzieć różne sytuacje (lista pusta, ciąg rosnący lub malejący, zapętlanie się procesu generowania ciągu, ...).
-
Poczytaj o zamykaniu klasy.
-
Poczytaj o metodach rozszerzających.