[ Pobierz całość w formacie PDF ]

zasoby, aby mo na je było powtórnie wykorzystać. Zazwyczaj problem  posprz tania po
obiekcie nie wydaje si być szczególnym wyzwaniem  obiekt jest tworzony, stosowany
tak długo, jak jest potrzebny, a nast pnie nale y go usun ć. Jednak nietrudno spotkać sy-
tuacje znacznie bardziej skomplikowane.
Załó my, e tworzymy system obsługi ruchu powietrznego dla lotniska. (Tego samego
modelu mo na by tak e u ywać do zarz dzania towarami w magazynie, w systemie wy-
po yczania kaset wideo lub firmie zajmuj cej si tresur zwierz t). Na pierwszy rzut
oka zadanie wydaje si proste: trzeba stworzyć kontener słu cy do przechowywania
samolotów, a nast pnie umie cić w nim ka dy samolot znajduj cy si w kontrolowa-
nym obszarze przestrzeni powietrznej. W ramach sprz tni cia nale y usun ć obiekt sa-
molotu, który opu cił kontrolowany obszar.
Być mo e jednak dysponujemy innym systemem do rejestracji danych o samolotach; być
mo e nie s to dane wymagaj ce tak natychmiastowej uwagi, jak główne funkcje stero-
wania lotami. Być mo e jest to zapis planu lotów wszystkich małych samolotów startu-
j cych z lotniska. A zatem mamy drugi kontener dla małych samolotów i za ka dym razem,
gdy tworzony jest obiekt samolotu, je li jest to samolot mały, zapisujemy go tak e w tym
drugim kontenerze. Nast pnie, podczas okresów bezczynno ci systemu, jaki proces dzia-
łaj cy w tle wykonuje na tym kontenerze pewne operacje.
Teraz problem si skomplikował: w jaki sposób okre lić, kiedy mo na usun ć obiekt?
Gdy obiekt nie jest ju potrzebny w jednej cz ci systemu, inne wci mog z niego korzy-
stać. Ten sam problem mo e si pojawiać w wielu ró nych sytuacjach, a w systemach
programistycznych wymagaj cych jawnego usuwania obiektów (takich jak C++) mo e
on stać si bardzo zło ony.
Gdzie znajduj si dane obiektu i jak jest kontrolowany czas jego ycia? J zyk C++
przyjmuje zało enie, e najwa niejsz spraw jest kontrola efektywno ci, dlatego daje
programi cie wybór. W celu osi gni cia maksymalnej szybko ci czasu wykonania mo e
on okre lić sposów przechowywania i czas ycia obiektu na etapie pisania programu po-
przez umieszczenie go na stosie (mówi si wtedy czasami o zmiennych automatycznych
7KLQNLQJ LQ -DYD (G\FMD SROVND
albo lokalnych) albo w obszarze pami ci statycznej. Kładzie si w ten sposób nacisk na
szybkie rezerwowanie i zwalnianie miejsca, po wi caj c jednak e elastyczno ć, poniewa
musimy znać dokładn liczb , czas ycia oraz typ obiektów na etapie pisania programu.
Je eli próbujemy rozwi zać bardziej ogólny problem, taki jak komputerowe wspoma-
ganie projektowania, zarz dzanie magazynem lub kontrola ruchu powietrznego, wtedy
staje si to zbyt powa nym ograniczeniem.
Drugie rozwi zanie polega na dynamicznym tworzeniu obiektów w obszarze pami ci
zwanym stert . Stosuj c to rozwi zanie, nie wiemy a do czasu wykonania, ilu obiektów
potrzebujemy, jaki ma być czas ich ycia oraz dokładny typ. Kwestie te s rozstrzygane
w odpowiednim momencie podczas działania programu. Je eli potrzebujemy nowego
obiektu, tworzymy go po prostu na stercie. Poniewa pami ć jest zarz dzana dynamicznie
w czasie wykonania, zatem okres niezb dny do jej zarezerwowania na stercie jest o wiele
dłu szy ni ten potrzebny do zrobienia tego samego na stosie (zarezerwowanie miejsca
na stosie wi e si cz sto jedynie z pojedyncz instrukcj asemblerow do przesuni cia
wska nika stosu w dół oraz drug do przesuni cia go z powrotem w gór ; czas konieczny
do utworzenia miejsca na stercie zale y natomiast od konstrukcji mechanizmu obsługi
pami ci). Czas dynamicznego przydziału w pami ci sterty jest za zale ny od szczegó-
łów mechanizmu obsługi pami ci w danym systemie.
Rozwi zanie dynamiczne bazuje na słusznym zało eniu, e obiekty mog być skompli-
kowane, a zatem narzut zwi zany z samym znajdowaniem i zwalnianiem miejsca na te
obiekty nie b dzie miał istotnego wpływu na tworzenie obiektu. Ponadto zwi kszona ela-
styczno ć tego rozwi zania ma podstawowe znaczenie dla rozwi zywania ogólnych pro-
blemów programistycznych.
Java stosuje wył cznie drugie rozwi zanie7. Za ka dym razem, gdy tworzymy obiekt,
u ywamy słowa kluczowego PGY, aby utworzyć jego dynamiczny egzemplarz.
Inn spraw stanowi czas ycia obiektu. W j zykach pozwalaj cych na tworzenie obiektów [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • markom.htw.pl