=1=STL, pola i metody statyczne, diagramy UML,...
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 [email protected]
Katedra Cybernetyki i RobotykiWydział Elektroniki
Politechnika Wrocławska
Kurs: Programowanie obiektowe
Copyright c©2018 Bogdan Kreczmer
Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania obiektowego. Jest onudostępniony pod warunkiem wykorzystania wyłącznie do własnych prywatnych potrzeb i może on być kopiowanywyłącznie w całości, razem z niniejszą stroną tytułową.Programowanie obiektowe STL, pola i metody statyczne, diagramy UML, dziedziczenie
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