I.
Wprowadzenie do  języków zapytań (1)
II.
Wprowadzenie do  języków zapytań (2)
III.
Pojęcia obiektowości w bazach danych (1)
IV.
Pojęcia obiektowości w bazach danych (2)
V.
Podstawy semantyczne języków zapytań
VI.
Modele składu obiektów
VII.
Stos środowisk, rezultaty zapytań, funkcja nested
VIII.
Język SBQL (Stack-Based Query Language) (1)
IX.
X.
Dalsze własności SBQL
XI.
Operatory order by i group by
XII.
Przetwarzanie struktur nieregularnych
XIII.
Rozszerzenie języków zapytań o konstrukcje imperatywne
XIV.
Procedury, procedury funkcyjne, metody, reguły zakresu
  Wstęp
  1. Parametry procedur
  2. Procedury w SBQL
  3. Rozszerzenie SBQL w modelu M3
  4. Reguły zakresu
  Podsumowanie
  Zadania
XV.
Parametry procedur i metod, procedury rekurencyjne, optymalizacja poprzez modyfikację zapytań

 

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ę.

77
Rys.77. Sytuacja na stosie ENVS ilustrująca reguły zakresu

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.

P14.7.

Rozpatrzmy zapytanie q1 q q2 i załóżmy, że aktualnie wykonywana jest metoda m1 występująca w q2 i przetwarzająca referencję ri . Niech powyższe zapytanie występuje wewnątrz ciała metody m2, która została wywołana z procedury p. Rys.77 przedstawia sytuację na stosie środowiskowym.

 

Zilustrowana jest zasada leksykalnego zakresu: programista piszący metodę m1 nie znał środowisk zaznaczonych na rysunku na czarno, wobec czego nazwy występujące w m1 nie mogą być w nich wiązane.


Copyrights © 2006 PJWSTK
Materiały zostały opracowane w PJWSTK w projekcie współfinansowanym ze środków EFS.