13. Porównanie programowania obiektowego i strukturalnego.
Programowanie obiektowe (ang. object-oriented programming) to 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ń.
Umożliwia to szybsze pisanie większych programów, przez „składanie” ich ze wzajemnie powiązanych obiektów, które odpowiadają za daną funkcję programu (np. przygotowanie danych, wykonanie obliczeń, zaprezentowanie wyników). Podejście to róż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.
Cechy programowania obiektowego:
Abstrakcja (oznacza, że pewne klasy są jedynie wzorem dla innych klas, które się z nich wywodzą, ale same nie są wykorzystywane do tworzenia obiektów.)
Enkapsulacja (ukrywanie pewnych danych składowych lub metod obiektów danej klasy tak, aby były one (i ich modyfikacja) dostępne tylko metodom wewnętrznym danej klasy lub funkcjom z nią zaprzyjaźnionym.)
Polimorfizm (pozwala pisać ogólne struktury danych i algorytmy, bez precyzowania na jakich dokładnie typach one operują i bez konieczności dostarczania implementacji odpowiednich dla każdego przypadku.)
Dziedziczenie (operacja polegająca na stworzeniu nowej klasy na bazie klasy już istniejącej)
Programowanie strukturalne to paradygmat programowania zalecający hierarchiczne dzielenie kodu na moduły, które komunikują się jedynie poprzez dobrze określone interfejsy. Jest to rozszerzenie koncepcji programowania proceduralnego (gdzie dane i procedury nie są ze sobą bezpośrednio związane), a instrukcje wykonują się sekwencyjnie. Jest to programowanie zalecające stosowanie konstrukcji języka takich jak pętle i instrukcje warunkowe, oraz unikanie instrukcji goto i wielokrotnych punktów wejścia i wyjścia z kodu danego podbloku programu. Zakłada ono ograniczenie używania instrukcji skoków (uznawanych za bałaganiarskie i źle działające na przejrzystość kodu) na rzecz pętli i wywołań podprogramów oraz maksymalne odseparowanie danych (typy, zmienne) od kodu.
Obiektowość
Zalety:
- wygoda
- łatwa modyfikacja kodu
Wady:
- wolniej się wykonuje w porównaniu z kodem strukturalnym
Strukturalność
Zalety:
- szybsze wykonywanie skryptów
Wady:
- nieporządek, chaos w kodzie
- trudna modyfikacja, gdy programista nie zagląda długo do kodu może się pogubić