programowanie współbieżne wykład 8 podstawy …programowanie obiektowe •programowanie...

27
Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska

Upload: others

Post on 20-Jan-2021

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Programowanie współbieżneWykład 8

Podstawy programowania obiektowego

Iwona Kochaoska

Page 2: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Programowanie Obiektowe

• Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych, która definiuje programy za pomocą obiektów – elementów łączących:

– stan (dane = atrybuty),

– zachowanie (procedury = metody).

• Program obiektowy to zbiór obiektów komunikujących się pomiędzy sobą w celu wykonywania zadao.

• Podejście to różni się od tradycyjnego programowania proceduralnego, gdzie dane i procedury nie są ze sobą bezpośrednio związane.

Page 3: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Cechy obiektowych języków programowania

https://www.c-sharpcorner.com/UploadFile/d0a1c8/object-oriented-programming-in-C-Sharp-net/

Page 4: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Cechy obiektowych języków programowania

• Abstrakcja - każdy obiekt w systemie służy jako model abstrakcyjnego "wykonawcy", który może wykonywad pracę, opisywad i zmieniad swój stan, oraz komunikowad się z innymi obiektami w systemie, bez ujawniania, w jaki sposób zaimplementowano dane cechy.

• Enkapsulacja (hermetyzacja) - ukrywanie implementacji. Zapewnia, że obiekt nie może zmieniad stanu wewnętrznego innych obiektów w nieoczekiwany sposób. Tylko wewnętrzne metody obiektu są uprawnione do zmiany jego stanu.

Page 5: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Cechy obiektowych języków programowania

• Polimorfizm - referencje i kolekcje obiektów mogą dotyczyd obiektów różnego typu, a wywołanie metody dla referencji powoduje 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 6: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Cechy obiektowych języków programowania

• Dziedziczenie - porządkuje i wspomaga polimorfizm i enkapsulację dzięki umożliwieniu definiowania i tworzenia specjalizowanych obiektów na podstawie bardziej ogólnych.

Page 7: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Pojęcia klasy i obiektu• Obiekt - podstawowe pojęcie wchodzące w skład

paradygmatu obiektowości w analizie i projektowaniu oprogramowania oraz w programowaniu. – struktura zawierająca dane i metody klasy, czyli funkcje

służące do wykonywania na tych danych określonych zadao.

• Każdy obiekt ma trzy cechy: – tożsamośd, czyli cechę (atrybuty) 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 8: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Pojęcia klasy i obiektu

• Klasa - zbiór obiektów wyróżniających się wspólnymi cechami takimi jak struktura i zachowanie; częściowa lub całkowita definicja dla obiektów

• Klasa to zdefiniowanie własnego typu danych -wymyślony na potrzeby danego programu.

Page 9: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Składniki klasy

Deklaracja klasy informuję kompilator:• o tym, co oznacza nazwa klasy,• jakie pola zawiera klasa (jakie informacje przechowuje),• jakie metody zawiera klasa (co potrafi robid).

Page 10: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Tworzenie obiektów

Obiekt to indywidualne wystąpienie klasy.

Definiowanie nowego obiektu wygląda tak samo, jak

definiowanie zwykłej zmiennej.

Do usuwania obiektu służy polecenie delete ( detelet obiekt )

Page 11: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Definicje metod składowych klasy

• Wewnątrz klasy • Na zewnątrz klasy

Page 12: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Enkapsulacja – sposoby ukrywania informacji

Elementy klasy mogą byd:

• prywatne (private) - składniki klasy dostępne są tylko i wyłącznie w klasie i poprzez funkcje składowe klasy.

• publiczne (public)- składniki klasy dostępne zarówno dla funkcji składowych klasy jak również poza klasą.

• chronione (protected) - składniki klasy nie dostępne poza klasą, jednak dostępne dla klas pochodnych.

Domyślnie wszystkie pola i metody klasy są prywatne !

Page 13: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Enkapsulacja – sposoby ukrywania informacji

• Jeśli składnik klasy jest prywatny, żadna funkcja oraz metoda nie należąca do klasy nie ma do niego dostępu!

Page 14: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Dostęp do danych i metod składowych klasy

• obiekt - do danej składowej klasy można odwoład się poprzez operator . obiekt.skladnikobiekt.metoda()

• wskaźnik - do danej składowej obiektu wskazanego przez wskaźnik można odwoład się poprzez operator -> wskaznik -> skladnik wskaznik -> metoda()

• referencja - do danej składowej obiektu znanego z referencji można odwoład się poprzez operator . referencja.skladnikreferencja.metoda()

Page 15: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Dostęp do danych i metod składowych klasy - przykład

Page 16: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Dostęp do danych i metod składowych klasy

• Jak najwięcej elementów klasy powinno byd prywatnych !

• Do elementów prywatnych klasy mamy dostęp za pomocą tzw. metod dostępu.

Page 17: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Dostęp do danych i metod składowych klasy

• Zwykle metody dostępu zaczynają się od słów „get” i „set”

Page 18: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Konstruktor i destruktor• Konstruktor – służy do inicjalizowania zmiennych

wewnętrznych klasy– ma taką samą nazwę jak nazwa klasy

– nie zwraca żadnej wartości (jest typu void)

• Destruktor – służy do zwalniania miejsca w pamięci zarezerwowanego dla obiektu– nazwa = ‘~’ + nazwa klasy

• Jeżeli nie deklarujemy konstruktora klasy, to kompilator automatycznie tworzy konstruktor domyślny, który nie pobiera żadnych parametrów.

• Analogicznie, jeżeli nie zadeklarujemy sami destruktora, to kompilator zrobi to za nas.

Page 19: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Konstruktor i destruktor - przykład

Page 20: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Wskaźnik this

• Wskaźnik this wskazuje na obiekt, dla którego została wywołana metoda.

• Wskaźnika this nie można modyfikować.

• Prawie zawsze użycie delete na this jest poważnym błędem

Page 21: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Wskaźnik this

Page 22: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Wskaźnik this – porównywanie obiektów

Page 23: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Dziedziczenie klas

• Dziedziczenie to mechanizm umożliwiający wykorzystanie nowych klas w oparciu o stare klasy.

• Dzięki mechanizmowi rzutowania możliwe jest interpretowanie obiektu klasy tak, jakby był obiektem klasy z której się wywodzi.

• Umożliwia to skonstruowanie szeregu klas wywodzących się z tej samej klasy i korzystanie w przejrzysty i spójny sposób z ich wspólnych możliwości.

Page 24: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Dziedziczenie klas• Klasa bazowa – klasa, z której dziedziczy klasa pochodna• Klasa pochodna – klasa, która dziedziczy po klasie bazowej• Klasa pochodna może korzystad z funkcjonalności klasy bazowej i z

założenia powinna rozszerzad jej możliwości (poprzez dodanie nowych metod, lub modyfikację metod klasy bazowej).

http://www.egrafik.pl/kurs-c-plus-plus/7.1.php

Page 25: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Dziedziczenie klasSkładnia:

operator_widoczności:• public - oznacza, że dziedziczone elementy (np. zmienne lub funkcje) mają taką widocznośd jak w

klasie bazowej.public -> publicprotected -> protectedprivate -> private

• Protected - oznacza, że dziedziczone elementy publiczne zmieniają się w chronione:public -> protectedprotected -> protectedprivate -> private

• private - oznacza, że wszystkie elementy klasy bazowej zmieniają się w prywatne:public -> privateprotected -> privateprivate -> private

• brak operatora - oznacza, że domyślnie zostanie wybrany operator private.

Page 26: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Dziedziczenie klas

Page 27: Programowanie współbieżne Wykład 8 Podstawy …Programowanie Obiektowe •Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Literatura

• Bruce Eckel, „Thinking in C++”, Helion