Andrzej Purczyński
|
---|
Istotną częścią naszego życia jest tworzenie programów.Paradygmat programowania zorientowanego obiektowo zyskał w ostatnich latach na popularności co wyniknęło z osiągnięcia odpowiedniego poziomu dojrzałości dwu nurtów. Pierwszym był rozwój programowania w latach 70-tych, który doprowadził do przemiany tego procesu w inżynierię oprogramowania. Drugim było powstanie coraz lepszych języków zorientowanych obiektowo i przejście programistów, na przełomie lat 80 i 90, do ich szerokiego wykorzystania. Zorientowano się, że podejście obiektowe prawdopodobnie lepiej odzwierciedla potrzeby użytkownika, co czyni ten sposób programowania bardziej przydatnym. Podstawową ideą programowania zorientowanego obiektowo jest klasa (class). Została ona przedstawiona po raz pierwszy w koncepcji klasy w Simuli 67. Klasa wyznacza pewien wzorzec dla danej grupy obiektów. Określa ona typ obiektu (object), lub obiektów, co zwykle oznacza możliwość nadawania im pewnych właściwości (properties) i wymuszania zadanych reakcji na zdarzenia (events). W ten sposób obiekt jest zmienną danej klasy i stanowi kapsułę zawierającą kod i dane. Wyznaczają one typ obiektu oraz sposób jego zachowania jako odpowiedź na odebrany komunikat od innego obiektu. Przesłanie komunikatu (message) w programowaniu obiektowym oznacza wywołanie metody danego obiektu i różni się od przesyłania komunikatów znanego np. z działania systemów operacyjnych. Metody stanowiące opis szeregu działań wykonywanych przez obiekt nie są częścią całego programu, ale przynależą tylko do wybranych obiektów. W trakcie działania programu obiekty mogą być tworzone dynamicznie za pomocą metod tzw. konstruktorów (odpowiednik instrukcji new w Turbo Pascalu) oraz usuwane za pomocą metod tzw. destruktorów (odpowiednik instrukcji dispose w Turbo Pascalu). Utworzony obiekt jest nazywany instancją danej klasy. Zwykle języki zorientowane obiektowo wykorzystują trzy techniki projektowania:
Rozwiązywanie wielu problemów z zakresu CAD/CAM (Computer-Aided Design/Computer-Aided Manufacturing) opiera się na tzw. wzorcach projektowych. Stanowią one jedno z najważniejszych osiągnięć programowania obiektowego. Wzorce projektowe wywodzą się z architektury i antropologii. Christopher Alexander postawił problem obiektywnej oceny rozwiązań architektonicznych i odkrył, że istnieje możliwość określenia podobieństw rozwiązań o wysokiej jakości, które nazwał wzorcami. Antropolog Ruth Benedict jest pionierem analizy kultur wykorzystującej wzorce. Pojęcie wzorca definiuje się jako rozwiązanie problemu w określonym kontekście. Zastosowanie wzorców do projektowania jest coraz szerzej wykorzystywane w innych dziedzinach, m. in. w programowaniu systemów CAD/CAM. Wzorce opisują problemy często pojawiające się w danej dziedzinie i zasadniczą część ich rozwiązania. W książce A. Shalloway'a i J.R. Trott'a pt. "Projektowanie zorientowane obiektowo. Wzorce projektowe" (Wyd. Helion Gliwice 2001), są przedstawione rozwiązania problemów CAD/CAM z wykorzystaniem wzorców projektowych takich jak: wzorzec fasady, wzorzec adaptera, wzorzec fabryki abstrakcyjnej. Przykład zastosowania wzorca fasady pokazują rysunki 1 i 2. Rys. 1. Układ bez zastosowania wzorca fasady Jeśli obiekt klasy Klient operuje na obiektach klas BazaDanych, Model i Element, to aby pobrać informację o elemencie musi najpierw uzyskać dostęp do bazy danych. Następnie wysyła do modelu komunikat dotyczący jego właściwości i dopiero wtedy pobiera informacje o konkretnym elemencie. Rys. 2. Układ z zastosowaniem wzorca fasady Prościej wygląda rozwiązanie oparte na dodatkowym obiekcie w postaci wzorca fasady. Takie rozwiązanie pozwala na zastosowanie prostszego interfejsu systemu danych, gdyż klienci uzyskują potrzebne dane za pomocą mniejszej liczby funkcji. |