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