Koszyk I
1. Programowanie strukturalne i obiektowe
Programowanie strukturalne - metodyka opracowywania, organizacji i pisania programów komputerowych, prowadząca do uzyskania programów o zwięzłych, przejrzystych i łatwych do analizy strukturach, wykorzystujących procedury (podprogramy) tworzone osobno dla realizacji określonych zadań i wywoływane w odpowiednich miejscach programu głównego. Opisywane są kolejno czynności, które muszą zostać wykonane, aby osiągnięty został cel zadania. Dane przekazywane poprzez wartości zwracane i argumenty funkcji. Zalecane jest unikanie zmiennych globalnych w związku z istnieniem niebezpieczeństwa zmiany wartości zmiennej przez dowolną funkcję. Obecnie prawie wszystkie popularne języki programowania spełniają wymogi programowania strukturalnego. Programowanie strukturalne cechuje się prostotą zapisu programu, dlatego jest bardzo przydatne zwłaszcza w początkowych fazach nauki programowania, chociaż ze względu na zużyty czas lub pamięć często nie jest optymalną metodą programowania.
Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych, która definiuje programy za pomocą "obiektów" - elementów łączących stan (czyli dane) i zachowanie (czyli procedury, tu: metody). Obiektowy program komputerowy wyrażony jest jako zbiór takich obiektów, komunikujących się pomiędzy sobą w celu wykonywania zadań. Podejście to rożni się od tradycyjnego programowania proceduralnego, gdzie dane i procedury nie są ze sobą bezpośrednio związane. Programowanie obiektowe ma ułatwić pisanie, konserwację i wielokrotne użycie programów lub ich fragmentów. Największym atutem programowania, projektowania oraz analizy obiektowej jest zgodność takiego podejścia z rzeczywistością- mozg ludzki jest w naturalny sposób najlepiej przystosowany do takiego podejścia przy przetwarzaniu informacji. Jest to najbardziej naturalny sposób rozumienia rzeczywistości; podstawową cechą mózgu ludzkiego jest klasyfikacja - łączenie występujących w rzeczywistości obiektów w grupy - klasy. Odbywa się to na podstawie wspólnych cech dla grup obiektów - w tym podobnych zachowań.
Podstawowe cechy języków programowania, które czynią je obiektowymi, to:
● abstrakcja - każdy obiekt w systemie jest abstrakcyjnym modelem, który może wykonywać zadania, opisywać i zmieniać swój stan oraz komunikować się z innymi obiektami bez ujawniania, w jaki sposób dane cechy zostały zaimplementowane
● hermetyzacja - to sposób odizolowania od otoczenia wybranych danych i funkcji operujących na tych danych) zgromadzonych w jednej strukturze. Widoczne są tylko niezbędne fragmenty programu, natomiast zmienne i funkcje pomocnicze są ukryte i niedostępne z zewnątrz.
Dzięki takiemu połączeniu programista uwalnia się od pamiętania o wszystkich szczegółach
implementacyjnych, co zapewnia zmniejszenie liczby błędów oraz prostszą strukturę programu końcowego. Dla terminu hermetyzacja spotyka się również określenie enkapsulacja. Podobnie jak w innych językach programowania, hermetyzację można stosować bez klasycznych mechanizmów programowania obiektowego.
● dziedziczenie - operacja, która powoduje przeniesienie danych i metod z klasy bazowej do potomnej. Mechanizm ten uwalnia programistę od ponownego tworzenia i implementowania struktur danych oraz funkcji działających na tych strukturach. Udostępnia on możliwość korzystania z własnej bądź cudzej pracy jedynie poprzez rozszerzanie już zaimplementowanych elementów. Nie ma więc konieczności ponownego definiowania tego, co raz już zostało zrobione.
Warto pamiętać, że dziedziczenie może dotyczyć również interfejsów, gdzie trzeba zachować
większą ostrożność w stosowaniu tego mechanizmu.
● polimorfizm - to najważniejsza cecha, która umożliwia dostosowanie działania obiektów do własnych oczekiwań poprzez łączenie funkcjonalności zarówno dziedziczonej, jak i implementowanej samodzielnie. Idea polimorfizmu bazuje na tym, że użytkownik obiektu nie musi wiedzieć, czy konkretne zachowanie wykorzystywanego obiektu zostało zrealizowane bezpośrednio w tym obiekcie czy też w tym, po którym dziedziczy on swoje właściwości. Ponadto może się okazać, że takie samo odwołanie do metody za każdym razem dotyczy innej akcji (inaczej zdefiniowanej). Może się też okazać, że w zależności od poziomu dziedziczenia pozornie ta sama metoda (nazywająca się tak samo) wykonuje inną akcję.
Podsumowanie:
Programowanie strukturalne zakłada tworzenie procedur i realizacje danego zagadnienie w oparciu o nie. Złożone dane przechowywane są w postaci struktur a sekwencja wywołań procedur (funkcji) realizuje proces danego zagadnienia. Język strukturalny nie posiada mechanizmów opisu świata rzeczywistego, z tego powodu nie nadaje się do modelowania rzeczywistych procesów. Ten sposób programowania nadaje się do tworzenia algorytmów, rzadziej jest wykorzystywany do modelowania zjawisk. Do tego typu zagadnień stosuje się podejście obiektowe. Dzięki mechanizmom polimorfizmu, dziedziczenia, hermetyzacji w łatwy sposób można modelować zachowania obiektów istniejących w rzeczywistości, same zaś obiekty reprezentować przy pomocy klas definiujących obiekt, mający określone cechy (własności) czy też zachowania (metody).
Wersja skrócona:
Programowanie strukturalne
Programowanie strukturalne jest paradygmatem programowania, zalecającym podział programu na moduły, komunikujące się poprzez dobrze określone interfejsy. Jest rozszerzeniem koncepcji programowania proceduralnego, zalecającego dzielenie kodu na procedury, wykonujące ściśle określone zadania. Procedury nie powinny korzystać z parametrów globalnych, ale przekazywać wszystkie potrzebne dane jako parametry do procedury.
Programowanie strukturalne wykorzystuje do rozwiązywania zadań dobrze określone struktury algorytmiczne: sekwencja, selekcja, iteracja i rekursja; unika natomiast stosowania instrukcji skoku.
Programowanie strukturalne oddzielnie definiuje dane, oddzielnie funkcje.
Programowanie obiektowe
Programowanie obiektowe wprowadza pojęcie obiektu, w którym dane i procedury są ze sobą ściśle powiązane. Program obiektowy korzysta z obiektów, komunikujących się ze sobą w celu wykonania określonych zadań.
Cechy typowe dla programowania obiektowego
abstrakcja - zredukowanie właściwości opisywanego obiektu do najbardziej podstawowych,
hermetyzacja danych - dostęp do składowych jest ograniczony za pomocą dobrze określonego interfejsu,
dziedziczenie - mechanizm umożliwiający wywodzenie nowych klas z klas już istniejących, wraz z przejmowaniem ich metod,
polimorfizm - wielopostaciowość, pozwala na wybór metody spośród różnych wersji w zależności od kontekstu.