1. 1
Programowanie obiektowe
Projekt z Informatyki i systemów informatycznych
Wyższa Szkoła Techniczno-Ekonomiczna
w Szczecinie
Edukacja Techniczno-Informatyczna semestr II
Autor:
Jacek Wściubiak
2. 2
Wprowadzenie
Programowanie obiektowe (ang. object-
oriented programming) jest obecnie
najpopularniejszą techniką tworzenia
programów komputerowych.
Program komputerowy wyraża się jako
zbiór obiektów będących bytami łączącymi
stan (czyli dane) i zachowanie (czyli
metody, które są procedurami operującymi
na danych obiektu).
3. 3
Programowanie strukturalne
i obiektowe
W porównaniu z tradycyjnym
programowaniem strukturalnym, w
którym dane i procedury nie są ze
sobą powiązane, programowanie
obiektowe ułatwia tworzenie dużych
systemów, współpracę wielu
programistów i ponowne
wykorzystywanie istniejącego kodu.
6. 6
Abstrakcja
Każdy obiekt w systemie służy jako model
abstrakcyjnego "wykonawcy", który może
wykonywać pracę, opisywać i zmieniać swój
stan oraz komunikować się z innymi
obiektami w systemie bez ujawniania, w
jaki sposób zaimplementowano dane cechy.
Procesy, funkcje lub metody mogą być
również abstrahowane, a kiedy tak się
dzieje, konieczne są rozmaite techniki
rozszerzania abstrakcji.
7. 7
Hermetyzacja
Czyli ukrywanie implementacji,
enkapsulacja. Zapewnia, że obiekt nie
może zmieniać stanu wewnętrznego innych
obiektów w nieoczekiwany sposób. Tylko
własne metody obiektu są uprawnione do
zmiany jego stanu. Każdy typ obiektu
prezentuje innym obiektom swój interfejs,
który określa dopuszczalne metody
współpracy. Pewne języki osłabiają to
założenie, dopuszczając pewien poziom
bezpośredniego (kontrolowanego) dostępu
do "wnętrzności" obiektu. Ograniczają w
ten sposób poziom abstrakcji.
8. 8
Polimorfizm
Referencje i kolekcje obiektów mogą
dotyczyć obiektów różnego typu, a
wywołanie metody dla referencji spowoduje
zachowanie odpowiednie dla pełnego typu
obiektu wywoływanego. Jeśli dzieje się to w
czasie działania programu, to nazywa się to
późnym wiązaniem lub wiązaniem
dynamicznym. Niektóre języki udostępniają
bardziej statyczne (w trakcie kompilacji)
rozwiązania polimorfizmu – na przykład
szablony i przeciążanie operatorów w C++.
9. 9
Dziedziczenie
Porządkuje i wspomaga polimorfizm i
enkapsulację dzięki umożliwieniu
definiowania i tworzenia specjalizowanych
obiektów na podstawie bardziej ogólnych.
Dla obiektów specjalizowanych nie trzeba
redefiniować całej funkcjonalności, lecz
tylko tę, której nie ma obiekt ogólniejszy.
W typowym przypadku powstają grupy
obiektów zwane klasami, oraz grupy klas
zwane drzewami. Odzwierciedlają one
wspólne cechy obiektów.
10. 10
Czym jest klasa?
Klasa jest to zbiór zmiennych i metod,
które są ze sobą logicznie powiązane. Klasy
często przypominają czarne skrzynki, które
potrafią zrealizować określone zadania.
Zadania te można wykonywać zazwyczaj
tylko i wyłącznie poprzez wywoływanie
metod, które należą do obiektu. Klasa tylko
i wyłącznie określa jakie zmienne i metody
są w niej dostępne oraz określa ich
działanie. Można powiedzieć, że klasa jest
to własny typ danych o złożonej budowie i
tak należy rozumieć znaczenie tego słowa.
11. 11
Czym jest obiekt?
Jest to struktura zawierająca:
dane
metody, czyli funkcje służące do wykonywania
na tych danych określonych zadań
Każdy obiekt ma trzy cechy:
tożsamość, czyli cechę umożliwiającą jego
identyfikację i odróżnienie od innych obiektów;
stan, czyli aktualny stan danych składowych;
zachowanie (ang. behaviour), czyli zestaw
metod wykonujących operacje na tych danych.
12. 12
Czym jest metoda?
Metodami nazywamy funkcje, które
należą do obiektu. Tak więc zdanie:
'wywołaj metodę c_str() należącą do
klasy std::string', oznaczać będzie,
że trzeba posiadać najpierw obiekt
typu std::string, a następnie na
podanym obiekcie wywołać metodę o
podanej nazwie.
13. 13
Konstruktory i destruktory
Konstruktory i destruktory – są to specjalne metody
wywoływane podczas tworzenia obiektu oraz jego
usuwania.
konstruktor nie może posiadać definicji zwracanego
typu
konstruktor bez żadnych argumentów jest
konstruktorem domyślnym
nazwa destruktora musi być poprzedzona znakiem
tyldy
destruktor nie posiada definicji typu zwracanego oraz
nie przyjmuje żadnych argumentów
nazwy konstruktora i destruktora muszą być zgodne z
nazwą klasy
konstruktor i destruktor muszą być zadeklarowane w
części publicznej klasy
14. 14
Przykład
Obiekt: samochód
Metody: dodaj gazu, hamuj, włącz światła, itp...
Abstrakcja: tablica rozdzielcza wyświetla dane o
samochodzie nie
ujawniając szczegółów swojej budowy.
Enkapsulacja: nawigacja w samochodzie odczytuje dane
z (obiektu) satelity nawigacyjnego nie zmieniając stanu
tego satelity.
Polimorfizm: naciśnięcie pedału gazu powoduje reakcję
różnych obiektów powiązanych (pompy wtryskowej, silnika,
itp...)
Dziedziczenie: Chcąc zdefiniować obiekt SAMOCHÓD
możemy skorzystać (odziedziczyć) cechy innych (wcześniej
zdefiniowanych) obiektów, jak: silnik, koło, żarówka itp.