• Nie Znaleziono Wyników

Działanie, zachowanie (ang. behavior)

Wprowadzenie do programowania obiektowego

Wprowadzenie do programowania obiektowego

Podstawy programowania obiektowego

Język C++

Język C++ Podstawy i języki programowania

Podstawy i języki programowania

Copyright © Roman Simiński Strona :23

Tożsamość

Tożsamość (ang. identity), pozwala na odróżnienie danego obiektu od każdego innego.

Programista przypisuje obiektowi unikatową nazwę lub włącza go do identyfikowalnej kolekcji obiektów, lub odwołuje się do obiektu posługując się jego adresem w pamięci.

Wprowadzenie do programowania obiektowego

Wprowadzenie do programowania obiektowego

Podstawy programowania obiektowego

Język C++

Język C++ Podstawy i języki programowania

Podstawy i języki programowania

Copyright © Roman Simiński Strona :24

Stan

Stan (ang. state), opisuje to co obiekt w danym momencie powinien wiedzieć aby sprawnie działać.

Stan obiektu w danym momencie opisany jest zestawem atrybutów i ich wartości. Atrybuty są nazwami wewnętrznych danych obiektu, opisujących jego stan.

Atrybuty zwane są polami (ang. fields) lub składowymi danych.

Wprowadzenie do programowania obiektowego

Wprowadzenie do programowania obiektowego

Podstawy programowania obiektowego

Język C++

Język C++ Podstawy i języki programowania

Podstawy i języki programowania

Copyright © Roman Simiński Strona :25

Zdolność do działania

Zdolność do działania (ang. behavior) opisuje operacje, które obiekt może wykonać. Operacje są realizowane poprzez wykonanie metod (ang. methods) zwanych w C++ funkcjami składowymi (ang. member functions).

Metody są jak procedury lub funkcje w programowaniu proceduralnym — mogą otrzymywać parametry, mogą zwracać wartości.

Metody są jednak częścią obiektu i mogą być aktywowane wtedy, gdy obiekt zostanie o to poproszony.

Wprowadzenie do programowania obiektowego

Wprowadzenie do programowania obiektowego

Podstawy programowania obiektowego

Język C++

Język C++ Podstawy i języki programowania

Podstawy i języki programowania

Copyright © Roman Simiński Strona :26

Najważniejsze cechy podejścia obiektowego

Abstrakcja (ang. abstraction).

Hermetyzacja (ang. encapsulation).

Dziedziczenie (ang. inheritance).

Wprowadzenie do programowania obiektowego

Wprowadzenie do programowania obiektowego

Podstawy programowania obiektowego

Język C++

Język C++ Podstawy i języki programowania

Podstawy i języki programowania

Copyright © Roman Simiński Strona :27

Abstrakcja

Podejście obiektowe eksponuje rolę obiektu – jest on abstrakcją pewnego

konkretnego bytu ze świata rzeczywistego, reprezentującego rzecz (obiekt fizyczny) lub pojęcie (obiekt konceptualny).

Abstrakcja pozwala postrzegać modelowaną rzeczywistość bez wnikania w jej wewnętrzną strukturę.

Elementy, które w danym momencie są nieistotne mogą zostać ukryte lub nawet pominięte.

Obiekty rzeczywiste

Abstrakcyjny model analityczny

Wprowadzenie do programowania obiektowego

Wprowadzenie do programowania obiektowego

Podstawy programowania obiektowego

Język C++

Język C++ Podstawy i języki programowania

Podstawy i języki programowania

Copyright © Roman Simiński Strona :28

Abstrakcja, cd. ... Obiekty rzeczywiste Abstrakcyjny model analityczny Marka Model Rok produkcji Nr rejestracyjny Kolor nadwozia Nr silnika . . . C ec h y

Podaj średnie spalanie Podaj przebieg . . . A kc je Reprezentacja obiektowa

Wprowadzenie do programowania obiektowego

Wprowadzenie do programowania obiektowego

Podstawy programowania obiektowego

Język C++

Język C++ Podstawy i języki programowania

Podstawy i języki programowania

Copyright © Roman Simiński Strona :29

Abstrakcja, cd. ...

Obiekt jest jest dostawcą pewnych informacji oraz usług. Nie musimy wiedzieć jak obiekt coś robi ale co robi.

Nie musimy wiedzieć jak obiekt coś przechowuje ale co przechowuje.

class Runner { public : . . . void show(); void hide(); void moveUp(); void moveDown(); void moveLeft(); void moveRight(); };

Wprowadzenie do programowania obiektowego

Wprowadzenie do programowania obiektowego

Podstawy programowania obiektowego

Język C++

Język C++ Podstawy i języki programowania

Podstawy i języki programowania

Copyright © Roman Simiński Strona :30

Hermetyzacja

Hermetyzacja pozwala obiektom kontrolować poprawność swojej reprezentacji zewnętrznej.

Osiąga się to poprzez ukrycie (ang. information hiding) pól obiektu przed użytkownikiem zewnętrznym.

Zastosowanie hermetyzacji wymusza udostępnianie użytkownikowi publicznego interfejsu składającego się metod, które mają publiczny modyfikator widoczności. Ukryte części obiektu są niedostępne na zewnątrz i mogą być tylko wykorzystane przez metody dostępowe.

BigArray addItem getItem findItem sort . . . Ukryta reprezentacja fizyczna Składowe publiczne Składowe prywatne

Wprowadzenie do programowania obiektowego

Wprowadzenie do programowania obiektowego

Podstawy programowania obiektowego

Język C++

Język C++ Podstawy i języki programowania

Podstawy i języki programowania

Copyright © Roman Simiński Strona :31

Hermetyzacja,cd. ...

Klasa powinna ukrywać przed jej użytkownikiem szczegóły implementacyjne. Zmiana implementacji powinna być dla użytkownika klasy przeźroczysta.

Zasada hermetyzacji postuluje ukrywanie nie tylko szczegółów realizacyjnych, ale również pól i sposobów ich reprezentacji.

Runner R; R.x = 40; R.y = 12; R.code = '*'; . . . cout << "X:" << R.x << endl; cout << "Y:" << R.y << endl; cout << "Kod:" << R.code << endl;

Runner R;

R.setX( 40 );

R.setY( 12 ); R.setCode( '*' ); . . .

cout << "X:" << R.getX() << endl; cout << "Y:" << R.getY() << endl; cout << "Kod:" << R.getCode() << endl;

Wprowadzenie do programowania obiektowego

Wprowadzenie do programowania obiektowego

Podstawy programowania obiektowego

Język C++

Język C++ Podstawy i języki programowania

Podstawy i języki programowania

Copyright © Roman Simiński Strona :32

Hermetyzacja, cd. ... class Runner { public : int x, y, code; void show(); void hide(); void moveUp(); void moveDown(); void moveLeft(); void moveRight(); }; class Runner { public :

void setX( int newX ); void setY( int newY );

void setCode( int newCode );

int getX(); int getY(); int getCode(); void show(); void hide(); void moveUp(); void moveDown(); void moveLeft(); void moveRight(); private: int x, y, code; };

Wprowadzenie do programowania obiektowego

Wprowadzenie do programowania obiektowego

Podstawy programowania obiektowego

Język C++

Język C++ Podstawy i języki programowania

Podstawy i języki programowania

Copyright © Roman Simiński Strona :33

Hermetyzacja, cd. ...

Hermetyzacja pól pozwala na kontrolowanie poprawności danych przekazywanych obiektowi. Runner R; R.code = '*'; . . . R.x = -400; R.y = 1200;

?

R.show();

Błędna pozycja ekranowa, bezpośredni dostęp do pól obiektu

Wprowadzenie do programowania obiektowego

Wprowadzenie do programowania obiektowego

Podstawy programowania obiektowego

Język C++

Język C++ Podstawy i języki programowania

Podstawy i języki programowania

Copyright © Roman Simiński Strona :34

Hermetyzacja, cd. ... Runner R; R.setCode( '*' ); . . . R.setX( -400 ); R.setY( 1200 ); R.show();

Błędna pozycja ekranowa, dostęp do pól obiektu za pośrednictwem metod

void Runner::setX( int newX ) {

if( isXOnScreen( newX ) ) x = newX;

else

x = 1; // Warto ć domy lnaś ś }

void Runner::setY( int newY ) {

if( isYOnScreen( newY ) ) y = newY;

else

y = 1; // Warto ć domy lnaś ś }

Wprowadzenie do programowania obiektowego

Wprowadzenie do programowania obiektowego

Podstawy programowania obiektowego

Język C++

Język C++ Podstawy i języki programowania

Podstawy i języki programowania

Copyright © Roman Simiński Strona :35

Na zakończenie ...

Dziedziczenie (ang. inheritance).

Polimorfizm (ang. polymorphism)

Osobny wykład

Powiązane dokumenty