Języki i Środowiska Programowania Baz Danych | |||||
|
4. Reguły zakresu Reguły zakresu są wyznaczone przez stos środowiskowy oraz kolejność odwiedzania jego sekcji przy wiązaniu nazw. Staraliśmy się ustalić taką kolejność lokowania sekcji i ich odwiedzania, aby było to naturalne i logiczne dla programistów. Rys.75 pokazuje, że nie zawsze ustawienie sekcji na stosie jest oczywiste. Np. dlaczego podczas wiązania nazwy występującej w ciele metody najpierw jest odwiedzana sekcja z prywatnymi własnościami klasy/obiektu, a dopiero później z publicznymi? Dlaczego nie odwrotnie? Gdyby ta kolejność została zmieniona, własności semantyczne języka również uległyby zmianie, gdyż różne sekcje mogą posiadać bindery z tymi samymi nazwami. W obiektowości jest kilka sytuacji, gdy nie da się uniknąć binderów z tymi samymi nazwami na stosie środowiskowym. Do takich sytuacji należy polimorfizm i przesłanianie, dane nieregularne i wartości domyślne, zróżnicowanie pomiędzy lokalnym środowiskiem metody a globalnym środowiskiem sesji, rekurencja itd. Istotą koncepcji stosu środowiskowego jest to, aby regulować zakres nazw i nie dopuszczać do wiązania, które nie jest oczekiwane przez programistę. Regułami zakresu rządzi zdrowy rozsadek oraz dwie zasady: zasada priorytetu lokalnego środowiska oraz zasada leksykalnego zakresu. Zasada priorytetu lokalnego środowiska: przy wiązaniu nazw lokalne środowisko ma priorytet przed dowolnym środowiskiem bardziej globalnym.
Na mocy tej zasady na samej górze stosu ENVS znajduje się lokalne środowisko metody. Niżej jest środowisko przetwarzanego obiektu, jeszcze niżej środowisko sesji, potem środowisko bazy danych, wreszcie środowisko całego systemu komputerowego. Zasada ta jest również podstawą zagnieżdżania operatorów niealgebraicznych. Zasada leksykalnego zakresu (lexical scoping): nazwa nie może być wiązana do bytu programistycznego, którego nie mógł być świadomy programista w momencie pisania zapytania lub programu.
Dotyczy to lokalnych środowisk innych procedur, wszelkich własności prywatnych (obiektów, klas, modułów) oraz wszelkich kodów, które pojawiły się później niż moment pisania danego zapytania lub programu. Przykładowo, programista piszący metodę nie może uwzględnić faktu, że została wywołana z zapytania, które zbudowało kilka sekcji stosu ENVS w wyniku działania operatorów niealgebraicznych.
|
||||
Copyrights © 2006 PJWSTK Materiały zostały opracowane w PJWSTK w projekcie współfinansowanym ze środków EFS. |