=1=STL, pola i metody statyczne, diagramy UML,...

185
Wybrane klasy z bilioteki standardowej szablonów (STL) Elementy statyczne – zmienne, pola klas, metody Języki modelowania Od ogólu do szczególu – Dziedziczenie klas STL, pola i metody statyczne, diagramy UML, dziedziczenie Bogdan Kreczmer [email protected] Katedra Cybernetyki i Robotyki Wydzial Elektroniki Politechnika Wroclawska Kurs: Programowanie obiektowe Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera materialy do wykladu dotyczącego programowania obiektowego. Jest on udostępniony pod warunkiem wykorzystania wylącznie do wlasnych prywatnych potrzeb i może on być kopiowany Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Transcript of =1=STL, pola i metody statyczne, diagramy UML,...

Page 1: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

STL, pola i metody statyczne, diagramy UML,dziedziczenie

Bogdan [email protected]

Katedra Cybernetyki i RobotykiWydział Elektroniki

Politechnika Wrocławska

Kurs: Programowanie obiektowe

Copyright c©2018 Bogdan Kreczmer

Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania obiektowego. Jest onudostępniony pod warunkiem wykorzystania wyłącznie do własnych prywatnych potrzeb i może on być kopiowanywyłącznie w całości, razem z niniejszą stroną tytułową.Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 2: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Niniejsza prezentacja została wykonana przy użyciu sys-temu składu LATEX oraz stylu beamer, którego autoremjest Till Tantau.

Strona domowa projektu Beamer:http://latex-beamer.sourceforge.net

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 3: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Plan prezentacji1 Wybrane klasy z bilioteki standardowej szablonów (STL)

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

2 Elementy statyczne – zmienne, pola klas, metodyZmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

3 Języki modelowaniaUML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

4 Od ogółu do szczegółu – Dziedziczenie klasUszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 4: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Plan prezentacji1 Wybrane klasy z bilioteki standardowej szablonów (STL)

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

2 Elementy statyczne – zmienne, pola klas, metodyZmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

3 Języki modelowaniaUML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

4 Od ogółu do szczegółu – Dziedziczenie klasUszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 5: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

vector – dynamiczna tablica,deque – kolejka wspierająca swobodny dostęp do dowolnego ele-

mentu,list – lita dwukierukowa,forward list – lista jednokierunkowa,array – tablica o stałym rozmiarze,string – kontener znakowy

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 6: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Plan prezentacji1 Wybrane klasy z bilioteki standardowej szablonów (STL)

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

2 Elementy statyczne – zmienne, pola klas, metodyZmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

3 Języki modelowaniaUML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

4 Od ogółu do szczegółu – Dziedziczenie klasUszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 7: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

vec.front( ) – zwraca pierwszy element,vec.back( ) – zwraca ostatni element,vec[ i ] – zwraca i-ty element (zakres nie jest sprawdzany),vec.at( i ) – zwraca i-ty element (zakres jest sprawdzany, w przypadku błędu zgłaszany

jest wyjątek out of range),

vec.push back(e) – dodaje na koniec kopie elementu e (może powodowaæ realokację pamię-ci),

vec.pop back( ) – usuwa ostatni element i nie zwraca go (może powodowaæ realokację pa-mięci),

vec.size( ) – zwraca aktualną liczbę elementów,vec.max size( ) – zwraca największą możliwą ilość elementów jaką można zaalokować,vec.capacity( ) – zwraca największą możliwą ilość elementów bez realokacji,vec.reserve( ) – zwiększa pojemność jeśli nie jest wystarczająca.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 8: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

vec.begin( ) – zwraca iterator wskazujący na pierwszy element,vec.end( ) – zwraca iterator wskazujący na pozycję za ostatnim elementem,vec.rbegin( ) – zwraca iterator dla iteracji odwrotnej wskazujący na ostatni element,vec.rend( ) – zwraca iterator dla iteracji odwrotnej wskazujący na pozycję przed pierw-

szym elementem,

std::vector<float> V1(6);float zm;for (int Ind=0; Ind < V1.size(); ++Ind) V1[Ind] = 13;for (std::vector<float>::iterator iter = V1.begin(); iter != V1.end(); ++iter) ∗iter = 13;

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 9: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

vec.begin( ) – zwraca iterator wskazujący na pierwszy element,vec.end( ) – zwraca iterator wskazujący na pozycję za ostatnim elementem,vec.rbegin( ) – zwraca iterator dla iteracji odwrotnej wskazujący na ostatni element,vec.rend( ) – zwraca iterator dla iteracji odwrotnej wskazujący na pozycję przed pierw-

szym elementem,

std::vector<float> V1(6);float zm;for (int Ind=0; Ind < V1.size(); ++Ind) V1[Ind] = 13;for (float &Elem : V1 ) Elem = 13;

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 10: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Szablon listy dwukierunkowej

lst.front( ) – zwraca pierwszy element,lst.back( ) – zwraca ostatni element,

lst.push front(e) – dodaje na początek kopię elementu e,lst.pop front( ) – usuwa pierwszy element i nie zwraca go,lst.push back(e) – dodaje na koniec kopię elementu e,lst.pop back( ) – usuwa ostatni element i nie zwraca go,

lst.size( ) – zwraca aktualną liczbę elementów,lst.max size( ) – zwraca największą możliwą ilość elementów jaką można zaalokować,

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 11: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Szablon listy dwukierunkowej

lst.begin( ) – zwraca iterator wskazujący na pierwszy element,lst.end( ) – zwraca iterator wskazujący na pozycję za ostatnim elementem,lst.rbegin( ) – zwraca iterator dla iteracji odwrotnej wskazujący

na ostatni element,lst.rend( ) – zwraca iterator dla iteracji odwrotnej wskazujący

na pozycję przed pierwszym elementem,list<TYP>::iterator – typ iteratora mogącego wprowadzić zmiany w obiektach listy,list<TYP>::const iterator – typ iteratora nie mogącego wprowadzać zmian

w obiektach listy.

std::list<float> Lst(6);

for (std::list<float>::iterator iter = Lst.begin(); iter != Lst.end(); ++iter) ∗iter = 13;for ( float &Elem : Lst ) Elem = 13;

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 12: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Szablon listy dwukierunkowej

lst.begin( ) – zwraca iterator wskazujący na pierwszy element,lst.end( ) – zwraca iterator wskazujący na pozycję za ostatnim elementem,lst.rbegin( ) – zwraca iterator dla iteracji odwrotnej wskazujący

na ostatni element,lst.rend( ) – zwraca iterator dla iteracji odwrotnej wskazujący

na pozycję przed pierwszym elementem,list<TYP>::iterator – typ iteratora mogącego wprowadzić zmiany w obiektach listy,list<TYP>::const iterator – typ iteratora nie mogącego wprowadzać zmian

w obiektach listy.

std::list<float> Lst(6);

for (std::list<float>::iterator iter = Lst.begin(); iter != Lst.end(); ++iter) ∗iter = 13;for ( float &Elem : Lst ) Elem = 13;

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 13: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Plan prezentacji1 Wybrane klasy z bilioteki standardowej szablonów (STL)

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

2 Elementy statyczne – zmienne, pola klas, metodyZmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

3 Języki modelowaniaUML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

4 Od ogółu do szczegółu – Dziedziczenie klasUszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 14: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Obiekty w liście – Tworzenie kopii

class Atrapa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .public:Atrapa( Atrapa const & ) { cout << ” == Konstruktor kopiujacy\n”; }Atrapa( ) { cout << ” ++ Konstruktor bezparametryczny\n”; }∼Atrapa( ) { cout << ”−− Destruktor \n”; }

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int main( ){

list <Atrapa> Lst;Atrapa A;

cout << ” ## Przed” << endl;Lst.push back(A);cout << ” ## Po” << endl;

}

Wynik działania programu:

++ Konstruktor bezparametryczny## Przed

== Konstruktor kopiujacy## Po−− Destruktor−− Destruktor

Elementy przekazywane do listy są kopiowane i ulegają destrukcji wraz z danymelementem listy.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 15: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Obiekty w liście – Tworzenie kopii

class Atrapa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .public:Atrapa( Atrapa const & ) { cout << ” == Konstruktor kopiujacy\n”; }Atrapa( ) { cout << ” ++ Konstruktor bezparametryczny\n”; }∼Atrapa( ) { cout << ”−− Destruktor \n”; }

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int main( ){

list <Atrapa> Lst;Atrapa A;

cout << ” ## Przed” << endl;Lst.push back(A);cout << ” ## Po” << endl;

}

Wynik działania programu:

++ Konstruktor bezparametryczny## Przed

== Konstruktor kopiujacy## Po−− Destruktor−− Destruktor

Elementy przekazywane do listy są kopiowane i ulegają destrukcji wraz z danymelementem listy.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 16: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Wzorzec listy dwukierunkowej std::list

class Atrapa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .public:Atrapa( Atrapa const & ) { cout << ” == Konstruktor kopiujacy\n”; }Atrapa( ) { cout << ” ++ Konstruktor bezparametryczny\n”; }∼Atrapa( ) { cout << ” --- Destruktor \n”; }

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int main( ){

list <Atrapa∗> Lst;Atrapa A;

cout << ” ## Przed” << endl;Lst.push back(&A);cout << ” ## Po” << endl;

}

Wynik działania:

++ Konstruktor bezparametryczny## Przed## Po−− Destruktor

W przypadku listy wskaźników na obiekty niszczenie elementów listy nie powodujejednoczesnej destrukcji samych obiektów.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 17: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Wzorzec listy dwukierunkowej std::list

class Atrapa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .public:Atrapa( Atrapa const & ) { cout << ” == Konstruktor kopiujacy\n”; }Atrapa( ) { cout << ” ++ Konstruktor bezparametryczny\n”; }∼Atrapa( ) { cout << ” --- Destruktor \n”; }

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int main( ){

list <Atrapa∗> Lst;Atrapa A;

cout << ” ## Przed” << endl;Lst.push back(&A);cout << ” ## Po” << endl;

}

Wynik działania:

++ Konstruktor bezparametryczny## Przed## Po−− Destruktor

W przypadku listy wskaźników na obiekty niszczenie elementów listy nie powodujejednoczesnej destrukcji samych obiektów.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 18: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Wzorzec listy dwukierunkowej std::list

class Atrapa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .public:Atrapa( Atrapa const & ) { cout << ” == Konstruktor kopiujacy\n”; }Atrapa( ) { cout << ” ++ Konstruktor bezparametryczny\n”; }∼Atrapa( ) { cout << ” --- Destruktor \n”; }

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int main( ){

list <Atrapa∗> Lst;Atrapa A;

cout << ” ## Przed” << endl;Lst.push back(&A);cout << ” ## Po” << endl;

}

Wynik działania:

++ Konstruktor bezparametryczny## Przed## Po−− Destruktor

W przypadku listy wskaźników na obiekty niszczenie elementów listy nie powodujejednoczesnej destrukcji samych obiektów.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 19: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Przeglądanie listy

struct Atrapa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .int Numer;

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int main( ){

list <Atrapa> Lst;

Lst.push back(Atrapa( )); // Tworzymy listę dwuelementowąLst.push back(Atrapa( ));

for (list<Atrapa>::iterator Iter = Lst.begin( ); Iter != Lst.end( ); ++Iter) {(∗Iter). Numer = 5;Iter–> Numer = 10;if ((∗Iter). Numer == 10) cout << ”!!! Ten warunek jest spełniony.” << endl;

}}

Iterator zapewnia bezpieczny dostęp do wszystkich elementów listy. Postać warunku końcalisty jest istotna, sposób inkrementacji operatora również.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 20: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Przeglądanie listy

struct Atrapa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .int Numer;

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int main( ){

list <Atrapa> Lst;

Lst.push back(Atrapa( )); // Tworzymy listę dwuelementowąLst.push back(Atrapa( ));

for (list<Atrapa>::iterator Iter = Lst.begin( ); Iter != Lst.end( ); ++Iter) {(∗Iter). Numer = 5;Iter–> Numer = 10;if ((∗Iter). Numer == 10) cout << ”!!! Ten warunek jest spełniony.” << endl;

}}

Iterator zapewnia bezpieczny dostęp do wszystkich elementów listy. Postać warunku końcalisty jest istotna, sposób inkrementacji operatora również.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 21: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Przeglądanie listy

struct Atrapa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .int Numer;

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int main( ){

list <Atrapa> Lst;

Lst.push back(Atrapa( )); // Tworzymy listę dwuelementowąLst.push back(Atrapa( ));

for ( Atrapa &Elem : Lst ) {Elem. Numer = 5;Elem. Numer = 10;if (Elem. Numer == 10) cout << ”!!! Ten warunek jest spełniony.” << endl;

}}

Iterator zapewnia bezpieczny dostęp do wszystkich elementów listy. Postać warunku końcalisty jest istotna, sposób inkrementacji operatora również.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 22: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Przeglądanie listy

struct Atrapa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .int Numer;

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int main( ){

list <Atrapa> Lst;

Lst.push back(Atrapa( )); // Tworzymy listę dwuelementowąLst.push back(Atrapa( ));

for ( Atrapa &Elem : Lst ) {Elem. Numer = 5;Elem. Numer = 10;if (Elem. Numer == 10) cout << ”!!! Ten warunek jest spełniony.” << endl;

}}

Iterator zapewnia bezpieczny dostęp do wszystkich elementów listy. Postać warunku końcalisty jest istotna, sposób inkrementacji operatora również.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 23: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Usuwanie elementu

class Atrapa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .public:Atrapa( Atrapa const & ) { cout << ” == Konstruktor kopiujacy\n”; }Atrapa( ) { cout << ” ++ Konstruktor bezparametryczny\n”; }∼Atrapa( ) { cout << ” --- Destruktor \n”; }

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int main( ){

list <Atrapa> Lst;Atrapa A;

cout << ” ## Przed ” << endl;Lst.push back(A);delete &Lst.front();cout << ” ## Po ” << endl;

}

Wynik działania:

++ Konstruktor bezparametryczny## Przed

++ Konstruktor kopiujacy−− Destruktor

Segmentation faultˆ̂ ˆ̂ ˆ̂ ˆ̂ ˆ̂ ˆ̂ ˆ̂ ˆ̂ ˆ̂

Samodzielne usuwanie elementu kolejki nie jest dopuszczalne. Operacje te muszą byćrealizowane za pośrednictwem zarządcy.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 24: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Usuwanie elementu

class Atrapa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .public:Atrapa( Atrapa const & ) { cout << ” == Konstruktor kopiujacy\n”; }Atrapa( ) { cout << ” ++ Konstruktor bezparametryczny\n”; }∼Atrapa( ) { cout << ” --- Destruktor \n”; }

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int main( ){

list <Atrapa> Lst;Atrapa A;

cout << ” ## Przed ” << endl;Lst.push back(A);delete &Lst.front();cout << ” ## Po ” << endl;

}

Wynik działania:

++ Konstruktor bezparametryczny## Przed

++ Konstruktor kopiujacy−− Destruktor

Segmentation faultˆ̂ ˆ̂ ˆ̂ ˆ̂ ˆ̂ ˆ̂ ˆ̂ ˆ̂ ˆ̂

Samodzielne usuwanie elementu kolejki nie jest dopuszczalne. Operacje te muszą byćrealizowane za pośrednictwem zarządcy.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 25: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Sortowanie listy

struct ProstaKlasa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .int Numer;bool operator < (ProstaKlasa const &Arg2) { return Numer < Arg2. Numer; }ProstaKlasa( int Num=0 ): Numer(Num) { }

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int main( ){

list <ProstaKlasa> Lst;

Lst.push front(ProstaKlasa(5));Lst.push front(ProstaKlasa(2));Lst.push front(ProstaKlasa(7));

Lst.sort(); // Sortowanie zgodnie z operatorem ’<’Lst.reverse(); // Odwrócenie porządku

while (!Lst.empty()) {cout << Lst.front(). Numer << endl;Lst.pop front(); // Usuwamy pierwszy element

}}

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 26: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Plan prezentacji1 Wybrane klasy z bilioteki standardowej szablonów (STL)

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

2 Elementy statyczne – zmienne, pola klas, metodyZmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

3 Języki modelowaniaUML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

4 Od ogółu do szczegółu – Dziedziczenie klasUszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 27: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Zbiór punktów

struct Wektor { int x, y; };

class ZbiorPunktow {public :

. . .private :

unsigned int Rozmiar;Wektor ∗ wPunkty;. . .

};. . .

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 28: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Obiekt z dynamiczną tablicą elementów

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 29: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Przeglądanie tablicy

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 30: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Przeglądanie tablicy

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 31: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Przeglądanie tablicy

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 32: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Przeglądanie tablicy

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 33: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Przeglądanie tablicy

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 34: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Przeglądanie tablicy

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 35: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Przeglądanie tablicy

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 36: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Przeglądanie tablicy

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 37: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Przeglądanie tablicy

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 38: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Przeglądanie tablicy

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 39: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Przeglądanie tablicy

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 40: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Przeglądanie tablicy

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 41: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Przeglądanie tablicy

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 42: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Kontentery o różnej organizacji

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 43: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Kontentery o różnej organizacji

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 44: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Kontentery o różnej organizacji

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 45: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Iterator – zunifikowane przeglądanie kolekcji elementów

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 46: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Iterator – zunifikowane przeglądanie kolekcji elementów

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 47: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Iterator – zunifikowane przeglądanie kolekcji elementów

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 48: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

Iterator – zunifikowane przeglądanie kolekcji elementów

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 49: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Plan prezentacji1 Wybrane klasy z bilioteki standardowej szablonów (STL)

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

2 Elementy statyczne – zmienne, pola klas, metodyZmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

3 Języki modelowaniaUML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

4 Od ogółu do szczegółu – Dziedziczenie klasUszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 50: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Zmienne globalne

#include <stdio.h>

int IloscPakietow = 0;

void WyslijPakiet( ){. . .printf(”Pakiet nr: %i\n”,++IloscPakietow);

}

int main( ){

WyslijPakiet( );WyslijPakiet( );· · ·WyslijPakiet( );return 0;

}

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 51: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Zmienne globalne

#include <stdio.h>

int IloscPakietow = 0;

void WyslijPakiet( ){. . .printf(”Pakiet nr: %i\n”,++IloscPakietow);

}

int main( ){

WyslijPakiet( );WyslijPakiet( );· · ·WyslijPakiet( );return 0;

}

Pakiet nr: 1Pakiet nr: 2Pakiet nr: 3

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 52: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Zmienne globalne

#include <stdio.h>

int IloscPakietow = 0;

void WyslijPakiet( ){. . .printf(”Pakiet nr: %i\n”,++IloscPakietow);

}

int main( ){

WyslijPakiet( );WyslijPakiet( );· · ·WyslijPakiet( );return 0;

}

Pakiet nr: 1Pakiet nr: 2Pakiet nr: 11

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 53: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Zmienne globalne

#include <stdio.h>

int IloscPakietow = 0;

void WyslijPakiet( ){. . .printf(”Pakiet nr: %i\n”,++IloscPakietow);

}

int main( ){

WyslijPakiet( );WyslijPakiet( );IloscPakietow = 10;WyslijPakiet( );return 0;

}

Pakiet nr: 1Pakiet nr: 2Pakiet nr: 11

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 54: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Zmienne lokalne

#include <stdio.h>

void WyslijPakiet( ){

int IloscPakietow = 0;. . .printf(”Pakiet nr: %i\n”,++IloscPakietow);

}

int main( ){

WyslijPakiet( );WyslijPakiet( );IloscPakietow = 10;PPP��

�PPP���PPP���

WyslijPakiet( );return 0;

}

?

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 55: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Zmienne lokalne

#include <stdio.h>

void WyslijPakiet( ){

int IloscPakietow = 0;. . .printf(”Pakiet nr: %i\n”,++IloscPakietow);

}

int main( ){

WyslijPakiet( );WyslijPakiet( );IloscPakietow = 10;PPP��

�PPP���PPP���

WyslijPakiet( );return 0;

}

Pakiet nr: 1Pakiet nr: 1Pakiet nr: 1

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 56: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Zmienne statyczne

#include <stdio.h>

void WyslijPakiet( ){

static int IloscPakietow = 0;. . .printf(”Pakiet nr: %i\n”,++IloscPakietow);

}

int main( ){

WyslijPakiet( );WyslijPakiet( );IloscPakietow = 10;PPP��

�PPP���PPP���

WyslijPakiet( );return 0;

}

Pakiet nr: 1Pakiet nr: 2Pakiet nr: 3

Zmienne statyczne w języku C pełnią rolę zmiennych globalnych z ograniczonymzakresem dostępu tylko do poziomu funkcji, w której są definiowane.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 57: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Zmienne statyczne

#include <iostream>

void WyslijPakiet( ){

static int IloscPakietow = 0;. . .std::cout << ”Pakiet nr: ” << ++IloscPakietow << std::endl;

}

int main( ){

WyslijPakiet( );WyslijPakiet( );IloscPakietow = 10;PPP��

�PPP���PPP���

WyslijPakiet( );}

Pakiet nr: 1Pakiet nr: 2Pakiet nr: 3

Identyczne znaczenie mają również w języku C++ .

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 58: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Plan prezentacji1 Wybrane klasy z bilioteki standardowej szablonów (STL)

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

2 Elementy statyczne – zmienne, pola klas, metodyZmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

3 Języki modelowaniaUML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

4 Od ogółu do szczegółu – Dziedziczenie klasUszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 59: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Pola statyczne w klasie

class LaczeSieciowe { . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .public :

static int IloscLaczy;

LaczeSieciowe( ) { ++ IloscLaczy; }∼LaczeSieciowe( ) { −− IloscLaczy; }}; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int LaczeSieciowe :: IloscLaczy = 0;

int main( ){LaczeSieciowe Lacze1;

cout << Lacze1. IloscLaczy << endl;}

Pole statyczne pełni rolę zmiennej globalnej w ramach danej klasy. Istnieje tylkow jednym egzemplarzu niezależnie od wszystkich obiektów.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 60: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Pola statyczne w klasie

class LaczeSieciowe { . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .public :

static int IloscLaczy;

LaczeSieciowe( ) { ++ IloscLaczy; }∼LaczeSieciowe( ) { −− IloscLaczy; }}; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int LaczeSieciowe :: IloscLaczy = 0;

int main( ){LaczeSieciowe Lacze1;

cout << Lacze1. IloscLaczy << endl;}

Musi być zadeklarowane oraz zainicjalizowane poza klasą w przestrzenizmiennych globalnych. Określony zostaje w ten sposób moment jego utworzenia.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 61: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Pola statyczne w klasie

class LaczeSieciowe { . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .public :

static int IloscLaczy;

LaczeSieciowe( ) { ++ IloscLaczy; }∼LaczeSieciowe( ) { −− IloscLaczy; }}; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int LaczeSieciowe :: IloscLaczy;

int main( ){LaczeSieciowe Lacze1;

cout << Lacze1. IloscLaczy << endl;}

Czy brak inicjalizacji oznacza wartość przypadkową?

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 62: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Pola statyczne w klasie

class LaczeSieciowe { . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .public :

static int IloscLaczy;

LaczeSieciowe( ) { ++ IloscLaczy; }∼LaczeSieciowe( ) { −− IloscLaczy; }}; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int LaczeSieciowe :: IloscLaczy;

int main( ){LaczeSieciowe Lacze1;

cout << Lacze1. IloscLaczy << endl;}

Pola statyczne typów wbudowanych zawsze inicjalizowane są wartością 0.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 63: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Pola statyczne w klasie

class LaczeSieciowe { . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .public :

static int IloscLaczy;

LaczeSieciowe( ) { ++ IloscLaczy; }∼LaczeSieciowe( ) { −− IloscLaczy; }}; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int LaczeSieciowe :: IloscLaczy;

int main( ){

cout << LaczeSieciowe:: IloscLaczy << endl;}

Do pola statycznego można odwoływać się bez konieczności tworzenia obiektu,gdyż jest ono własnością klasy, a nie obiektu.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 64: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Pola statyczne w klasie

class LaczeSieciowe { . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .public :

static int IloscLaczy;

LaczeSieciowe( ) { ++ IloscLaczy; }∼LaczeSieciowe( ) { −− IloscLaczy; }}; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int LaczeSieciowe :: IloscLaczy;

int main( ){LaczeSieciowe Lacze1, Lacze2;

cout << LaczeSieciowe:: IloscLaczy << endl;cout << Lacze1. IloscLaczy << endl;cout << Lacze2. IloscLaczy << endl;

}

Dlatego też każdy z tych trzech sposobówodwołania się do pola IloscLaczy jestodwołaniem się do tego samego obszarupamięci.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 65: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Pola statyczne w klasie

class LaczeSieciowe { . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .public :

static int IloscLaczy;

LaczeSieciowe( ) { ++ IloscLaczy; }∼LaczeSieciowe( ) { −− IloscLaczy; }}; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int LaczeSieciowe :: IloscLaczy;

int main( ){

cout << LaczeSieciowe:: IloscLaczy << endl;

}

Aby móc odwołać się do polastatycznego, nie musi istnieć żadenobiekt. Pola statyczne istnieją niezależnieod poszczególnych obiektów.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 66: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Pola statyczne w klasie

class LaczeSieciowe { . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .public :

static int IloscLaczy;

LaczeSieciowe( ) { ++ IloscLaczy; }∼LaczeSieciowe( ) { −− IloscLaczy; }}; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int LaczeSieciowe :: IloscLaczy;

int main( ){

LaczeSieciowe:: IloscLaczy += 1000000;

}

W tym konkretnym rozwiązaniudefiniowanie zmiennej statycznej w sekcjipublicznej nie jest dobrym rozwiązaniem.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 67: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Plan prezentacji1 Wybrane klasy z bilioteki standardowej szablonów (STL)

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

2 Elementy statyczne – zmienne, pola klas, metodyZmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

3 Języki modelowaniaUML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

4 Od ogółu do szczegółu – Dziedziczenie klasUszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 68: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Statyczne metody klasy

class LaczeSieciowe { . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .static int IloscLaczy;

public :LaczeSieciowe( ) { ++ IloscLaczy; }∼LaczeSieciowe( ) { −− IloscLaczy; }

}; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int LaczeSieciowe :: IloscLaczy = 0;

int main( ){LaczeSieciowe Lacze1;

cout << Lacze1. IloscLaczy << endl;

}

Bezwzględu na to, czy pole statycznezdefiniowane jest sekcji publicznej,czy też prywatnej, należy jezainicjalizować w miejscu definicji.Nie ma tutaj żadnego ograniczeniadostępu.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 69: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Statyczne metody klasy

class LaczeSieciowe { . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .static int IloscLaczy;

public :LaczeSieciowe( ) { ++ IloscLaczy; }∼LaczeSieciowe( ) { −− IloscLaczy; }

}; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int LaczeSieciowe :: IloscLaczy = 0;

int main( ){LaczeSieciowe Lacze1;

cout << Lacze1. IloscLaczy << endl;

}

Dla prób odwoływania się doprywatnego pola statycznego pozajego definicją obowiązują takie samereguły dostępu jak dla każdegoinnego pola.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 70: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Statyczne metody klasy

class LaczeSieciowe { . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .static int IloscLaczy;

public :LaczeSieciowe( ) { ++ IloscLaczy; }∼LaczeSieciowe( ) { −− IloscLaczy; }

}; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int LaczeSieciowe :: IloscLaczy = 0;

int main( ){LaczeSieciowe Lacze1;

cout << Lacze1. IloscLaczy << endl;cout << LaczeSieciowe:: IloscLaczy << endl;

}

Dotyczy to również prób odwołaniasię do takiego pola bez pośrednictwaobiektu.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 71: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Statyczne metody klasy

class LaczeSieciowe { . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .static int IloscLaczy;

public :LaczeSieciowe( ) { ++ IloscLaczy; }∼LaczeSieciowe( ) { −− IloscLaczy; }

int WezIloscLaczy( ) const { return IloscLaczy; }}; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .int main( ){LaczeSieciowe Lacze1;

cout << Lacze1.WezIloscLaczy( ) << endl;cout << LaczeSieciowe:: IloscLaczy << endl;

}

Można zdefiniować jednak zwykłąmetodę, która udostępni wartość tegopola. Wadą tego rozwiązania jest to,że taką metodę można wywołać tylkoza pośrednictwem obiektu danej klasy.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 72: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Statyczne metody klasy

class LaczeSieciowe { . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .static int IloscLaczy;

public :LaczeSieciowe( ) { ++ IloscLaczy; }∼LaczeSieciowe( ) { −− IloscLaczy; }static int WezIloscLaczy( ) { return IloscLaczy; }

}; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .int main( ){LaczeSieciowe Lacze1;

cout << Lacze1.WezIloscLaczy( ) << endl;cout << LaczeSieciowe::WezIloscLaczy( ) << endl;

}

Tej wady nie mają metody statyczne.Uwaga: Metody statyczne nie mogąbyć metodami typu const. Dlaczego?

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 73: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Plan prezentacji1 Wybrane klasy z bilioteki standardowej szablonów (STL)

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

2 Elementy statyczne – zmienne, pola klas, metodyZmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

3 Języki modelowaniaUML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

4 Od ogółu do szczegółu – Dziedziczenie klasUszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 74: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Rozmiar obiektów statycznych

class LaczeSieciowe { . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .static int IloscLaczy;int ID;

public :LaczeSieciowe( ) { ++ IloscLaczy; }∼LaczeSieciowe( ) { −− IloscLaczy; }

}; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int main( ){

cout << sizeof (int) << endl;cout << sizeof (LaczeSieciowe) << endl;

}

Wynik działania:

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 75: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Rozmiar obiektów statycznych

class LaczeSieciowe { . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .static int IloscLaczy;int ID;

public :LaczeSieciowe( ) { ++ IloscLaczy; }∼LaczeSieciowe( ) { −− IloscLaczy; }

}; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int main( ){

cout << sizeof (int) << endl;cout << sizeof (LaczeSieciowe) << endl;

}

Wynik działania:

4

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 76: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Rozmiar obiektów statycznych

class LaczeSieciowe { . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .static int IloscLaczy;int ID;

public :LaczeSieciowe( ) { ++ IloscLaczy; }∼LaczeSieciowe( ) { −− IloscLaczy; }

}; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int main( ){

cout << sizeof (int) << endl;cout << sizeof (LaczeSieciowe) << endl;

}

Wynik działania:

4

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 77: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Rozmiar obiektów statycznych

class LaczeSieciowe { . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .static int IloscLaczy;int ID;

public :LaczeSieciowe( ) { ++ IloscLaczy; }∼LaczeSieciowe( ) { −− IloscLaczy; }

}; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int main( ){

cout << sizeof (int) << endl;cout << sizeof (LaczeSieciowe) << endl;

}

Wynik działania:

44

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 78: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Rozmiar obiektów statycznych

class KlasaTestowa {static int Tab[10];int Pole1;int Pole2;

};

int KlasaTestowa:: Tab[10];

int main( ){KlasaTestowa ObTestowy;

}

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 79: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Zmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

Rozmiar obiektów statycznych

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 80: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Plan prezentacji1 Wybrane klasy z bilioteki standardowej szablonów (STL)

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

2 Elementy statyczne – zmienne, pola klas, metodyZmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

3 Języki modelowaniaUML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

4 Od ogółu do szczegółu – Dziedziczenie klasUszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 81: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

UML – Unified Modeling Language

Główni twórcy: Grady Booch, Ivar Jacobson, James Rumbaugh

1994 – zapoczątkowanie prac nad UML

1995 – pierwsza robocza wersja 0.8

1997 – zaakceptowanie wersji 1.1 przez OMG (Object Manag-ment Group)

1999 – opublikowanie wersji 1.3

2004/2005 – zaakceptowanie wersji 2.0

sierpień 2007 – opublikowanie wersji 2.1.1

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 82: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

UML – Unified Modeling Language

Główni twórcy: Grady Booch, Ivar Jacobson, James Rumbaugh

1994 – zapoczątkowanie prac nad UML

1995 – pierwsza robocza wersja 0.8

1997 – zaakceptowanie wersji 1.1 przez OMG (Object Manag-ment Group)

1999 – opublikowanie wersji 1.3

2004/2005 – zaakceptowanie wersji 2.0

sierpień 2007 – opublikowanie wersji 2.1.1

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 83: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

UML – Unified Modeling Language

Główni twórcy: Grady Booch, Ivar Jacobson, James Rumbaugh

1994 – zapoczątkowanie prac nad UML

1995 – pierwsza robocza wersja 0.8

1997 – zaakceptowanie wersji 1.1 przez OMG (Object Manag-ment Group)

1999 – opublikowanie wersji 1.3

2004/2005 – zaakceptowanie wersji 2.0

sierpień 2007 – opublikowanie wersji 2.1.1

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 84: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

UML – Unified Modeling Language

Główni twórcy: Grady Booch, Ivar Jacobson, James Rumbaugh

1994 – zapoczątkowanie prac nad UML

1995 – pierwsza robocza wersja 0.8

1997 – zaakceptowanie wersji 1.1 przez OMG (Object Manag-ment Group)

1999 – opublikowanie wersji 1.3

2004/2005 – zaakceptowanie wersji 2.0

sierpień 2007 – opublikowanie wersji 2.1.1

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 85: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

UML – Unified Modeling Language

Główni twórcy: Grady Booch, Ivar Jacobson, James Rumbaugh

1994 – zapoczątkowanie prac nad UML

1995 – pierwsza robocza wersja 0.8

1997 – zaakceptowanie wersji 1.1 przez OMG (Object Manag-ment Group)

1999 – opublikowanie wersji 1.3

2004/2005 – zaakceptowanie wersji 2.0

sierpień 2007 – opublikowanie wersji 2.1.1

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 86: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

UML – Unified Modeling Language

Główni twórcy: Grady Booch, Ivar Jacobson, James Rumbaugh

1994 – zapoczątkowanie prac nad UML

1995 – pierwsza robocza wersja 0.8

1997 – zaakceptowanie wersji 1.1 przez OMG (Object Manag-ment Group)

1999 – opublikowanie wersji 1.3

2004/2005 – zaakceptowanie wersji 2.0

sierpień 2007 – opublikowanie wersji 2.1.1

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 87: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

UML – Unified Modeling Language

Główni twórcy: Grady Booch, Ivar Jacobson, James Rumbaugh

1994 – zapoczątkowanie prac nad UML

1995 – pierwsza robocza wersja 0.8

1997 – zaakceptowanie wersji 1.1 przez OMG (Object Manag-ment Group)

1999 – opublikowanie wersji 1.3

2004/2005 – zaakceptowanie wersji 2.0

sierpień 2007 – opublikowanie wersji 2.1.1

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 88: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

UML – Unified Modeling Language

Główni twórcy: Grady Booch, Ivar Jacobson, James Rumbaugh

1994 – zapoczątkowanie prac nad UML

1995 – pierwsza robocza wersja 0.8

1997 – zaakceptowanie wersji 1.1 przez OMG (Object Manag-ment Group)

1999 – opublikowanie wersji 1.3

2004/2005 – zaakceptowanie wersji 2.0

sierpień 2007 – opublikowanie wersji 2.1.1

Strona projektu: http://www.uml.org

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 89: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

UML – Unified Modeling Language

UML jest językiem znormalizowanym, służącym do opisywaniaprojektu systemu.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 90: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

UML – Unified Modeling Language

UML jest językiem znormalizowanym, służącym do opisywaniaprojektu systemu. Może być stosowany do obrazowania, specy-fikowania, tworzenia i dokumentowania artefaktów powstałychpodczas procesu budowy systemu informatycznego.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 91: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

UML – Unified Modeling Language

UML jest językiem znormalizowanym, służącym do opisywaniaprojektu systemu. Może być stosowany do obrazowania, specy-fikowania, tworzenia i dokumentowania artefaktów powstałychpodczas procesu budowy systemu informatycznego.

UML służy do obrazowania, specyfikowania i dokumentowaniasystemów obiektowych.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 92: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

UML – Unified Modeling Language

UML jest językiem znormalizowanym, służącym do opisywaniaprojektu systemu. Może być stosowany do obrazowania, specy-fikowania, tworzenia i dokumentowania artefaktów powstałychpodczas procesu budowy systemu informatycznego.

UML służy do obrazowania, specyfikowania i dokumentowaniasystemów obiektowych.

UML jest przede wszystkim przeznaczony do wspomagania bu-dowy systemów informatycznych.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 93: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

UML – Unified Modeling Language

Przykładowe obszary zastosowań:

tworzenie systemów informatycznychprzedsiębiorstw,

usług bankowych i finansowych,

rozproszone usługi internetowe.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 94: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

UML – Unified Modeling Language

Przykładowe obszary zastosowań:

tworzenie systemów informatycznychprzedsiębiorstw,

usług bankowych i finansowych,

rozproszone usługi internetowe.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 95: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

UML – Unified Modeling Language

Przykładowe obszary zastosowań:

tworzenie systemów informatycznychprzedsiębiorstw,

usług bankowych i finansowych,

rozproszone usługi internetowe.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 96: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

UML – Unified Modeling Language

Przykładowe obszary zastosowań:

tworzenie systemów informatycznychprzedsiębiorstw,

usług bankowych i finansowych,

rozproszone usługi internetowe.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 97: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Plan prezentacji1 Wybrane klasy z bilioteki standardowej szablonów (STL)

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

2 Elementy statyczne – zmienne, pola klas, metodyZmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

3 Języki modelowaniaUML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

4 Od ogółu do szczegółu – Dziedziczenie klasUszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 98: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Przykłady diagramów

Rysunek: Diagram klas

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 99: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Przykłady diagramów

Rysunek: Diagram klas modelujący strukturę firmyProgramowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 100: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Ważniejsze diagramy

W wersji 2.0 wyróżnia się 13 rodzai diagramów głównych i 4abstrakcyjne.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 101: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Ważniejsze diagramy

W wersji 2.0 wyróżnia się 13 rodzai diagramów głównych i 4abstrakcyjne.Najczęściej używane diagramy:

Przypadków użycia

Czynności

Klas

Sekwencji

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 102: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Ważniejsze diagramy

W wersji 2.0 wyróżnia się 13 rodzai diagramów głównych i 4abstrakcyjne.Najczęściej używane diagramy:

Przypadków użycia

Czynności

Klas

Sekwencji

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 103: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Ważniejsze diagramy

W wersji 2.0 wyróżnia się 13 rodzai diagramów głównych i 4abstrakcyjne.Najczęściej używane diagramy:

Przypadków użycia

Czynności

Klas

Sekwencji

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 104: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Ważniejsze diagramy

W wersji 2.0 wyróżnia się 13 rodzai diagramów głównych i 4abstrakcyjne.Najczęściej używane diagramy:

Przypadków użycia

Czynności

Klas

Sekwencji

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 105: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Ważniejsze diagramy

W wersji 2.0 wyróżnia się 13 rodzai diagramów głównych i 4abstrakcyjne.Najczęściej używane diagramy:

Przypadków użycia

Czynności

Klas

Sekwencji

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 106: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Ważniejsze diagramy

W wersji 2.0 wyróżnia się 13 rodzai diagramów głównych i 4abstrakcyjne.Najczęściej używane diagramy:

Przypadków użycia – służy do obrazowania zachowaniasystemu, podsystemu lub klasy w taki sposób, żebyużytkownicy mogli zrozumieć, jak z tego bytu korzystać, aprogramiści mogli go zaimplementować.

Czynności

Klas

Sekwencji

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 107: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Ważniejsze diagramy – diagram przypadków użycia

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 108: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Ważniejsze diagramy

W wersji 2.0 wyróżnia się 13 rodzai diagramów głównych i 4abstrakcyjne.Najczęściej używane diagramy:

Przypadków użycia

Czynności – modeluje dynamiczne aspekty systemu.Demonstrują przepływ sterowania od operacji do operacji.

Klas

Sekwencji

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 109: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Ważniejsze diagramy – diagram czynności

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 110: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Ważniejsze diagramy

W wersji 2.0 wyróżnia się 13 rodzai diagramów głównych i 4abstrakcyjne.Najczęściej używane diagramy:

Przypadków użycia

Czynności

Klas – służy do obrazowania statycznych aspektówsystemu. Bierze się w nim pod uwagę wymaganiafunkcjonalne (usługi), jakie system powinien udostępniaćswoim użytkownikom.

Sekwencji

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 111: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Ważniejsze diagramy – diagram klas

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 112: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Ważniejsze diagramy

W wersji 2.0 wyróżnia się 13 rodzai diagramów głównych i 4abstrakcyjne.Najczęściej używane diagramy:

Przypadków użycia

Czynności

Klas

Sekwencji – służy do obrazowania dynamicznych aspektówsystemu. Demonstruje kolejność komunikatów w czasie,które przesyłają między sobą obiekty.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 113: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Ważniejsze diagramy – diagram sekwencji

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 114: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Plan prezentacji1 Wybrane klasy z bilioteki standardowej szablonów (STL)

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

2 Elementy statyczne – zmienne, pola klas, metodyZmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

3 Języki modelowaniaUML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

4 Od ogółu do szczegółu – Dziedziczenie klasUszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 115: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Oznaczenia

Klasa —

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 116: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Model klasy w UML

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 117: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Model klasy w UML

Stereotyp umożliwia twórcy diagramu na zdefiniowanie metaelementu,który pozwala na uszczegółowienie znaczenia określonego elementupoprzez dodanie informacji związanych z jego charakterystyką.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 118: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Klasa Wektor – przykład modelu w UML

class Wektor {public :

double x, y;

double Norma( ) const { return sqrt(x∗x+y∗y); }};

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 119: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Klasa Wektor – przykład modelu w UML

class Wektor {public :

double x, y;

double Norma( ) const { return sqrt(x∗x+y∗y); }};

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 120: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Klasa LZespolona – przykład modelu w UML

class LZespolona {public :

double re, im;

LZespolona(double re nowa, double im nowa): re(re nowa), im(im nowa) { }LZespolona Sprzezenie( ) const { return LZespolona(re,-im); }LZespolona operator + (const LZespolona& Arg2) const ;

LZespolona operator ∗ (const LZespolona& Arg2) const ;

double Modul2() const { return re∗re + im∗im; }};

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 121: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Klasa LZespolona – przykład modelu w UML

class LZespolona {public :

double re, im;

LZespolona(double re nowa, double im nowa): re(re nowa), im(im nowa) { }LZespolona Sprzezenie( ) const { return LZespolona(re,-im); }LZespolona operator + (const LZespolona& Arg2) const ;

LZespolona operator ∗ (const LZespolona& Arg2) const ;

double Modul2() const { return re∗re + im∗im; }};

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 122: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Klasa WektorZ – przykład modelu w UML

class WektorZ {public :LZespolona x, y;

WektorZ( ) { x.re = x.im = 0; y.re = y.im = 0; }double Norma( ) const;

};

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 123: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Klasa WektorZ – przykład modelu w UML

class WektorZ {public :LZespolona x, y;

WektorZ( ) { x.re = x.im = 0; y.re = y.im = 0; }double Norma( ) const { return sqrt((x∗x.Sprzezenie( )+y∗y.Sprzezenie( )).re); }

};

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 124: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Klasa WektorZ – przykład modelu w UML

class WektorZ {public :LZespolona x, y;

WektorZ( ) { x.re = x.im = 0; y.re = y.im = 0; }double Norma( ) const { return sqrt(x.Modul2( )+y.Modul2( )); }

};

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 125: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Klasa WektorZ – przykład modelu w UML

class WektorZ {public :LZespolona x, y;

WektorZ( ) { x.re = x.im = 0; y.re = y.im = 0; }double Norma( ) const { return sqrt(x.Modul2( )+y.Modul2( )); }

};

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 126: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Klasa WektorZ – przykład modelu w UML

class WektorZ {LZespolona Wsp[2];

public :

const LZespolona& operator [ ] (unsigned int Ind) const { return Wsp[Ind]; }LZespolona& operator [ ] (unsigned int Ind) { return Wsp[Ind]; }double Norma( ) const { return sqrt((∗this )[0].Modul2()+(∗this )[1].Modul2()); }

};

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 127: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Klasa WektorZ – przykład modelu w UML

class WektorZ {LZespolona Wsp[2];

public :

const LZespolona& operator [ ] (unsigned int Ind) const { return Wsp[Ind]; }LZespolona& operator [ ] (unsigned int Ind) { return Wsp[Ind]; }double Norma( ) const { return sqrt((∗this )[0].Modul2()+(∗this )[1].Modul2()); }

};

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 128: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Oznaczenia

Klasa —

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 129: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Oznaczenia

Klasa —

Kompozycja —

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 130: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Kompozycja

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 131: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Klasa WektorZ – przykład modelu w UML

class WektorZ {LZespolona Wsp[2];

public :

const LZespolona& operator [ ] (unsigned int Ind) const { return Wsp[Ind]; }LZespolona& operator [ ] (unsigned int Ind) { return Wsp[Ind]; }double Norma( ) const { return sqrt((∗this )[0].Modul2()+(∗this )[1].Modul2()); }

};

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 132: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Klasa WektorZ – przykład modelu w UML

class WektorZ {LZespolona Wsp[2];

public :

const LZespolona& operator [ ] (unsigned int Ind) const { return Wsp[Ind]; }LZespolona& operator [ ] (unsigned int Ind) { return Wsp[Ind]; }double Norma( ) const { return sqrt((∗this )[0].Modul2()+(∗this )[1].Modul2()); }

};

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 133: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Oznaczenia

Klasa —

Kompozycja —

Agregacja —

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 134: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Agregacja

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 135: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

UML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

Oznaczenia

Klasa —

Kompozycja —

Agregacja —

Zależność —

Powiązanie —

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 136: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Plan prezentacji1 Wybrane klasy z bilioteki standardowej szablonów (STL)

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

2 Elementy statyczne – zmienne, pola klas, metodyZmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

3 Języki modelowaniaUML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

4 Od ogółu do szczegółu – Dziedziczenie klasUszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 137: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Kilka prostych pojęć

Figura geometryczna, Okrąg, Kwadrat

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 138: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Wzajemne zależności

Figura geometryczna

Okrąg

Kwadrat

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 139: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Wzajemne zależności

Figura geometryczna

Okrąg– jest figurą geometryczną inie jest kwadratem

Kwadrat

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 140: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Wzajemne zależności

Figura geometryczna

Okrąg– jest figurą geometryczną inie jest kwadratem

Kwadrat – jest figurą geometryczną, i nie jestokręgiem

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 141: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Wzajemne zależności

Figura geometryczna – może być kwadratem lub okręgiem

Okrąg– jest figurą geometryczną inie jest kwadratem

Kwadrat – jest figurą geometryczną, i nie jestokręgiem

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 142: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Charakterystyczne cechy

Figura geometryczna

Okrąg

Kwadrat

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 143: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Charakterystyczne cechy

Figura geometryczna pole powierzchni,obwód.

Okrąg

Kwadrat

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 144: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Charakterystyczne cechy

Figura geometryczna pole powierzchni,obwód.

Okrąg Jest figurą geometrycznąpole powierzchni,obwód.

Cechy szczególnedługość promienia.

Kwadrat

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 145: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Charakterystyczne cechy

Figura geometryczna pole powierzchni,obwód.

Okrąg Jest figurą geometrycznąpole powierzchni,obwód.

Cechy szczególnedługość promienia.

Kwadrat Jest figurą geometrycznąpole powierzchni,obwód.

Cechy szczególnedługość boku.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 146: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dziedziczenie

Figura geometrycznapole powierzchni,obwód.

↗ ↖Okrąg

Jest figurą geometrycznąpole powierzchni,obwód.

Cechy szczególnedługość promienia.

KwadratJest figurą geometryczną

pole powierzchni,obwód.

Cechy szczególnedługość boku.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 147: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dziedziczenie

Figura geometrycznapole powierzchni,obwód.

↗ ↖Okrąg

Jest figurą geometrycznąpole powierzchni,obwód.

Cechy szczególnedługość promienia.

KwadratJest figurą geometryczną

pole powierzchni,obwód.

Cechy szczególnedługość boku.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 148: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dziedziczenie

Figura geometrycznapole powierzchni,obwód.

↗ ↖Okrąg

Jest figurą geometrycznąpole powierzchni,obwód.

Cechy szczególnedługość promienia.

KwadratJest figurą geometryczną

pole powierzchni,obwód.

Cechy szczególnedługość boku.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 149: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dziedziczenie

Figura geometrycznapole powierzchni,obwód.

↗ ↖Okrąg

Jest figurą geometrycznąpole powierzchni,obwód.

Cechy szczególnedługość promienia.

KwadratJest figurą geometryczną

pole powierzchni,obwód.

Cechy szczególnedługość boku.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 150: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dziedziczenie

Figura geometrycznapole powierzchni,obwód.

↗ ↖Okrąg

długość promienia.

Kwadrat

długość boku.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 151: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dziedziczenie

Diagram klas w języku UML odzwierciedlający fakt dziedziczeniaklasy Figura Geometryczna przez klasy Okrąg i Kwadrat.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 152: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Plan prezentacji1 Wybrane klasy z bilioteki standardowej szablonów (STL)

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

2 Elementy statyczne – zmienne, pola klas, metodyZmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

3 Języki modelowaniaUML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

4 Od ogółu do szczegółu – Dziedziczenie klasUszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 153: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Zapis w języku C++

struct Figura Geometryczna { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .double pole;double obwod;

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

struct Okrag: Figura Geometryczna { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .double promien;

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

struct Kwadrat: Figura Geometryczna { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . .double dlugosc boku;

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 154: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Zapis w języku C++

struct Figura Geometryczna { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .double pole;double obwod;

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

struct Okrag: Figura Geometryczna { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .double promien;

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

struct Kwadrat: Figura Geometryczna { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . .double dlugosc boku;

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 155: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Zapis w języku C++

struct Figura Geometryczna { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .double pole;double obwod;

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

struct Okrag: Figura Geometryczna { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .double promien;

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

struct Kwadrat: Figura Geometryczna { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . .double dlugosc boku;

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 156: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Zapis w języku C++

struct Figura Geometryczna { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .double pole;double obwod;

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

struct Okrag: Figura Geometryczna { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .double promien;

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

struct Kwadrat: Figura Geometryczna { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . .double dlugosc boku;

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 157: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Równoważny zapis bez dziedziczenia

struct Figura Geometryczna { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .double pole;double obwod;

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

struct Okrag: Figura Geometryczna { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .double pole;double obwod;double promien;

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

struct Kwadrat { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .double pole;double obwod;double dlugosc boku;

}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 158: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dziedziczenie pozwala na odzwierciedlenie hierarchiimodelowanych pojęć i związków między nimi.

Dodatkową istotną korzyścią jest, to że możemy wprosty sposób wykorzystać kod dziedziczonej klasybazowej w klasie pochodnej.Bez dziedzicznie konieczne byłoby napisaniewielokrotnie tego samego kodu w klasachpochodnych.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 159: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Plan prezentacji1 Wybrane klasy z bilioteki standardowej szablonów (STL)

Szablony o dostępie sekwencyjnymSzablon std::vector<>Szablon std::list<>Jak przeglądać kolekcje – idea iteratora

2 Elementy statyczne – zmienne, pola klas, metodyZmienne globalne versus zmienne statyczneStatyczne pola klasyMetody statyczneRozmiar obiektów statycznych i przykłady użycia

3 Języki modelowaniaUML – geneza i przeznaczenieUML – DiagramyPodstawowe oznaczenia – diagram klas

4 Od ogółu do szczegółu – Dziedziczenie klasUszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 160: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Tryby dziedziczenia

Tryby dziedziczenia:• publiczny −→ class Klasa Pochodna: public Klasa Bazowa { ... };

• chroniony −→ class Klasa Pochodna: protected Klasa Bazowa { ... };

• prywatny −→ class Klasa Pochodna: private Klasa Bazowa { ... };

Klasa Pochodna:. . . Klasa Bazowa−→

class Klasa Pochodna: Klasa Bazowa . . . −→ class Klasa Pochodna: private Klasa Bazowa . . .

struct Klasa Pochodna: Klasa Bazowa . . . −→ struct Klasa Pochodna: public Klasa Bazowa . . .

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 161: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Tryby dziedziczenia

Tryby dziedziczenia:• publiczny −→ class Klasa Pochodna: public Klasa Bazowa { ... };

• chroniony −→ class Klasa Pochodna: protected Klasa Bazowa { ... };

• prywatny −→ class Klasa Pochodna: private Klasa Bazowa { ... };

Klasa Pochodna:. . . Klasa Bazowa−→

class Klasa Pochodna: Klasa Bazowa . . . −→ class Klasa Pochodna: private Klasa Bazowa . . .

struct Klasa Pochodna: Klasa Bazowa . . . −→ struct Klasa Pochodna: public Klasa Bazowa . . .Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 162: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Tryby dziedziczenia

Tryby dziedziczenia:• publiczny −→ class Klasa Pochodna: public Klasa Bazowa { ... };

• chroniony −→ class Klasa Pochodna: protected Klasa Bazowa { ... };

• prywatny −→ class Klasa Pochodna: private Klasa Bazowa { ... };

Klasa Pochodna:. . . Klasa Bazowa−→

class Klasa Pochodna: Klasa Bazowa . . . −→ class Klasa Pochodna: private Klasa Bazowa . . .

struct Klasa Pochodna: Klasa Bazowa . . . −→ struct Klasa Pochodna: public Klasa Bazowa . . .Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 163: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Tryby dziedziczenia

Tryby dziedziczenia:• publiczny −→ class Klasa Pochodna: public Klasa Bazowa { ... };

• chroniony −→ class Klasa Pochodna: protected Klasa Bazowa { ... };

• prywatny −→ class Klasa Pochodna: private Klasa Bazowa { ... };

Klasa Pochodna:. . . Klasa Bazowa−→

class Klasa Pochodna: Klasa Bazowa . . . −→ class Klasa Pochodna: private Klasa Bazowa . . .

struct Klasa Pochodna: Klasa Bazowa . . . −→ struct Klasa Pochodna: public Klasa Bazowa . . .

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 164: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Tryby dziedziczenia

Tryby dziedziczenia:• publiczny −→ class Klasa Pochodna: public Klasa Bazowa { ... };

• chroniony −→ class Klasa Pochodna: protected Klasa Bazowa { ... };

• prywatny −→ class Klasa Pochodna: private Klasa Bazowa { ... };

Klasa Pochodna:. . . Klasa Bazowa−→

class Klasa Pochodna: Klasa Bazowa . . . −→ class Klasa Pochodna: private Klasa Bazowa . . .

struct Klasa Pochodna: Klasa Bazowa . . . −→ struct Klasa Pochodna: public Klasa Bazowa . . .Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 165: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Tryby dziedziczenia

Tryby dziedziczenia:• publiczny −→ class Klasa Pochodna: public Klasa Bazowa { ... };

• chroniony −→ class Klasa Pochodna: protected Klasa Bazowa { ... };

• prywatny −→ class Klasa Pochodna: private Klasa Bazowa { ... };

Klasa Pochodna:. . . Klasa Bazowa−→

class Klasa Pochodna: Klasa Bazowa . . . −→ class Klasa Pochodna: private Klasa Bazowa . . .

struct Klasa Pochodna: Klasa Bazowa . . . −→ struct Klasa Pochodna: public Klasa Bazowa . . .Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 166: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dziedziczenie w trybie publicznym

Tryb dziedziczenia:

• publiczny −→ class Klasa Pochodna: public Klasa Bazowa{

. . .};

Klasa Pochodna:public Klasa Bazowa−→

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 167: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dostęp do pól w klasie pochodnej

class KlasaBazowa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .int PolePryw KBaz;

protected :int PoleChro KBaz;

public :int PolePubl KBaz;

}; //. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

class KlasaPochodna: public KlasaBazowa { // . . . . . . . . . . . . . . . . . . . . . . .public :

void OdwolanieDoPol( );}; //. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

void KlasaPochodna::OdwolanieDoPol( ){

PolePubl KBaz = PoleChro KBaz = PolePryw KBaz = 0;}

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 168: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dostęp do pól w klasie pochodnej

class KlasaBazowa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .int PolePryw KBaz;

protected :int PoleChro KBaz;

public :int PolePubl KBaz;

}; //. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

class KlasaPochodna: public KlasaBazowa { // . . . . . . . . . . . . . . . . . . . . . . .public :

void OdwolanieDoPol( );}; //. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

void KlasaPochodna::OdwolanieDoPol( ){

PolePubl KBaz = PoleChro KBaz = PPP���PPP���PPP��� PPP��

�PPP���PPP���PolePryw KBaz= 0;

}

Pola i metody prywatne klasy bazowej sąniedostępne na poziomie metod klasypochodnej. Dostępne są natomiast pola imetody znajdujące się w sekcji chronionej ipublicznej. Własność ta nie zależy odsposobu dziedziczenia klasy bazowej.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 169: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dostęp do pól obiektuclass KlasaBazowa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int PolePryw KBaz;

protected :int PoleChro KBaz;

public :int PolePubl KBaz;}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

class KlasaPochodna: public KlasaBazowa { . . . } // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int main( ){KlasaBazowa ObBa;

ObBa. PolePryw KBaz = 1;PPP���

ObBa. PoleChro KBaz = 2;PPP���

ObBa. PolePubl KBaz = 3;}

int main( ){KlasaPochodna ObPo;

ObPo. PolePryw KBaz = 1;PPP���

ObPo. PoleChro KBaz = 2;PPP���

ObPo. PolePubl KBaz = 3;}

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 170: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dostęp do pól obiektuclass KlasaBazowa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int PolePryw KBaz;

protected :int PoleChro KBaz;

public :int PolePubl KBaz;}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

class KlasaPochodna: public KlasaBazowa { . . . } // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int main( ){KlasaBazowa ObBa;

ObBa. PolePryw KBaz = 1;PPP���

ObBa. PoleChro KBaz = 2;PPP���

ObBa. PolePubl KBaz = 3;}

int main( ){KlasaPochodna ObPo;

ObPo. PolePryw KBaz = 1;PPP���

ObPo. PoleChro KBaz = 2;PPP���

ObPo. PolePubl KBaz = 3;}

W przypadku dziedziczenia w trybiepublicznym pola i metody klasy bazowej,które są niedostępne poza tą klasą. Sąrównież niedostępne w przypadku obiektuklasy pochodnej.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 171: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dziedziczenie w trybie chronionym

Tryb dziedziczenia:

• chroniony −→ class Klasa Pochodna: protected Klasa Bazowa{

. . .};

Klasa Pochodna:protected Klasa Bazowa−→

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 172: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dostęp do pól w klasie pochodnej

class KlasaBazowa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .int PolePryw KBaz;

protected :int PoleChro KBaz;

public :int PolePubl KBaz;

}; //. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

class KlasaPochodna: protected KlasaBazowa { // . . . . . . . . . . . . . . . . . . .public :

void OdwolanieDoPol( );}; //. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

void KlasaPochodna::OdwolanieDoPol( ){

PolePubl KBaz = PoleChro KBaz = PolePryw KBaz = 0;}

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 173: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dostęp do pól w klasie pochodnej

class KlasaBazowa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .int PolePryw KBaz;

protected :int PoleChro KBaz;

public :int PolePubl KBaz;

}; //. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

class KlasaPochodna: protected KlasaBazowa { // . . . . . . . . . . . . . . . . . . .public :

void OdwolanieDoPol( );}; //. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

void KlasaPochodna::OdwolanieDoPol( ){

PolePubl KBaz = PoleChro KBaz = PPP���PPP���PPP��� PPP��

�PPP���PPP���PolePryw KBaz= 0;

}

Dziedziczenie w trybie chronionym nieogranicza dostępności pól i metod klasybazowej na poziomie metod klasypochodnej. Nie powoduje też, że pola imetody prywatne mogłyby stać się dostępnedla klasy pochodnej.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 174: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dostęp do pól obiektuclass KlasaBazowa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int PolePryw KBaz;

protected :int PoleChro KBaz;

public :int PolePubl KBaz;}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

class KlasaPochodna: protected KlasaBazowa { . . . } // . . . . . . . . . . . . . . . . . . .

int main( ){KlasaBazowa ObBa;

ObBa. PolePryw KBaz = 1;PPP���PPP���PPP���

ObBa. PoleChro KBaz = 2;PPP���PPP���PPP���

ObBa. PolePubl KBaz = 3;}

int main( ){KlasaPochodna ObPo;

ObPo. PolePryw KBaz = 1;PPP���PPP���PPP���

ObPo. PoleChro KBaz = 2;PPP���PPP���PPP���

ObPo. PolePubl KBaz = 3;PPP���PPP���PPP���

}

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 175: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dostęp do pól obiektuclass KlasaBazowa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int PolePryw KBaz;

protected :int PoleChro KBaz;

public :int PolePubl KBaz;}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

class KlasaPochodna: protected KlasaBazowa { . . . } // . . . . . . . . . . . . . . . . . . .

int main( ){KlasaBazowa ObBa;

ObBa. PolePryw KBaz = 1;PPP���PPP���PPP���

ObBa. PoleChro KBaz = 2;PPP���PPP���PPP���

ObBa. PolePubl KBaz = 3;}

int main( ){KlasaPochodna ObPo;

ObPo. PolePryw KBaz = 1;PPP���PPP���PPP���

ObPo. PoleChro KBaz = 2;PPP���PPP���PPP���

ObPo. PolePubl KBaz = 3;PPP���PPP���PPP���

}

Dziedziczenie w trybie chronionym sprawia,że wszystkie komponenty klasy bazowejstają się niedostępne poza klasą pochodną.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 176: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dziedziczenie w trybie prywatnym

Tryb dziedziczenia:

• prywatnym −→ class Klasa Pochodna: private Klasa Bazowa{

. . .};

Klasa Pochodna:private Klasa Bazowa−→

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 177: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dostęp do pól w klasie pochodnej

class KlasaBazowa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .int PolePryw KBaz;

protected :int PoleChro KBaz;

public :int PolePubl KBaz;

}; //. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

class KlasaPochodna: private KlasaBazowa { // . . . . . . . . . . . . . . . . . . . . . .public :

void OdwolanieDoPol( );}; //. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

void KlasaPochodna::OdwolanieDoPol( ){

PolePubl KBaz = PoleChro KBaz = PolePryw KBaz = 0;}

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 178: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dostęp do pól w klasie pochodnej

class KlasaBazowa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .int PolePryw KBaz;

protected :int PoleChro KBaz;

public :int PolePubl KBaz;

}; //. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

class KlasaPochodna: private KlasaBazowa { // . . . . . . . . . . . . . . . . . . . . . .public :

void OdwolanieDoPol( );}; //. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

void KlasaPochodna::OdwolanieDoPol( ){

PolePubl KBaz = PoleChro KBaz = PPP���PPP���PPP��� PPP��

�PPP���PPP���PolePryw KBaz= 0;

}

Dziedziczenie w trybie prywatnym, podobnie jakdziedziczenie i w trybach publicznym ichronionym, nie ogranicza dostępności pól i metodklasy bazowej na poziomie metod klasy pochodnej.Nie powoduje też, że pola i metody prywatnemogłyby stać się dostępne dla klasy pochodnej.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 179: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dostęp do pól obiektuclass KlasaBazowa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int PolePryw KBaz;

protected :int PoleChro KBaz;

public :int PolePubl KBaz;}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

class KlasaPochodna: private KlasaBazowa { . . . } // . . . . . . . . . . . . . . . . . . . . . .

int main( ){KlasaBazowa ObBa;

ObBa. PolePryw KBaz = 1;PPP���PPP���PPP���

ObBa. PoleChro KBaz = 2;PPP���PPP���PPP���

ObBa. PolePubl KBaz = 3;}

int main( ){KlasaPochodna ObPo;

ObPo. PolePryw KBaz = 1;PPP���PPP���PPP���

ObPo. PoleChro KBaz = 2;PPP���PPP���PPP���

ObPo. PolePubl KBaz = 3;PPP���PPP���PPP���

}

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 180: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dostęp do pól obiektuclass KlasaBazowa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

int PolePryw KBaz;

protected :int PoleChro KBaz;

public :int PolePubl KBaz;}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

class KlasaPochodna: private KlasaBazowa { . . . } // . . . . . . . . . . . . . . . . . . . . . .

int main( ){KlasaBazowa ObBa;

ObBa. PolePryw KBaz = 1;PPP���PPP���PPP���

ObBa. PoleChro KBaz = 2;PPP���PPP���PPP���

ObBa. PolePubl KBaz = 3;}

int main( ){KlasaPochodna ObPo;

ObPo. PolePryw KBaz = 1;PPP���PPP���PPP���

ObPo. PoleChro KBaz = 2;PPP���PPP���PPP���

ObPo. PolePubl KBaz = 3;PPP���PPP���PPP���

}

Dziedziczenie w trybie prywatnym,podobnie jak dziedziczenie w trybiechronionym, sprawia, że wszystkiekomponenty klasy bazowej stają sięniedostępne poza klasą pochodną.

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 181: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dostępność komponentów – dziedziczenie: tryp chroniony

class KlasaBazowa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .int PolePryw KBaz;

protected :int PoleChro KBaz;

public :int PolePubl KBaz;}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

class KlasaPochodna: protected KlasaBazowa { } // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

class KlasaPochodna Nastepna: public KlasaPochodna { // . . . . . . . . . . . . . . . . . . . . . . . . . . .public :

void OdwolanieDoPol( );}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

void KlasaPochodna Nastepna::OdwolanieDoPol( ){

PolePubl KBaz = PoleChro KBaz = PolePryw KBaz = 0;}

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 182: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dostępność komponentów – dziedziczenie: tryp chroniony

class KlasaBazowa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .int PolePryw KBaz;

protected :int PoleChro KBaz;

public :int PolePubl KBaz;}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

class KlasaPochodna: protected KlasaBazowa { } // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

class KlasaPochodna Nastepna: public KlasaPochodna { // . . . . . . . . . . . . . . . . . . . . . . . . . . .public :

void OdwolanieDoPol( );}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

void KlasaPochodna Nastepna::OdwolanieDoPol( ){

PolePubl KBaz = PoleChro KBaz = PolePryw KBaz = 0;hhhhhhhhh

hhhhhhhhh

hhhhhhhhh

hhhhhhhhh(((((((

((

(((((((

((

(((((((

((

(((((((

((

}

Jeżeli klasa bazowa jest dziedziczona w trybiechronionym, to jej komponenty, które dostępne są wklasie pochodnej, będą dostępne również w klasiedziedziczącej klasę pochodną, zaś komponenty prywatnenie będą dostępne (niezależnie do trybu dziedziczenia).

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 183: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dostępność komponentów – dziedziczenie: tryp prywatny

class KlasaBazowa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .int PolePryw KBaz;

protected :int PoleChro KBaz;

public :int PolePubl KBaz;}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

class KlasaPochodna: private KlasaBazowa { } // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

class KlasaPochodna Nastepna: public KlasaPochodna { // . . . . . . . . . . . . . . . . . . . . . . . . . . .public :

void OdwolanieDoPol( );}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

void KlasaPochodna Nastepna::OdwolanieDoPol( ){

PolePubl KBaz = PoleChro KBaz = PolePryw KBaz = 0;}

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 184: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Uszczegółowianie pojęć, a dziedziczenieDefiniowanie dziedziczenia w języku C++Sposoby dziedziczenia

Dostępność komponentów – dziedziczenie: tryp prywatny

class KlasaBazowa { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .int PolePryw KBaz;

protected :int PoleChro KBaz;

public :int PolePubl KBaz;}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

class KlasaPochodna: private KlasaBazowa { } // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

class KlasaPochodna Nastepna: public KlasaPochodna { // . . . . . . . . . . . . . . . . . . . . . . . . . . .public :

void OdwolanieDoPol( );}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

void KlasaPochodna Nastepna::OdwolanieDoPol( ){

PolePubl KBaz = PoleChro KBaz = PolePryw KBaz = 0;hhhhhhhhh

hhhhhhhhh

hhhhhhhhh

hhhhhhhhh(((((((

((

(((((((

((

(((((((

((

(((((((

((hhhhhhhhh

hhhhhhhhh

hhhhhhhhh

hhhhhhhhh(((((((

((

(((((((

((

(((((((

((

(((((((

((hhhhhhhhh

hhhhhhhhh

hhhhhhhhh

hhhhhhhhh(((((((

((

(((((((

((

(((((((

((

(((((((

((

}

Jeżeli klasa bazowa jest dziedziczona w trybieprywatnym, to jej komponenty, które dostępnesą w klasie pochodnej, nie będą dostępne wklasie dziedziczącej klasę pochodną (niezależniedo trybu dziedziczenia).

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie

Page 185: =1=STL, pola i metody statyczne, diagramy UML, dziedziczenierab.ict.pwr.wroc.pl/~kreczmer/po/materialy/kpo-wyklad-07.pdf · UML – geneza i przeznaczenie UML – Diagramy Podstawowe

Wybrane klasy z bilioteki standardowej szablonów (STL)Elementy statyczne – zmienne, pola klas, metody

Języki modelowaniaOd ogółu do szczegółu – Dziedziczenie klas

Koniec prezentacjiDziękuję za uwagę

Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie