Języki i Środowiska Programowania Baz Danych | |
|
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. |