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

Post on 20-Jan-2021

13 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Programowanie współbieżneWykład 8

Podstawy programowania obiektowego

Iwona Kochaoska

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.

Cechy obiektowych języków programowania

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

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.

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

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.

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.

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.

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

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 )

Definicje metod składowych klasy

• Wewnątrz klasy • Na zewnątrz klasy

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 !

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!

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()

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

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.

Dostęp do danych i metod składowych klasy

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

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.

Konstruktor i destruktor - przykład

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

Wskaźnik this

Wskaźnik this – porównywanie obiektów

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.

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

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.

Dziedziczenie klas

Literatura

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

top related