Programowanie obiektowe w C++ Flashcards
(10 cards)
Język C++ – paradygmaty programowania obiektowego.
C++ jest językiem programowania, który umożliwia programowanie zarówno w paradygmacie obiektowym, jak i proceduralnym.
Paradygmat obiektowy polega na tworzeniu programu za pomocą obiektów, które reprezentują rzeczywiste elementy z otaczającego nas świata. Każdy obiekt posiada pewien zestaw cech (zwane atrybutami) oraz zachowań (zwane metodami). Obiekty współdziałają ze sobą poprzez wywoływanie swoich metod i korzystanie z ich atrybutów.
Język C++ umożliwia tworzenie obiektów za pomocą klas. Klasa jest szablonem, z którego możemy tworzyć konkretne obiekty. Każda klasa zawiera opis atrybutów i metod swoich obiektów. W C++ możemy również tworzyć relacje pomiędzy klasami, takie jak dziedziczenie i kompozycja.
Paradygmat obiektowy jest szczególnie przydatny w programowaniu dużych i złożonych projektów, ponieważ umożliwia on lepsze zorganizowanie kodu i łatwiejsze jego rozszerzanie i utrzymanie.
Przeciążanie operatorów, wskaźnik this, referencje.
> Przeciążanie operatorów to możliwość zdefiniowania nowych zachowań dla operatorów już istniejących w języku. Na przykład możemy zdefiniować, jak ma działać operator dodawania dla dwóch obiektów naszej klasy. Przeciążenie operatorów jest szczególnie przydatne w przypadku klas, które reprezentują pewne pojęcia matematyczne lub logiczne.Wskaźnik this
to specjalny wskaźnik, który wskazuje na obiekt, w którym jest używany. Możemy używać go w metodach naszej klasy, aby odwołać się do atrybutów lub metod tego obiektu.Referencja to zmienna, która jest “aliasem” do innej zmiennej lub obiektu. Możemy ją utworzyć za pomocą operatora &
. Referencja działa jak zwykła zmienna, ale jest zawsze “podpięta” do zmiennej lub obiektu, do którego została utworzona. Używamy referencji, aby uniknąć kopiowania dużych obiektów lub w przypadku, gdy chcemy mieć bezpośredni dostęp do obiektu.Wskaźnik this
i referencje są szczególnie przydatne w konstruktorach i operatorach przeciążających, gdzie często chcemy odwołać się do obiektu, w którym są one używane.
Funkcje i klasy wirtualne.
Funkcja wirtualna to funkcja, która jest oznaczona jako “wirtualna” w klasie bazowej, a następnie może być nadpisana (przesłonięta) w klasach pochodnych. Funkcja wirtualna jest wywoływana w sposób dynamiczny, co oznacza, że w momencie wywołania, kompilator decyduje, która z funkcji wirtualnych zostanie wywołana.
Klasa wirtualna to klasa, która zawiera co najmniej jedną funkcję wirtualną. Klasa wirtualna jest szczególnie przydatna, gdy chcemy stworzyć hierarchię klas, w której chcemy mieć możliwość nadpisywania (przesłaniania) pewnych funkcji w klasach pochodnych.
Funkcje wirtualne i klasy wirtualne są szczególnie przydatne w programowaniu obiektowym, ponieważ umożliwiają one tworzenie polimorfizmu, czyli możliwości wywoływania różnych implementacji tej samej funkcji w zależności od typu obiektu. Jest to szczególnie przydatne w przypadku, gdy mamy do czynienia z dużymi hierarchiami klas i chcemy mieć możliwość dostosowywania zachowań poszczególnych klas do swoich potrzeb.
System wejścia-wyjścia, mechanizmy formatowania.
> System wejścia-wyjścia (I/O) to mechanizm służący do wymiany danych pomiędzy programem a urządzeniami zewnętrznymi, takimi jak pliki, konsola, drukarka itp. W języku C++ mamy do dyspozycji standardowy system wejścia-wyjścia (stdio), który umożliwia nam m.in. czytanie danych z plików i wyświetlanie ich na konsoli oraz pobieranie danych od użytkownika z klawiatury i zapisywanie ich do plików.Mechanizmy formatowania to narzędzia służące do prezentowania danych w odpowiedni sposób. W języku C++ mamy do dyspozycji specjalne znaki formatujące, które pozwalają nam sformatować wyjście programu, takie jak wyświetlenie liczb z określoną liczbą miejsc po przecinku czy wyświetlenie tekstu z określoną szerokością. Możemy również używać klas takich jak std::stringstream
lub std::printf
, aby sformatować dane wejściowe lub wyjściowe.
Dynamiczna alokacja pamięci, statyczne elementy klas.
> Dynamiczna alokacja pamięci to mechanizm pozwalający na alokowanie pamięci w czasie wykonywania programu. W języku C++ możemy używać funkcji new
i delete
, aby alokować i zwalniać pamięć dynamicznie. Alokacja pamięci dynamicznej jest szczególnie przydatna, gdy nie wiemy z góry, ile pamięci będziemy potrzebować lub gdy chcemy zapewnić elastyczność naszemu programowi.Elementy statyczne to elementy, które są wspólne dla wszystkich obiektów danej klasy. Elementy statyczne są alokowane w momencie uruchomienia programu i są dostępne do momentu jego zakończenia. Możemy stworzyć element statyczny za pomocą słowa kluczowego static
. Elementy statyczne są szczególnie przydatne, gdy chcemy utworzyć coś, co jest wspólne dla wszystkich obiektów danej klasy, ale nie chcemy, aby było to zależne od konkretnych obiektów.
Szablony funkcji i klas, przestrzenie nazw.
> Szablony funkcji i klas to mechanizm pozwalający na tworzenie “ogólnych” elementów programu, które mogą być używane dla różnych typów danych. Szablony umożliwiają nam tworzenie kodu, który jest uniwersalny i może być używany z różnymi typami danych bez konieczności tworzenia wielu różnych wersji tego samego kodu.Przestrzenie nazw to mechanizm pozwalający na “oddzielenie” elementów naszego programu od siebie. Możemy stworzyć przestrzeń nazw za pomocą słowa kluczowego namespace
. Przestrzenie nazw są szczególnie przydatne w dużych projektach, gdzie mamy do czynienia z dużą liczbą klas i funkcji o podobnych nazwach. Dzięki przestrzeniom nazw możemy uniknąć konfliktów nazw i lepiej zorganizować nasz kod.
Wyjątki i ich obsługa.
Wyjątki to specjalne obiekty, które służą do obsługi sytuacji awaryjnych w naszym programie. Możemy “rzucić” (throw) wyjątek w momencie, gdy wystąpi jakiś błąd lub nieoczekiwana sytuacja, a następnie “złapać” (catch) ten wyjątek i odpowiednio na niego zareagować.
Obsługa wyjątków polega na umieszczeniu kodu, który może “rzucić” wyjątek, w bloku try, a następnie umieszczeniu kodu, który ma reagować na wyjątek, w bloku catch. Możemy również umieścić kod, który ma być wykonany po zakończeniu bloku try-catch, w bloku finally.
Wyjątki są szczególnie przydatne w przypadku, gdy chcemy obsługiwać błędy lub nieoczekiwane sytuacje w sposób bardziej elastyczny niż za pomocą zwracania kodów błędów. Pozwalają one również uniknąć rozprzestrzeniania się błędów poprzez nasz kod i umożliwiają lepsze zorganizowanie obsługi błędów.
Klasa string – łańcuchy znakowe w stylu C++, standardowa biblioteka szablonów
> Klasa string
jest klasą służącą do przechowywania i manipulowania łańcuchami znaków w języku C++. Klasa string
jest częścią standardowej biblioteki szablonów (STL) i jest zoptymalizowana pod kątem wydajności oraz użyteczności.Klasa string
posiada wiele przydatnych metod i operatorów, takich jak możliwość łączenia łańcuchów za pomocą operatora +
, wyszukiwanie podłańcucha za pomocą metody find
, zamienianie wszystkich znaków na małe lub duże litery za pomocą metod tolower
i toupper
itp.Klasa string
jest szczególnie przydatna w przypadku, gdy chcemy pracować z dużymi ilościami tekstu lub gdy potrzebujemy szybkiej i wygodnej obsługi łańcuchów znaków. Warto pamiętać, że klasa string
jest niezgodna ze starej biblioteki wejścia-wyjścia (stdio), więc jeśli chcemy korzystać z klasy string
razem z funkcjami stdio, musimy używać specjalnych funkcji takich jak std::getline
lub std::printf
z odpowiednimi specjalnymi znakami formatującymi.
Wizualne biblioteki obiektowe, VCL, .NET, Qt.
> Wizualne biblioteki obiektowe to biblioteki, które umożliwiają nam tworzenie aplikacji z interfejsem graficznym (GUI). Wizualne biblioteki obiektowe zapewniają gotowe komponenty (takie jak przyciski, listy, pola tekstowe itp.), które możemy użyć do stworzenia interfejsu użytkownika naszej aplikacji.
VCL (Visual Component Library) to wizualna biblioteka obiektowa stworzona przez firmę Borland do użytku z jej środowiskiem programistycznym Delphi. VCL umożliwia tworzenie aplikacji Windows za pomocą gotowych komponentów i narzędzi do projektowania interfejsu użytkownika.
.NET (ang. dot net) to platforma programistyczna stworzona przez firmę Microsoft, która umożliwia tworzenie aplikacji dla różnych systemów operacyjnych za pomocą jednego zestawu narzędzi i języków programowania. .NET zawiera wiele różnych bibliotek i narzędzi, w tym wizualną bibliotekę obiektową o nazwie WPF (Windows Presentation Foundation), która umożliwia tworzenie aplikacji Windows z bogatym interfejsem użytkownika.
Qt (ang. cute) to wizualna biblioteka obiektowa stworzona przez firmę Trolltech (obecnie Qt Company). Qt umożliwia tworzenie aplikacji dla różnych systemów operacyjnych, w tym Windows, Linux, macOS, Android i iOS, za pomocą jednego zestawu narzędzi i języków programowania.
>
10. Metody tworzenia aplikacji wizualnych z wykorzystaniem biblioteki Qt
Metody tworzenia aplikacji wizualnych z wykorzystaniem biblioteki Qt
> Tworzenie aplikacji wizualnych z wykorzystaniem biblioteki Qt może być realizowane za pomocą kilku różnych metod:
- Tworzenie aplikacji za pomocą interfejsu programistycznego Qt Creator. Qt Creator to środowisko programistyczne stworzone przez Qt Company, które umożliwia tworzenie aplikacji za pomocą interfejsu graficznego. Qt Creator posiada wiele przydatnych narzędzi, takich jak edytor kodu, projektant interfejsu użytkownika i debugger, które ułatwiają tworzenie aplikacji.
- Tworzenie aplikacji za pomocą kodu. Możemy również tworzyć aplikacje za pomocą kodu, używając języka programowania C++ i odpowiednich klas i funkcji z biblioteki Qt. Ta metoda jest szczególnie przydatna dla programistów, którzy chcą mieć pełną kontrolę nad swoimi aplikacjami i chcą dostosować je do swoich potrzeb.
- Tworzenie aplikacji za pomocą interfejsu programistycznego innych bibliotek, takich jak wizualna biblioteka obiektowa .NET