Języki programowania z programowaniem obiektowym

Transkrypt

Języki programowania z programowaniem obiektowym
Instytut Mechaniki i Inżynierii Obliczeniowej
www.imio.polsl.pl
fb.com/imiopolsl
@imiopolsl
Wydział Mechaniczny Technologiczny
Politechnika Śląska
Języki programowania
z programowaniem obiektowym
Laboratorium 11:
Klasy – podstawy: definiowanie klas, dostęp do
składników klasy, programy złożone
z wielu plików.
Opracowali:
dr hab. inż. Witold Beluch
[email protected]
dr inż. Jacek Ptaszny
[email protected]
Gliwice 2016
Języki programowania z programowaniem obiektowym. Laboratorium 11
1
1. Definiowanie klas
W języku C++ można tworzyć własne typy danych w postaci klas (i struktur). Na ich bazie można tworzyć
obiekty własnych typów.
Można stworzyć np. klasę Telewizor. Klasę tę opisuje:
- zestaw wartości (dane składowe), np.: model, przekątna.
- zestaw możliwych zachowań (funkcje składowe), np.: zmien_program(), ustaw_glosnosc().
Klasę definiuje się za pomocą słowa kluczowego class po którym następuje jej nazwa, np.:
Obiekty danej klasy tworzy się podając nazwę klasy i nazwę obiektu:
czyli analogicznie, jak dla typów wbudowanych:
Sama deklaracja klasy (czasami przydatna jest tzw. deklaracja zapowiadająca) ma postać:
Definicja klasy nie skutkuje rezerwacją pamięci (w końcu klasa to tylko typ obiektu...). Dopiero definicja
obiektu rezerwuje miejsce w pamięci na ten obiekt.
Dla każdego obiektu danej klasy tworzony jest osobny zestaw danych składowych, natomiast funkcje składowe są w pamięci jednokrotnie dla wszystkich obiektów danej klasy.
W definicji klasy dane składowe nie mogą być inicjalizowane. Mogą im być nadawane wartości za pomocą
funkcji składowych klasy, (np. funkcji ustaw()) lub konstruktora klasy (o tym przy innej okazji...).
Funkcje składowe wywołuje się na rzecz konkretnego obiektu klasy, np.:
Funkcje składowe mają pełny dostęp do wszystkich składników swojej klasy, tj. do danych (mogą z nich
korzystać i je modyfikować) i do innych funkcji składowych (mogą je wywoływać). Funkcje składowe klasy
można definiować:
— na zewnątrz definicji klasy (zazwyczaj) – wówczas należy skorzystać z operatora zasięgu :: by określić
klasę, do której należy funkcja np. funkcja zmien_przerzutke_tyl() w przykładzie 1.
— wewnątrz definicji klasy – wówczas stają się funkcjami inline – zatem ten wariant należy stosować jedynie
przy krótkich funkcjach - np. funkcje drukuj() i przypisz() w przykładzie 2.
Języki programowania z programowaniem obiektowym. Laboratorium 11
2
Przykład 1:
2. Dostęp do składowych klasy
Do określania dostępu do składowych klasy służą etykiety:
— Etykieta private – oznacza, że dane i funkcje deklarowane za nią są dostępne tylko wewnątrz klasy (zatem
do danych prywatnych klasy mają dostęp tylko funkcje składowe tej klasy).
— Etykieta public – oznacza, że dane i funkcje deklarowane za nią są dostępne zarówno z wnętrza klasy, jak
i spoza klasy.
— Etykieta protected – składniki określone w ten sposób są dostępne tak, jak składniki prywatne, ale są
również dostępne dla klas wywodzących się od danej klasy (o tym przy innej okazji...).
Domyślnie (dopóki nie wystąpi żadna etykieta) wszystkie składniki klasy są prywatne.
Np.:
Języki programowania z programowaniem obiektowym. Laboratorium 11
3
Przykład 2:
3. Programy obiektowe złożone z wielu plików
Dlaczego każda klasa powinna być zdefiniowana w osobnym pliku nagłówkowym?
— Zmiana w kodzie jednego z plików składowych projektu skutkuje koniecznością kompilacji wyłącznie tego
pliku.
— Stworzona klasa może być wykorzystywana w wielu różnych programach.
Strażnik nagłówka to zestaw dyrektyw preprocesora (kompilacja warunkowa) chroniących użytkowników
klasy przed omyłkowym dwukrotnym włączeniem tego samego pliku nagłówkowego, np.:
Języki programowania z programowaniem obiektowym. Laboratorium 11
Przykład 3:
Czy
wiesz,
że...
Na Śląsku działa ponad 50 zakładów związanych
z branżą motoryzacyjną. Wybrane zakłady posiadają
własne biura konstrukcyjne oraz laboratoria, i są Twoimi potencjalnymi pracodawcami. Jeśli chcesz zwiedzić
jeden z takich zakładów, skontaktuj się z opiekunami
Studenckiego Koła Naukowego Metod Komputerowych.
(Obraz: www.trw.pl)
4

Podobne dokumenty