Pisanie programów - obiektowo czy strukturalnie?
Pisząc programy na zaliczenie często musimy doradzić klientowi czy program ma być napisany obietowo obiektowo czy strukturalnie. Oczywiście najważniejsze w tym przypadku jest to w jaki sposób uczyliście się programować na zajęciach na które zamawiany program ma powstać...Dlatego tak naprawdę to Ty powinieneś na m powiedzieć jak powinien być napisany program na zaliczenie, który mamy dla Ciebie napisać, i ponieważ jest to bardzo istotne radzimy upewnić się co do tego, ponieważ zła decyzja w tej kwestii skutkować może oceną niedostateczną z zaliczenia.
Jeżeli jednak prowadzący zostawia studentom wolną rękę w tej kwestii to szczerze mówiąc to odpowiedź można ograniczyć do jednego słowa - obiektowo ale zacznijmy od początku a więc od definicji:
Programowanie strukturalne jest rozwinięciem koncepcji programowania proceduralnego, jest to więc metodologia pisania programów której podstawą jest hierachiczny podział kodu na moduły komunikujące się ze sobą poprzez ściśle określone interfejsy. Dane, procedury i funkcje nie są ze sobą bezpośrednio powiązane a polecenia wykonywane są sekwencyjnie. Podstawą programowania strukturalnego są instrukcje warunkowe i pętle natomiast za swego rodzaju nietakt uważane są wszelkiego rodzaju skoki, które jako pozostłość po programowaniu liniowym uważane są (i słusznie) za coś co psuje czytelnść kodu źródowego i utrudnia jego analizę.
Z kolei programowanie obiektowe to metodyka pisania programów komputerowych definiująca programy przy pomocy obiektów łączących dane i zachowania programu (zdefiniowane w postaci procedury= i funkcji zwanych w programowaniu obiektowym metodami). Program wyrażony jest jako suma takich obiektów, które komunikoują się między sobą w celu wykonywania postawionych przed programem zadań. Umożliwia to sprawne pisanie dużych projektów przez zespoły programistów poprzez składanie ich ze wzajemnie współpracujących obiektów odpowiadających za poszczególne elementy oprogramowania.
To by było na tyle jeżeli chodzi o obiektywne definicje, teraz czas na (zapewne zupełnie nieobiektywne) opnie: Otóż moim zdaniem. Mimo że programowanie obiektowe narzuca programiście pewien reżim i obostrzenia które często zniechęcają młodych adeptów sztuki programowania do jego nauki, to jednak poświęcenie odrobiny czasu na zaznajomienie się z zasadami programowania obiektowego niesie za sobą niepodważalne korzyści.
Niezwykle ważna wydają się możliwości jakie wynikają z obiektowego podejścia do danych i obiektowego pisania programów dla całych zespołów programistów - ludzi którzy w realnym świecie często nawet się nie znają, a tworzą wspólnie olbrzymie aplikacjie posługując się we wzajemnej komunikacji jedynie opisami interfejsów metod danej klasy bez konieczności wnikania co się tam dzieje w środku. Kolejną zaletą programowania obiektowego, jest to, że kod jest czytelny i przejrzysty, wystarczy rzut oka na plik definicji i po chwili wiemy, za co odpowiada dana klasa czy metoda,
Odmiennie przedstawia się sytuacja w przypadku programowania strukturalnego, przede wszystkim szalenie trudno uzyskać czytelny kod przy większych aplikacjach, po drugie raz napisany kod nie nadaje się do ponownego użytku, ponieważ przystosowanie go do innych zastosowań wiąże się najczęściej z bardzo wieloma poprawkami w wielu różnych miejscach. Z tego powodu program napisany strukturalne raczej ponownie się nie przyda - zwykle programiście mniej czasu zajmie napisanie nowej klasy od zera, niż miałby babrać się bez końca w starym kodzie.
Pomimo tych oczywistych faktów na naszych uczelniach, zdecydowanie częściej uczy się programowania strukturalnego, i tak napisanych programów na zaliczenie oczekuje się od studentów. Oczywiście nie dotyczy to kierunków informatycznych, gdzie programowanie obiektowe jest już standardem, to jednak na kierunkach nie związanych z bezpośrednio z informatyką ciągle jest ono rzadkością.
Kończąc ten artykuł, chciałbym wyrazić nadzieję że te kilka słów które napisałem przekonają Was do nauki programowania obiektowego. Nie mam złudzeń że wyczerpałem temat - poruszyłem tylko część zagadnień i opisałem zaledwie drobny fragment zalet programowania obiektowego - jest ich dużo więcej o czym przekonacie się podczas pracy z konkretnymi zadaniami (szczególnie jeżeli przyjdzie Wam pracować w grupach) .