14
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

Programowanie obiektowe

Embed Size (px)

Citation preview

Page 1: Programowanie obiektowe

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

Page 2: Programowanie obiektowe

2

WprowadzenieProgramowanie 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).

Page 3: Programowanie obiektowe

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.

Page 4: Programowanie obiektowe

4

Przykładowe języki programowania obiektowego

C++ Java JavaScript Object Pascal Perl PHP Python VBScript

Page 5: Programowanie obiektowe

5

Podstawowe założenia programowania obiektowego

Abstrakcja

Hermetyzacja

Polimorfizm

Dziedziczenie

Page 6: Programowanie obiektowe

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.

Page 7: Programowanie obiektowe

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.

Page 8: Programowanie obiektowe

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++.

Page 9: Programowanie obiektowe

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.

Page 10: Programowanie obiektowe

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.

Page 11: Programowanie obiektowe

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.

Page 12: Programowanie obiektowe

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.

Page 13: Programowanie obiektowe

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

Page 14: Programowanie obiektowe

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.