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

Post on 09-Feb-2019

221 views 0 download

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

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 Kreczmerbogdan.kreczmer@pwr.edu.pl

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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