[ Pobierz całość w formacie PDF ]

współdzielone , znajdziesz dokładne omówienie składowych współdzielonych.
n
Klasy wspierają bardzo mądre powiedzenie divide et impera, dziel i rządz. Jako kon-
struktor klasy, możesz skupić się podczas definiowania wyłącznie na sposobie jej im-
plementacji. Gdy korzystasz z klasy, stajesz się jej konsumentem. W tym momencie
interesują Cię jedynie składowe publiczne, a w przypadku klas potomnych  składowe
publiczne i chronione.
266 Część II Zaawansowane programowanie zorientowane obiektowo
Zaletą modyfikatorów dostępu jest to, że jako konsument nigdy nie musisz martwić się
o składowe prywatne i zazwyczaj nie musisz również myśleć o składowych chronio-
nych. Jeśli będziesz pamiętał o ogólnej zasadzie mówiącej o definiowaniu nie więcej
niż sześciu składowych publicznych w pojedynczej klasie, jako konsument takiej klasy
będziesz zwolniony z ciężaru większości detali implementacyjnych, które ukryte zosta-
ną w składowych prywatnych i chronionych. Poprzez pewne zarządzanie kodem i sto-
sowanie specyfikatorów dostępu ograniczających liczbę składowych, z jakimi muszą się
uporać konsumenci, upraszczasz swój kod, przez co staje się on łatwiejszy do zarządza-
nia i utrzymania.
W metodach możesz korzystać ze specyfikatorów dostępu , ,
i . Na początku tego rozdziału, w podrozdziale  Używanie specyfi-
katorów dostępu do klas , zostały omówione poszczególne specyfikatory. Poniższa lista
bardzo krótko omawia ich wpływ na metody:
Metody mogą być wywołane wewnętrznie lub przez dowolnego
konsumenta.
Metody mogą być wywołane przez generalizatora (klasę potomną)
lub wewnętrznie.
Metody mogą być wywoływane wyłącznie wewnętrznie.
Metody mogą być wywołane jedynie w obrębie tej samej aplikacji.
Metody mogą być wywołane wewnętrznie lub przez potomka
w obrębie tej samej aplikacji.
W książce znajdziesz setki przykładów wykorzystujących specyfikatory dostępu, a kil-
kanaście w tym rozdziale. W pierwszym podrozdziale,  Definiowanie klas , znajdziesz
ogólne uwagi na temat liczby metod i stosowania specyfikatorów.
Gdy chcesz poinformować konsumenta klasy, że coś się wewnątrz tej klasy wydarzyło,
możesz to przedstawić za pomocą zdarzenia:
Klasa (zobacz wydruk 7.6) wywołuje zdarzenie dla każdego wiersza
odczytywanego z pliku tekstu. Zaletą korzystania ze zdarzeń jest to, że klasa nie musi
wiedzieć, którzy konsumenci są zainteresowani otrzymywaniem informacji o zajściu
zdarzenia. Kod nie zmienia się w zależności od tego, czy któryś z konsu-
mentów obsługuje zdarzenie czy nie.
Instrukcja tworzy niejawnie typ .
Konsument, który chce obsłużyć zdarzenie wygenerowane przez ,
Rozdział 7. Tworzenie klas 267
może do tego celu użyć instrukcji lub . Oto przykład użycia dru-
giej z nich:
Obiekt zawierający metodę (w powyższej instrukcji) jest dodawany do listy wy-
wołań delegacji .
Zdarzenia nie są polimorficzne. Oznacza to, że nie możesz jawnie przeciążać metod
w klasach potomnych. Ogólną strategią stosowaną w takim przypadku jest opakowanie
instrukcji w metodę i użycie tej metody (zobacz ) jako proxy w celu
wywołania zdarzenia. Poprzez skorzystanie z proxy przy wywoływaniu zdarzeń, mo-
żemy przesłonić go w klasach potomnych, gdy tylko chcemy zmienić zachowanie się
zdarzenia w momencie jego wywołania.
Obsługa zdarzeń zmieniła się znacząco w Visual Basic .NET, włączając w to wprowa-
dzenie klas i , które bardzo usprawniły tę obsługę. Roz-
dział 8.,  Dodawanie zdarzeń oraz 9.,  Delgacje szczegółowo omawia tematy obsługi
zdarzeń i delegacji.
Klasa zagnieżdżona jest po prostu klasą zdefiniowaną w klasie. Klasy zagnieżdżone
mogą być definiowane ze wszystkich elementów dowolnej innej klasy. Oto szkielet kodu
dla klasy zagnieżdżonej:
Celem tworzenia klas zagnieżdżonych jest zgromadzenie grupy elementów posiadają-
cych wspólne cechy w obrębie zawierającej je klasy. Na przykład, jeśli masz klasę i ja-
kieś pola, właściwości i metody definiujące pewną koncepcję, jednak są one osobno,
możesz zaimplementować klasę zagnieżdżoną, w której zgromadzisz te elementy.
Generalnie, nie będziesz często wykorzystywał klas zagnieżdżonych. Jakakolwiek im-
plementacja, która może być zrobiona z użyciem klas zagnieżdżonych, może być z po-
wodzeniem zrobiona bez nich. Jeśli temat ten Cię bardziej interesuje, możesz poczytać
na temat bardziej zaawansowanych tworów, np. o idiomie list-koperta, w książce Jamesa
Copliena  Advanced C++ . Wydruk 7.7 przedstawia przykład klas zagnieżdżonych,
prezentując sposoby ich implementacji i gramatykę języka.
Klasy zagnieżdżone, dziedziczenie i wielowątkowość w programie demonstracyjnym
TrafficLight.sln
268 Część II Zaawansowane programowanie zorientowane obiektowo
Rozdział 7. Tworzenie klas 269
270 Część II Zaawansowane programowanie zorientowane obiektowo
Rozdział 7. Tworzenie klas 271
Ze względu na to, że wydruk ten jest bardzo długi, jego szczegółowe omówienie zostało
podzielone na poszczególne sekcje. Każda z nich prezentuje pewien określony aspekt kodu.
n n n n h
Motywacja do używania klas zagnieżdżonych wydaje się być dosyć niejasna, zwłaszcza
że każda zagnieżdżona klasa może być technicznie zaimplementowana jako zwykła kla-
sa. Istnieją pewne ściśle określone powody do wprowadzania klas zagnieżdżonych, jed-
nak jest ich zaledwie kilka i będziesz się z nimi bardzo rzadko spotykał.
272 Część II Zaawansowane programowanie zorientowane obiektowo
Aby zademonstrować techniczne aspekty wprowadzania klas zagnieżdżonych, napisa-
łem przykładowy program TrafficSignal.sln. Zwiatła sygnalizacji świetlnej  czerwone
na górze, żółte w środku i zielone na dole  idealnie nadają się na elementy klasy za-
gnieżdżonej. Jest raczej mało prawdopodobne, że spotkasz na ulicy pojedynczy sygnał
świetlny  tylko w jednym kolorze  którego stan będzie zależeć on innych świateł
nie towarzyszących jemu. (Może istnieć pojedyncze żółte światło pulsujące, jednak w tym
przypadku można je zaimplementować jako element osobnego sygnału świetlnego. Przy-
kład ten ilustruje wątpliwości, jakie często można napotkać przy korzystaniu z klas za-
gnieżdżonych: za każdym razem, kiedy korzystasz z tego typu klasy, znajdzie się wy-
jątek, który sugeruje zrezygnowanie z zagnieżdżania).
zawiera trzy egzemplarze klasy . Stanowią one sens jedynie jako całość (tak [ Pobierz całość w formacie PDF ]
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • chiara76.opx.pl
  • Copyright (c) 2009 Odebrali mi wszystkie siły, kiedy nauczyli mnie, że jestem nikim. | Powered by Wordpress. Fresh News Theme by WooThemes - Premium Wordpress Themes.