Polimorfizm

Polimorfizm jest ogromną zaletą programowania obiektowego, daje on programiście możliwość elastycznego zarządzania obiektami w trakcie pisania programu. Polimorfizm jest powiązany z metodami wirtualnymi. Złe zrozumienie i co za tym idzie niewłaściwe operowanie mechanizmem polimorfizmu może skutkować nietypowymi błędami, trudnymi do diagnostyki problemami, a w najlepszym przypadku być przyczyną znacznego spowolnienia działania programu. Przykładem polimorfizmu jest poniższy kod: Kod powyższy Dowiedz się więcej…

Dziedziczenie jedno i wielobazowe.

Czym jest dziedziczenie i po co to komu?! Ten mechanizm jest bardzo przydatny przy programowaniu obiektowym. Co więcej jest wręcz wymarzony przy rozwijaniu oprogramowania. Pozwala na tworzenie nowych klas i obiektów bez kopiowania treści obiektów poprzednich. No może nie do końca bez kopiowania, ale … programista nie musi “przeklejać” kodu do nowych struktur. Tym zajmie się właśnie mechanizm dziedziczenia. Przykładem samego dziedziczenia może być poniższy Dowiedz się więcej…

Podejście obiektowe – konstrukcja obiektu.

Do tej pory programy pisane były w oparciu o jedną strukturę. Tym niemniej obecna filozofia programowania wyróżnia tzw. podejście obiektowe, gdzie program można podzielić na części składowe w postaci obiektów komunikujące się ze sobą w różnorodny sposób. Oby wprowadzić pojęcie obiektu wpierw musimy uzgodnić pojęcie klasy, czyli elementu programistycznego zawierającego w sobie definicje zmiennych i metod w postaci funkcji czy procedur. Z innej Dowiedz się więcej…

Wskaźniki i zarządzanie pamięcią

Wskaźniki należą do jednych z najważniejszych elementów programowania. Dzięki nim można dużo swobodniej przetwarzać dane i docierać do ukrytych w pamięci struktur w sposób niemożliwy do zrealizowania przy podejściu “klasycznym”. Z jednej strony są łatwe do zrozumienia, jako charakterystyczne zmienne wskazujące na coś w pamięci; z drugiej strony ich poprawne zrozumienie często długo się wymyka początkującym programistom, aż do chwili, gdy przychodzi nagłe olśnienie, a wiele poprzednio Dowiedz się więcej…

Obsługa plików.

Obsługa plików jest na pewnym poziomie pisania programów niezbędna. Język C i C++ umożliwiają dostęp do plików na różny sposób. W niniejszym materiale skupimy się na podejściu strumieniowym z wykorzystaniem dedykowanych temu klas (o klasach więcej będzie w części drugiej – obiektowej). Można wyróżnić trzy klasy posiadające rozbudowane opcje obsługi plików i są to: ofstream: Klasa strumieniowa obsługująca zapisywanie do pliku, ifstream: Klasa Dowiedz się więcej…

Obsługa klawiatury

Trudno wyobrazić sobie aby każdy program mógł kontaktować się z użytkownikiem tylko wypisując komunikaty, ale nie umożliwiając pobrania żadnych danych od niego. Urządzenie terminalowe składa się z dwu elementów – ekranu oraz klawiatury – dlatego naturalnym procesem jest obsługa tejże w celu pobrania danych od użytkownika. W języku C i C++ przewidziano różną filozofię obsługi terminala, w C++ obsługę stanowi dedykowany strumień w kanale Dowiedz się więcej…

Tablice jedno i wielowymiarowe.

Trudno dziś wyobrazić sobie programowanie bez znajomości tych struktur. Czym są tablice?! W najprostszym ujęciu są one strukturą złożoną z wielu elementów tego samego typu. Co to oznacza? Można wyobrazić sobie następującą sytuację, gdy potrzebujemy przechować wartości dla 5 zmiennych typu int w następujący sposób: Osiągnęliśmy zamierzony cel, ale… czy jest to wygodne?! To pokaże następujący przykład: załóżmy, że potrzebujemy wyświetlić wartości tych Dowiedz się więcej…

Pętle i zagrożenia

Trudno wyobrazić sobie program mający 1753 linie kodu podobne do poniższego przykładu: (Chociaż znam studentów… którzy w podobny sposób rozwiązują zadanie na kolokwium) Od razu widać w kodzie pewną prawidłowość, która sprawia, że można podzielić ten kod na bloki w zasadzie identyczne, różniące się jedynie przyrostową wartością zmiennej a. Od razu “prosi się” to o zastanowienie czy istnieje mechanizm ułatwiający takie operacje i optymalizujący kod. Dowiedz się więcej…

C++ ADDENDUM 3: Wartości losowe.

Wartościami losowymi w C/C++ zajmuje się m.in. wbudowany generator liczb pseudolosowych. Aby go użyć należy upewnić się, że dołączamy bibliotekę cstdlib lub po prostu iostream. Generator losuje liczby z zakresu od 0 do RAND_MAX, który to literał jest zdefiniowany w bibliotece cstdlib. Najprostszy program pokazujący użycie generatora pokazany jest poniżej: Kilkukrotne uruchomienie powyższego programu zdradza, że coś jest nie tak – zawsze program podaje Dowiedz się więcej…

TEMAT 5: Wyrażenia warunkowe.

Nader często zachodzi konieczność zbadania jakiegoś zdarzenia występującego w programie, a po tym do odpowiedniej reakcji na nie. Prowadzi to do rozwidleń w działaniu programu, gdzie w zależności od wyników badania danego zdarzenia wykonujemy inny kod programu, a następnie po obsłużeniu tego zdarzenia program realizuje się dalej. If () else… Tego typu obsługa nazywa się obsługą poprzez wyrażenia warunkowe (ang: conditional statements). Dowiedz się więcej…