Docsity
Docsity

Przygotuj się do egzaminów
Przygotuj się do egzaminów

Studiuj dzięki licznym zasobom udostępnionym na Docsity


Otrzymaj punkty, aby pobrać
Otrzymaj punkty, aby pobrać

Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium


Informacje i wskazówki
Informacje i wskazówki

Wprowadzenie do Programowania Obiektowego - Wykład 2: Cechy i Koncepcja, Streszczenia z Programowanie obiektowe

Cechy programowania obiektowego ... Języki programowania z cechami obiektowości to m.in. ... metody, czyli funkcje służące do wykonywania na tych danych.

Typologia: Streszczenia

2022/2023

Załadowany 24.02.2023

Ania870
Ania870 🇵🇱

4.5

(30)

223 dokumenty

1 / 28

Toggle sidebar

Ta strona nie jest widoczna w podglądzie

Nie przegap ważnych części!

bg1
Wstęp do programowania
obiektowego
Wykład 2
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c

Podgląd częściowego tekstu

Pobierz Wprowadzenie do Programowania Obiektowego - Wykład 2: Cechy i Koncepcja i więcej Streszczenia w PDF z Programowanie obiektowe tylko na Docsity!

Wstęp do programowania

obiektowego

Wykład 2

CECHY I KONCEPCJA

PROGRAMOWANIA

OBIEKTOWEGO

 C++ jest językiem zarówno obiektowym, jak i
imperatywnym/strukturalnym/proceduralnym.
 Języki programowania z cechami obiektowości
to m.in.: C#, Java, Object Pascal, Lisp, Ruby,
Python, PHP5.

Koncepcja programowania

obiektowego

 Otaczający nas świat to różnego rodzaju
przedmioty.
 Tworząc program komputerowy dokonujemy
pewnego ich odwzorowania.
 W programowaniu proceduralnym funkcje i
zmienne dotyczące danego przedmiotu nie są ze
sobą logicznie powiązane.
 W programowaniu obiektowym dokonuje się
powiązania metod (funkcji programu) z danymi
(zmiennymi) definiującymi przedmiot.

 Wszystko to grupuje się w klasie zawierającej w jednym miejscu zarówno dane definiowanego przedmiotu, jak i dotyczące go funkcje.

UKRYWANIE IMPLEMENTACJI: HERMETYZACJA (ENKAPSULACJA)

Hermetyzacja

 „Zwykłemu użytkownikowi” niepotrzebna jest znajomość wewnętrznej budowy urządzeń.  Do codziennej obsługi, wystarczą nam udostępnione bezpieczne manipulatory. Mamy dostęp tylko do wybranych metod urządzenia (np. manipulatory telewizora). W ten sposób część (bardziej skomplikowanych) funkcji jest przed nami ukryta.  Analogicznie jest w programowaniu obiektowym: Hermetyzacja (enkapsulacja) - ograniczenie bezpośredniego dostępu do niektórych pól obiektów, ewentualnie umożliwienie ich modyfikacji poprzez metody.

Etykieta dotyczy występujących po niej metod i pól.  Liczba etykiet jest dowolna (mogą się powtarzać).  W przypadku braku etykiety domyślnie jest przypisana sekcja prywatna. class Punkt{ void fun1(){…} //prywatna, bo domyślna protected: int fun2(){ … } int y; private: float fun 3 (){…} int x; public: double fun4(){…} };

Konwencja nazewnictwa get/set/is

Kiedy pole jest zadeklarowane jako prywatne możemy umożliwić :  odczyt wartości pola przez metodę publiczną nazywaną get().  modyfikację wartości pola przez metodę publiczną nazywaną set. class Punkt { private: int x; int y; public: int getx(){return x;} int gety(){return y;} void setx(int xx){x=xx;} void sety(int yy){ if (yy>=0) y=yy;} };

Korzyści z hermetyzacji

 Funkcje getx(), gety(), setx() i sety() znajdują się w

sekcji public i są widoczne poza obiektem klasy. Pola x

i y nie są widoczne poza obiektem klasy, ale jedynie

wewnątrz obiektu (mają do niej dostęp metody klasy,

czyli m.in. nasze funkcje getx(), gety(), setx() i sety() ).

Z tego względu te funkcje stanowią "interfejs"

dostępu do pól obiektu klasy Punkt.

 Daje to nam kontrolę nad zapisem i odczytem do pól

x i y poprzez odpowiednie definicje metod (możemy

sprawdzić, odrzucić czy zabronić modyfikacji pola).

 Standardowe nazwy takich metod ułatwiają czytanie

kodu.

Dwie role programistów PO

• Twórca klas – tworzy biblioteki kodu do

wykorzystania, np. klasy, ich metody i dane

• Programista-klient – używa stworzonego kodu,

czyli gotowych klas: tworzy obiekty, wywołuje

metody itp.

Dobrze jest ukryć przed programistą-klientem

nieistotne dla niego szczegóły implementacji,

które mogłyby być niewłaściwie użyte. W ten

sposób zmniejsza się ryzyko popełnienia przez

niego błędów w używaniu gotowych bibliotek

(klas). Takie postępowanie to właśnie ukrywanie

implementacji (hermetyzacja).

KONSTRUKTORY I

DESTRUKTORY

Geneza

 Przyczyną wielu błędów jest to, że

programista zapomina o inicjalizacji

zmiennych lub "końcowych porządkach".

 W programowaniu obiektowym

wprowadzono więc półautomatyczny

mechanizm inicjacji i "sprzątania":

odpowiednio: konstruktory i destruktory.

Cechy konstruktora:

 Nazwa konstruktora jest taka sama jak nazwa klasy;  nie zwraca żadnego wyniku;  może przyjmować parametry;  Parametrami konstruktora nie mogą być obiekty klasy do której należy, ale mogą być referencje do tych obiektów (w C++);  Nie może być wywołany jak zwykła metoda (bez tworzenia obiektu);  Najczęściej jest publiczny.

Dwa sposoby inicjalizacji pól w C++

1. W konstruktorze przy użyciu instrukcji

przypisania, np.:

Punkt(int xx, int yy) {

x = xx; y = yy;

2. W konstruktorze, przy użyciu listy

inicjacyjnej, np.:

Punkt(int xx, int yy) : x(xx), y(yy) {}

 Dopuszczalne są też rozwiązania mieszane.