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)
  Wstęp
  1. Klasy
  2. Polimorfizm
  3. Role
  4. Kolekcje
  5. Trwałość
  6. Moduły
  Podsumowanie
  Zadania
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
XV.
Parametry procedur i metod, procedury rekurencyjne, optymalizacja poprzez modyfikację zapytań

 

6. Moduły

Zgodnie z definicją D. Parnasa, moduł jest jednostką pracy programisty. W modularnych językach programowania, takich jak Modula-2, moduł oznacza fragment programu stanowiący jednostkę przechowywania, kompilacji i konsolidacji (linking) programów. Moduł podlega regułom hermetyzacji (encapsulation) oddzielającym specyfikację modułu od jego implementacji. Dzięki temu każdy moduł posiada własną przestrzeń nazw nie kolidującą z przestrzenią nazw innych modułów. Po zakończeniu pracy przez danego programistę inni programiści mogą używać dowolnych "publicznych" cech modułu, ale nie mogą używać i zmieniać cech odnoszących się do jego wnętrza.

Specyfikacja modułu zawiera tzw. listy eksportowe i importowe. Lista eksportowa określa obiekty modułu (dane, obiekty, typy, funkcje, procedury, klasy itd.), które są widoczne na zewnątrz. Koncepcyjnie, lista eksportowa jest odpowiednikiem pojęcia interfejsu znanego ze standardu CORBA, standardu ODMG i języka Java. Lista importowa określa obiekty innych modułów, które można użyć w danym module. Lista importowa stanowi bardzo skuteczny środek kontroli efektów ubocznych modułu, tj. własności z zewnątrz modułu (danych, procedur itd.), z których ma prawo skorzystać dany moduł, oraz własności z zewnątrz modułu, które są aktualizowane przez dany moduł. Specyfikacja tych zewnętrznych własności w jasny i jednoznaczny sposób ogranicza możliwość niekontrolowanych, tworzonych ad hoc przez programistów związków pomiędzy modułami, przez co zmniejsza prawdopodobieństwo błędu. Jednocześnie, specyfikacja ta dokumentuje wspomniane związki pomiędzy modułami, pozwalając wykrywać (również w półautomatyczny lub automatyczny sposób) potencjalne źródła błędów w programie. Niestety, środek ten nie jest stosowany w  popularnych językach programowania, takich jak C++ lub Java.

Z punktu widzenia koncepcji obiektowości, moduł jest obiektem, który wewnątrz może zawierać obiekty oraz inne własności, takie jak typy lub klasy. Podobnie jak w przypadku innych obiektów, dla modułu możemy definiować jego implementację (czyli klasę) oraz specyfikację (czyli interfejs). Taka koncepcja jest zastosowana w języku Modula-2, gdzie specyfikacja jest tekstem zawierającym nazwę modułu, listę eksportową i listę importową. Przy takim potraktowaniu koncepcji modułu nie stanowi on nowej jakości dla teorii i konstrukcji języków opisywanej w tym wykładzie.

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