Et unum hominem, et plures in infinitum, quod quis velit, heredes facere licet - wolno uczynić spadkobiercą i jednego człowieka, i wielu, bez ograniczeń, ilu kto chce.

[ Pobierz całość w formacie PDF ]

metody , jeśli nie jest to konieczne.
Nie definiuj metody jako publicznej.
Zwalniaj posiadane obiekty za pomocą metody ; korzystaj z
wywołując .
Nie likwiduj referencji w swoim destruktorze; jeśli Twój kod nie utworzył
obiektu, jest to referencja, a nie agregacja.
Nie twórz obiektów ani nie korzystaj z innych obiektów w metodzie ;
destruktory służą wyłącznie do czyszczenia pamięci i zwalniania zasobów.
W metodzie jako pierwszą instrukcję zawsze stosuj .
Ze względu na to, że nie wiemy, kiedy GC zwalnia obiekty, można zaimplementować
metodę i wywoływać ją jawnie w bloku ochrony zasobów ;
dzięki temu uzyskamy konkretną finalizację obiektów takich jak np. strumienie danych
czy wątki.
I
Destruktory są chronione. Konsumenci nie mogą i nie powinni mieć możliwości bezpo-
średniego wywoływania metody . Możesz jawnie uruchomić systemowy odzy-
skiwacz pamięci za pomocą instrukcji , lecz nie jest to zalecana
praktyka i powoduje znaczne obciążenie systemu.
Rozdział 7. Tworzenie klas 259
Jeśli chcesz wyczyścić znaczące obiekty, zastosuj metodę i ją wywołaj.
Oto kilka pożytecznych wskazówek dotyczących implementacji metody :
Dodawaj metodę , wykorzystując interfejs . (
posiada jedną metodę, , a w systemie pomocy Visual Studio .NET
znajdziesz przykłady klas z zaimplementowanym tym interfejsem).
Jeśli posiadasz istotne zasoby, takie jak uchwyty Windows, zestawy rekordów
lub strumienie plików, które muszą być zwolnione do systemu zaraz po
zakończeniu korzystania z nich, wówczas utwórz publiczną metodę .
Zaprojektuj mechanizm powstrzymujący usuwanie, jeśli użytkownik
bezpośrednio wywoła metodę .
Jeśli klasa bazowa implementuje , wywołaj metodę z klasy
bazowej.
Zaimplementuj metodę , która wywoła . W ten sposób
upewnisz się, że będzie zawsze wywoływana.
Zwalniaj posiadane obiekty w metodzie .
Rozważ możliwość wygenerowania wyjątku ,
w przypadku gdy konsument próbuje skorzystać z obiektu po wcześniejszym
wywołaniu metody .
W swojej metodzie wywołaj aby powiedzieć
GC, że nie musi uruchamiać metody .
Zezwól na wywoływanie obiektu więcej niż jeden raz. Drugie i kolejne
wywołania nie powinny wykonywać żadnych operacji.
Przy wykorzystaniu tych wskazówek poniżej została utworzona metoda dla
:
Metoda implementuje (przez to wiemy, że
jest zawarte w naszym ). Lokalna zmienna statyczna jest wy-
korzystana w celu umożliwienia bezpiecznego wywoływania więcej niż jeden
raz. Druga instrukcja ustawia odpowiednią wartość , wskazując, że
była już wywołana. Metoda jest wywoływana w celu zamknięcia
, co nie zostało jeszcze pokazane, a zostaje przypisany .
Na końcu, informuje GC, że nie ma potrzeby wywoływania me-
tody dla danego obiektu.
260 Część II Zaawansowane programowanie zorientowane obiektowo
Podczas dyskusji o klasach zauważyłeś pewnie częste korzystanie z dwóch specyficz-
nych słów kluczowych  oraz . , jak już widziałeś, zezwala na
wywoływanie metod w klasie bazowej tworzonej klasy, które mogą być przeciążane;
rozwiązuje to problem niejednoznaczności klas.
jest przybliżonym odpowiednikiem referencji do samej siebie . za-
kłada, że jakiekolwiek metody wywołane z niej są zadeklarowane jako .
wywołuje metodę, nie biorąc pod uwagę typu obiektu, jaki posiada on w trakcie
działania aplikacji, efektywnie omijając polimorficzne zachowanie. Ze względu na to,
że jest referencją do obiektu, nie możesz z niej korzystać w metodach .
Referencja do siebie została przeniesiona do Visual Basic .NET. do działania wy-
maga egzemplarza. wywołuje metodę w tej samej klasie, natomiast wywołuje
metodę w obiekcie przypisanym przez , to znaczy, w sposób polimorficzny. Przyjrzyj
się następującym klasom.
Gdy tworzony jest obiekt typu , konstruktor w wywołuje . Jeśli
zamienimy na , wówczas wywołana będzie .
n n
Metody są to funkcje i procedury, które zdefiniowane zostały w ramach klasy lub struk-
tury. Jedynym wyzwaniem, które pojawia się podczas implementacji metod, jest opra-
cowanie odpowiednich algorytmów rozwiązujących dany problem, napisanie dla nich
jak najprostszego kodu oraz określenie dostępu do tworzonych metod wraz z użyciem
odpowiednich modyfikatorów, które byłyby dla nich najbardziej odpowiednie.
Niestety, sposób definiowania metod jest zagadnieniem bardzo subiektywnym. Najlep-
szym sposobem na nauczenie się implementowania metod jest analizowanie i pisanie
jak największej ilości kodu, a następnie wybranie stylu naszym zdaniem najlepszego.
Nie bój się eksperymentować i zmieniać kod już napisany. Wydruk 7.6 przedstawia
kompletną klasę .
Rozdział 7. Tworzenie klas 261
Zawartość klasy LoaderClass
262 Część II Zaawansowane programowanie zorientowane obiektowo
Klasa definiuje metodę , dwie metody oraz , ,
i . jest metodą prywatną; jej zadanie polega na wygenerowaniu zdarzenia
w celu poinformowania o jakichkolwiek obiektach, które mogą chcieć podsłuchać pro-
ces ładowania. Obie metody są publiczne; zostały zdefiniowane z modyfikatorami
, aby umożliwić konsumentom otwieranie pliku z przekazaniem jego nazwy
w argumencie metody lub bez tego argumentu, zakładając w takim przypadku, że nazwa
pliku została wcześniej przypisana w wywołaniu konstruktora lub poprzez modyfikację
wartości właściwości. (Właściwość jest zdefiniowana w wierszach 15.  22.).
Metoda eliminuje potrzebę istnienia zmiennej tymczasowej. Możemy przekazać
wynik metody jako parametr do , która zwróci nam
wskazujący, czy chcemy wartość czy nie. Funkcja zwraca wartość
określającą, że dodaliśmy tekst i że nie wywołaliśmy metody (wiersze 50. 
52.). Przy okazji w wierszu 51. widzimy przykład zastosowania operatora działania
skróconego . Jeśli metoda została wywołana, zostaje
skrócona; w przeciwnym razie zostaje odczytywany następny wiersz tekstu. Jeśli
dojdzie do końca pliku, metoda zwróci pusty ciąg ( ), a
zwróci . Ponieważ rozdzieliliśmy działanie i , metoda jest
bardzo prosta i składa się jedynie z pętli (wiersze 54.  58.).
Rozdział 7. Tworzenie klas 263
Jedynymi metodami publicznymi w naszej klasie są , i . Z tego względu [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • jutuu.keep.pl
  • Menu

    Cytat


    Fallite fallentes - okłamujcie kłamiących. Owidiusz
    Diligentia comparat divitias - pilność zestawia bogactwa. Cyceron
    Daj mi właściwe słowo i odpowiedni akcent, a poruszę świat. Joseph Conrad
    I brak precedensu jest precedensem. Stanisław Jerzy Lec (pierw. de Tusch - Letz, 1909-1966)
    Ex ante - z przed; zanim; oparte na wcześniejszych założeniach.