
Gabriel Brooks
0
2987
453
Obiektowy to nie tylko modne hasło, które słyszysz w kręgach programistycznych. Nazwa ma powód - ale co? Dołącz do mnie, gdy będę eksplorować niektóre podstawy koncepcji programowania i wyjaśnię, dlaczego programowanie obiektowe napędza technologię za jakimkolwiek nowoczesnym oprogramowaniem i porównuje ją z programowaniem opartym na procedurach i logice.
Historia programowania proceduralnego
Kiedy komputery zostały wynalezione po raz pierwszy, musiały zostać wyraźnie zaprogramowane za pomocą prostych instrukcji - i “oprogramowanie” był jedynie zbiorem tych niezwykle prostych poleceń, które można uruchomić kolejno.
Początkowo wymagały one napisania kodu maszynowego - przenieś go “kawałek” z tej pamięci do tej lokalizacji i wykonaj operację logiczną “i” operacja na nim za pomocą tego bitu itp. - ale wkrótce zostały one wyodrębnione na wyższy poziom przy użyciu BASIC.
Podejrzewam, że większość z was zetknęła się ze szkołą w języku BASIC (Kodeks instrukcji symbolicznych dla początkujących). To doskonały przykład proceduralnego języka programowania. Nawet moją pierwszą próbą programowania było użycie BASIC na Amstrad CPC-64. Każda linia zaczyna się od numeru linii, po której następuje prosta instrukcja w języku czytelnym dla człowieka.
Ponieważ języki proceduralne stosują się do poleceń jeden po drugim, ludziom łatwo jest podążać za tym, co dzieje się w programie. Jednak trudno jest również zrobić cokolwiek poza prostym ćwiczeniem edukacyjnym - co prowadzi nas do stworzenia programowania obiektowego.
Obiektowy?
W programowaniu obiektowym chodzi o zgrupowanie powiązanych zmiennych i funkcji w jeden obiekt, który reprezentuje pewną złożoną strukturę danych. Ten obiekt może być następnie wielokrotnie użyty lub rozszerzony, aby stać się czymś jeszcze bardziej złożonym.
Na przykład gra może mieć obiekt gracza. Każdy obiekt gracza w grze reprezentuje pojedynczego, unikalnego gracza w naszej wyimaginowanej grze online dla wielu graczy. Każdy obiekt gracza ma pseudonim, bieżącą lokalizację, ekwipunek i szybkość ruchu. Mimo że każdy gracz jest wyjątkowy, nadal chcemy, aby miał tę samą funkcjonalność na poziomie podstawowym. Każdy gracz może mieć ruszaj się funkcja, która powoduje, że gracz przesuwa się do przodu o X kwadratów. Każdy gracz może mieć inną szybkość ruchu, ale gdy powiemy graczowi, aby wykonał jedno polecenie, będzie wiedział, jak reagować zgodnie z własną mechaniką internetową.
Dlaczego to jest przydatne? Biorąc przykład bardziej z życia - ponieważ nowoczesne graficzne interfejsy użytkownika byłyby niemożliwe bez obiektów - wszystkie systemy operacyjne zapewniają obiekt Window. Dlatego łatwo jest mieć nowy “okno” w komplecie z przyciskami zamykającymi i pełnoekranowymi oraz możliwością przemieszczania się - bez konieczności samodzielnego programowania. Wszystko, co musisz zrobić, to powiedzieć utwórz okno.
W rzeczywistości nowoczesne oprogramowanie składa się z tysięcy obiektów - nie tylko okien, ale przycisków i pól formularzy, a także okien alarmowych (które same są specjalnym rodzajem obiektu okien) - i to tylko sposób ich rozmieszczenia i logiki interakcji między nimi, co odróżnia to oprogramowanie od innych. Oznacza to, że programiści i projektanci oprogramowania mogą skoncentrować się na tworzeniu podstawowych mechanizmów swojego programu bez konieczności ponownego wymyślania koła za każdym razem.
Kolejną zaletą projektowania obiektowego jest to, że funkcjonalność jest oddzielona i niewidoczna dla siebie. Więc kiedy gracz naciska klawisz przewijania w naszej grze, to on połączenia funkcja ruchu w obiekt gracza. Jeśli dokonamy niewielkiej zmiany w tym, jak dokładnie ten ruch jest precyzyjnie wykonywany w obiekcie gracza - na przykład skacząc zamiast chodzić - nie musimy dostosowywać detektora klawiatury. Nadal wzywa “ruszaj się” niezależnie od tego, co dzieje się wewnętrznie w obiekcie gracza - dzięki czemu możemy zmienić funkcjonalność bez niszczenia wszystkiego innego.
To samo dotyczy systemów operacyjnych - jeśli użytkownik nagle zdecyduje się zmienić kolor okna na czerwony, wówczas nie trzeba tego wykrywać, a okno również czerwony - wszystko jest wbudowane w obiekt okna.
Dziedzictwo
Kiedy już mamy obiekty, możemy je również rozszerzać i dziedziczyć, aby tworzyć bardziej przydatne obiekty o różnych zachowaniach lub dodatkowej funkcjonalności. ty mogą wynaleźć koło na nowo - jeśli chcesz. W naszym przykładzie odtwarzacza być może chcemy utworzyć “nadczłowiek” obiekt. Superman nadal jest graczem, tak samo jak wszyscy inni - chce też pseudonimu i chce być wymieniony na tych samych tablicach liderów graczy - ale zamiast standardowej akcji ruchu, która prowadzi obiekt gracza X do przodu, chcemy, aby zamiast tego lataj - przesuwając 10 kwadratów naraz nad obiektami na drodze. Rozszerzając podstawowy obiekt odtwarzacza, możemy “dziedziczyć” wszystkie te przydatne funkcje bez konieczności przepisywania wszystkiego od nowa - ale nadal możemy “nadpisanie” funkcja ruchu dzięki naszemu specjalnemu ruchowi latającemu nadczłowiekowi!
Programowanie obiektowe jest absolutnym odkryciem, jeśli kiedykolwiek doświadczyłeś programowania proceduralnego, a ja osobiście uważam za wstyd, że prosty rodzaj języka OOP nie jest nauczany w gimnazjum.
Ostatnia sprawa: języki programowania oparte na logice
Są to dla mnie szczególnie interesujące, ponieważ są najbardziej przydatne do wszystkiego, co dotyczy Sztucznej Inteligencji. Logiczne języki programowania, takie jak Prolog, nie używają poleceń i instrukcji w tradycyjnym znaczeniu. Zamiast tego rozwiążą problem, biorąc pod uwagę zestaw zasad i warunków.
Pomyśl o przyjęciu, które organizujesz dla swojej rodziny. Twoja ciocia nie może usiąść obok wuja, ponieważ będą się kłócić; nie chcesz, aby dwoje dzieci siedziało razem, ponieważ będą małymi draniami; na pewno nie chcesz siedzieć między dwojgiem dzieci. To już wszystko - tak napisał twój program Prolog. Teraz wystarczy podać listę dzieci i dorosłych, którzy przyjdą na przyjęcie, a wyświetli listę możliwych propozycji miejsc!
Mam nadzieję, że podobało Ci się to wprowadzenie do koncepcji programowania dla początkujących. Przepraszam, że nie mogłem zagłębić się w szczegóły i oczywiście jest milion rzeczy, których nie dotknąłem. Jeśli chcesz dowiedzieć się więcej, daj mi znać w komentarzach. Być może moglibyśmy zrobić serię samouczków programowania obiektowego dla początkujących dla różnych języków, jeśli istnieje wystarczające zainteresowanie? Koniecznie sprawdź też nasze archiwa związane z programowaniem, zawierające różne narzędzia i strony internetowe z programowaniem.
Zdjęcie: ShutterStock