Szablony funkcji i szablony klas
|
|
- Dorota Kot
- 8 lat temu
- Przeglądów:
Transkrypt
1 Bogdan Kreczmer Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania obiektowego. Jest on udostępniony pod warunkiem wykorzystania wyłącznie do własnych prywatnych potrzeb i może on być kopiowany wyłącznie w całości, razem z niniejszą stroną tytułową.
2 Niniejsza prezentacja została wykonana przy użyciu systemu składu L A TEX oraz stylu beamer, którego autorem jest Till Tantau. Strona domowa projektu Beamer:
3 1 Szablony funkcji Podstawowa idea Własności szablonów Szablony funkcji w praktyce 2 Najważniejsze cechy Proste szablony
4 Problemy z tłumaczeniem Podstawowa idea Własności szablonów Szablony funkcji w praktyce template wzorzec szablon
5 Problemy z tłumaczeniem Podstawowa idea Własności szablonów Szablony funkcji w praktyce template wzorzec szablon
6 Dlaczego szablony? Szablony funkcji Podstawowa idea Własności szablonów Szablony funkcji w praktyce W językach takich jak C i Pascal mamy do czynienia z separacją kodu i typu parametrów. Wartości z jakimi wywoływane są funkcje i procedury mogą parametryzować ich działanie. Jednak ich typy zostają ustalone raz na zawsze w momencie ich definicji. Problem: Należy zaimplementować algorytm sortowania dla obiektów różnych typów.
7 Dlaczego szablony? Szablony funkcji Podstawowa idea Własności szablonów Szablony funkcji w praktyce W językach takich jak C i Pascal mamy do czynienia z separacją kodu i typu parametrów. Wartości z jakimi wywoływane są funkcje i procedury mogą parametryzować ich działanie. Jednak ich typy zostają ustalone raz na zawsze w momencie ich definicji. Problem: Należy zaimplementować algorytm sortowania dla obiektów różnych typów.
8 Dlaczego szablony? Problem: Możliwe rozwiązania: Szablony funkcji Podstawowa idea Własności szablonów Szablony funkcji w praktyce Należy zaimplementować algorytm sortowania dla obiektów różnych typów. Implementacja algorytmu dla wszystkich typów, dla których przewidziane jest jego zastosowanie. Implementacja algorytmu dla typu podstawowego takiego jak void lub Object. Zdefiniowanie makr i wykorzystanie specjalnych preprocesorów (np. cpp dla C/C++).
9 Dlaczego szablony? Problem: Możliwe rozwiązania: Szablony funkcji Podstawowa idea Własności szablonów Szablony funkcji w praktyce Należy zaimplementować algorytm sortowania dla obiektów różnych typów. Implementacja algorytmu dla wszystkich typów, dla których przewidziane jest jego zastosowanie. Implementacja algorytmu dla typu podstawowego takiego jak void lub Object. Zdefiniowanie makr i wykorzystanie specjalnych preprocesorów (np. cpp dla C/C++).
10 Dlaczego szablony? Problem: Możliwe rozwiązania: Szablony funkcji Podstawowa idea Własności szablonów Szablony funkcji w praktyce Należy zaimplementować algorytm sortowania dla obiektów różnych typów. Implementacja algorytmu dla wszystkich typów, dla których przewidziane jest jego zastosowanie. Implementacja algorytmu dla typu podstawowego takiego jak void lub Object. Zdefiniowanie makr i wykorzystanie specjalnych preprocesorów (np. cpp dla C/C++).
11 Dlaczego szablony? Problem: Możliwe rozwiązania: Szablony funkcji Podstawowa idea Własności szablonów Szablony funkcji w praktyce Należy zaimplementować algorytm sortowania dla obiektów różnych typów. Implementacja algorytmu dla wszystkich typów, dla których przewidziane jest jego zastosowanie. Implementacja algorytmu dla typu podstawowego takiego jak void lub Object. Zdefiniowanie makr i wykorzystanie specjalnych preprocesorów (np. cpp dla C/C++). Najlepszym rozwiązaniem dla postawionego problemu jest koncepcja szablonów.
12 Dlaczego szablony? Problem: Możliwe rozwiązania: Szablony funkcji Podstawowa idea Własności szablonów Szablony funkcji w praktyce Należy zaimplementować algorytm sortowania dla obiektów różnych typów. Implementacja algorytmu dla wszystkich typów, dla których przewidziane jest jego zastosowanie. Implementacja algorytmu dla typu podstawowego takiego jak void lub Object. Zdefiniowanie makr i wykorzystanie specjalnych preprocesorów (np. cpp dla C/C++). Najlepszym rozwiązaniem dla postawionego problemu jest koncepcja szablonów.
13 Dlaczego szablony? Problem: Możliwe rozwiązania: Szablony funkcji Podstawowa idea Własności szablonów Szablony funkcji w praktyce Należy zaimplementować algorytm sortowania dla obiektów różnych typów. Implementacja algorytmu dla wszystkich typów, dla których przewidziane jest jego zastosowanie. Implementacja algorytmu dla typu podstawowego takiego jak void lub Object. Zdefiniowanie makr i wykorzystanie specjalnych preprocesorów (np. cpp dla C/C++). Najlepszym rozwiązaniem dla postawionego problemu jest koncepcja szablonów.
14 Podstawowe cechy Szablony funkcji Podstawowa idea Własności szablonów Szablony funkcji w praktyce Szablony pozwalają na definiowanie funkcji, których typy parametrów są także parametrami tych funkcji. Możliwe jest definiowanie klas, które parametryzowane mogą być typami pól występujących w tych klasach i/lub też typami parametrów metod. Programista definiuje tylko raz dany szablon. Kompilator dokonuje dedukcji typów parametrów danego szablonu i konkretyzuje go tworząc kod dla użytych typów w wywołaniu funkcji lub definicji obiektu danej klasy. Programista może też jawnie określić wartości parametrów szablonu.
15 Podstawowe cechy Szablony funkcji Podstawowa idea Własności szablonów Szablony funkcji w praktyce Szablony pozwalają na definiowanie funkcji, których typy parametrów są także parametrami tych funkcji. Możliwe jest definiowanie klas, które parametryzowane mogą być typami pól występujących w tych klasach i/lub też typami parametrów metod. Programista definiuje tylko raz dany szablon. Kompilator dokonuje dedukcji typów parametrów danego szablonu i konkretyzuje go tworząc kod dla użytych typów w wywołaniu funkcji lub definicji obiektu danej klasy. Programista może też jawnie określić wartości parametrów szablonu.
16 Podstawowe cechy Szablony funkcji Podstawowa idea Własności szablonów Szablony funkcji w praktyce Szablony pozwalają na definiowanie funkcji, których typy parametrów są także parametrami tych funkcji. Możliwe jest definiowanie klas, które parametryzowane mogą być typami pól występujących w tych klasach i/lub też typami parametrów metod. Programista definiuje tylko raz dany szablon. Kompilator dokonuje dedukcji typów parametrów danego szablonu i konkretyzuje go tworząc kod dla użytych typów w wywołaniu funkcji lub definicji obiektu danej klasy. Programista może też jawnie określić wartości parametrów szablonu.
17 Podstawowe cechy Szablony funkcji Podstawowa idea Własności szablonów Szablony funkcji w praktyce Szablony pozwalają na definiowanie funkcji, których typy parametrów są także parametrami tych funkcji. Możliwe jest definiowanie klas, które parametryzowane mogą być typami pól występujących w tych klasach i/lub też typami parametrów metod. Programista definiuje tylko raz dany szablon. Kompilator dokonuje dedukcji typów parametrów danego szablonu i konkretyzuje go tworząc kod dla użytych typów w wywołaniu funkcji lub definicji obiektu danej klasy. Programista może też jawnie określić wartości parametrów szablonu.
18 Wady i zalety Szablony funkcji Podstawowa idea Własności szablonów Szablony funkcji w praktyce Zalety: Szablony dają możliwość tworzenia uniwersalnych algorytmów i uniwersalnych struktur danych. W odróżnieniu od makr możliwe jest zachowanie przejrzystości kodu. W odróżnieniu od wykorzystywania typów bazowych pozwalają zachować ścisłą kontrolę typów w trakcie kompilacji. Wady: Brak możliwości tworzenia oddzielnych jednostek kompilacji (modułów) w postaci czystych szablonów.
19 Podstawowa idea Własności szablonów Szablony funkcji w praktyce Szablony funkcji przykład dla typów wbudowanych template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; enum Symbole a=1, b, c ; int main( ) cout << Max(1,2) << endl; cout << Max(1.1, 2.2) << endl; cout << Max( A, B ) << endl; cout << Max( a, b ) << endl;
20 Podstawowa idea Własności szablonów Szablony funkcji w praktyce Szablony funkcji przykład dla typów wbudowanych template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; enum Symbole a=1, b, c ; int main( ) cout << Max(1,2) << endl; cout << Max(1.1, 2.2) << endl; cout << Max( A, B ) << endl; cout << Max( a, b ) << endl;
21 Podstawowa idea Własności szablonów Szablony funkcji w praktyce Szablony funkcji przykład dla typów wbudowanych template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; W tym przykładzie kompilator generuje kod funkcji Max dla czterech przypadków. Słowo kluczowe class może zostać zastąpione przez typename. enum Symbole a=1, b, c ; int main( ) cout << Max(1,2) << endl; cout << Max(1.1, 2.2) << endl; cout << Max( A, B ) << endl; cout << Max( a, b ) << endl;
22 Szablony funkcji własna klasa Podstawowa idea Własności szablonów Szablony funkcji w praktyce template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; Czy szablon można stosować również dla własnych klas? int main( ) Wektor W1(1,1), W2(4,5), W3; W3 = Max(W1,W2);
23 Szablony funkcji własna klasa struct Wektor float x, y; ; Podstawowa idea Własności szablonów Szablony funkcji w praktyce template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; int main( ) Wektor W1(1,1), W2(4,5), W3; W3 = Max(W1,W2);
24 Szablony funkcji własna klasa struct Wektor float x, y; ; Podstawowa idea Własności szablonów Szablony funkcji w praktyce template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; W takiej postaci na pewno nie będzie dobrze. Dlaczego? int main( ) Wektor W1(1,1), W2(4,5), W3; W3 = Max(W1,W2);
25 Szablony funkcji własna klasa struct Wektor float x, y; ; Podstawowa idea Własności szablonów Szablony funkcji w praktyce template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; Problemem jest operacja prównania dwóch wektorów. Dlaczego? int main( ) Wektor W1(1,1), W2(4,5), W3; W3 = Max(W1,W2);
26 Szablony funkcji własna klasa struct Wektor float x, y; ; Podstawowa idea Własności szablonów Szablony funkcji w praktyce bool operator < ( const Wektor& W ) const return x x+y y < W.x W.x+W.y W.y; template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; Aby było dobrze, należy zdefiniować przeciążenie operatora porównania. int main( ) Wektor W1(1,1), W2(4,5), W3; W3 = Max(W1,W2);
27 Podstawowa idea Własności szablonów Szablony funkcji w praktyce Szablony funkcji porównywanie napisów template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; Czy funkcja Max w przypadku napisów będzie działać zgodnie z naszymi oczekiwaniami? int main( ) cout << Max( Kowalski, Abacki ) << endl;
28 Podstawowa idea Własności szablonów Szablony funkcji w praktyce Szablony funkcji porównywanie napisów template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; Aby mieć porównywanie napisów zamiast wskaźników należy zdefiniować wariant tej funkcji dla przypadku napisów. const char Max( const char s1, const char s2 ) return strcmp(s1,s2) < 0? s2 : s1; int main( ) cout << Max( Kowalski, Abacki ) << endl;
29 Podstawowa idea Własności szablonów Szablony funkcji w praktyce Szablony funkcji porównywanie napisów template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; Wciąż jednak jest możliwe wywoływanie szablonów poprzez jawną specyfikację jego parametrów. const char Max( const char s1, const char s2 ) return strcmp(s1,s2) < 0? s2 : s1; int main( ) cout << Max( Kowalski, Abacki ) << endl; cout << Max<const char >( Kowalski, Abacki ) << endl;
30 Podstawowa idea Własności szablonów Szablony funkcji w praktyce Szablony funkcji porównywanie napisów template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; Można jednak pominąć specyfikację parametrów. Wówczas odpowiednie parametry zostaną wydedukowane na podstawie parametrów funkcji. const char Max( const char s1, const char s2 ) return strcmp(s1,s2) < 0? s2 : s1; int main( ) cout << Max( Kowalski, Abacki ) << endl; cout << Max<const char >( Kowalski, Abacki ) << endl; cout << Max< >( Kowalski, Abacki ) << endl;
31 Podstawowa idea Własności szablonów Szablony funkcji w praktyce Szablony funkcji porównywanie napisów template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; Czy jakoś poprawić szablony, aby nie trzeba było pisać oddzielnej funkcji. const char Max( const char s1, const char s2 ) return strcmp(s1,s2) < 0? s2 : s1; int main( ) cout << Max( Kowalski, Abacki ) << endl; cout << Max<const char >( Kowalski, Abacki ) << endl; cout << Max< >( Kowalski, Abacki ) << endl;
32 Podstawowa idea Własności szablonów Szablony funkcji w praktyce Szablony funkcji porównywanie napisów template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; Dodatkową funkcję trzeba napisać, ale można ujednolicić podejście i zrobić to w ramach danego szablonu tworząc jego specjalizację. template <> const char Max<const char >( const char s1, const char s2 ) return strcmp(s1,s2) < 0? s2 : s1; int main( ) cout << Max( Kowalski, Abacki ) << endl; cout << Max<const char >( Kowalski, Abacki ) << endl; cout << Max< >( Kowalski, Abacki ) << endl;
33 Szablony klas Szablony funkcji Najważniejsze cechy Proste szablony Szablony klas pozwalają na przedstawienie ogólnych pojęć i wzajemnych ich związków. Pozwalają na abstrahowanie od typu poszczególnych atrybutów związanych z danym pojęciem. Pozwalają programiście skoncentrować na ogólnych zależnościach i mechanizmach. Szablony pozwalają na generowanie i optymalizowania już na etapie kompilacji poprzez użycie specyficznych konstrukcji programistycznych. Umożliwiają realizację idei programowania uogólnionego.
34 Szablony klas Szablony funkcji Najważniejsze cechy Proste szablony Szablony klas pozwalają na przedstawienie ogólnych pojęć i wzajemnych ich związków. Pozwalają na abstrahowanie od typu poszczególnych atrybutów związanych z danym pojęciem. Pozwalają programiście skoncentrować na ogólnych zależnościach i mechanizmach. Szablony pozwalają na generowanie i optymalizowania już na etapie kompilacji poprzez użycie specyficznych konstrukcji programistycznych. Umożliwiają realizację idei programowania uogólnionego.
35 Szablony klas Szablony funkcji Najważniejsze cechy Proste szablony Szablony klas pozwalają na przedstawienie ogólnych pojęć i wzajemnych ich związków. Pozwalają na abstrahowanie od typu poszczególnych atrybutów związanych z danym pojęciem. Pozwalają programiście skoncentrować na ogólnych zależnościach i mechanizmach. Szablony pozwalają na generowanie i optymalizowania już na etapie kompilacji poprzez użycie specyficznych konstrukcji programistycznych. Umożliwiają realizację idei programowania uogólnionego.
36 Szablony klas Szablony funkcji Najważniejsze cechy Proste szablony Szablony klas pozwalają na przedstawienie ogólnych pojęć i wzajemnych ich związków. Pozwalają na abstrahowanie od typu poszczególnych atrybutów związanych z danym pojęciem. Pozwalają programiście skoncentrować na ogólnych zależnościach i mechanizmach. Szablony pozwalają na generowanie i optymalizowania już na etapie kompilacji poprzez użycie specyficznych konstrukcji programistycznych. Umożliwiają realizację idei programowania uogólnionego.
37 Szablony klas Szablony funkcji Najważniejsze cechy Proste szablony Szablony klas pozwalają na przedstawienie ogólnych pojęć i wzajemnych ich związków. Pozwalają na abstrahowanie od typu poszczególnych atrybutów związanych z danym pojęciem. Pozwalają programiście skoncentrować na ogólnych zależnościach i mechanizmach. Szablony pozwalają na generowanie i optymalizowania już na etapie kompilacji poprzez użycie specyficznych konstrukcji programistycznych. Umożliwiają realizację idei programowania uogólnionego.
38 Ogólna postać szablonu Najważniejsze cechy Proste szablony template < lista-parametrow-rozdzielonych-przecinkami > class Klasa ;...
39 Ogólna postać szablonu Najważniejsze cechy Proste szablony template < lista-parametrow-rozdzielonych-przecinkami > class Klasa ;... Dopuszczalne parametry: typ wbudowany lub zdefiniowany przez użytkownika, stała w czasie kompilacji (liczba, wskaźnik, znaki itp.), inny szablon.
40 Ogólna postać szablonu Najważniejsze cechy Proste szablony template < lista-parametrow-rozdzielonych-przecinkami > class Klasa ;... Dopuszczalne parametry: typ wbudowany lub zdefiniowany przez użytkownika, stała w czasie kompilacji (liczba, wskaźnik, znaki itp.), inny szablon.
41 Ogólna postać szablonu Najważniejsze cechy Proste szablony template < lista-parametrow-rozdzielonych-przecinkami > class Klasa ;... Dopuszczalne parametry: typ wbudowany lub zdefiniowany przez użytkownika, stała w czasie kompilacji (liczba, wskaźnik, znaki itp.), inny szablon.
42 Ogólna postać szablonu Najważniejsze cechy Proste szablony template < lista-parametrow-rozdzielonych-przecinkami > class Klasa ;... Dopuszczalne parametry: typ wbudowany lub zdefiniowany przez użytkownika, stała w czasie kompilacji (liczba, wskaźnik, znaki itp.), inny szablon.
43 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony ; bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; Słowo kluczowe typename sygnalizuje, że parametr szablonu jest typem.
44 Przykład szablonu stosu template < class TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony ; bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true;
45 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony ; bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true;
46 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony ; bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; int main( ) Stos<float> St;
47 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony ; bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; int main( ) Stos<double[100]> St;
48 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony ; bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; int main( ) Stos<std::string> St;
49 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony ; bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; int main( ) Stos<std::istream> St;
50 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony ; bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; int main( ) Stos<std::istream> St;
51 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony ; bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; int main( ) Stos<std::istream> St;
52 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony ; bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; int main( ) Stos<std::istream > St;
53 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony ; bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; int main( ) Stos<std::istream&> St;
54 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony ; bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; int main( ) Stos<std::istream&> St;
55 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony ; bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; int main( ) Stos< Stos< Stos< char[20] > > > St;
56 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony ; bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true;
57 Przykład szablonu stosu Najważniejsze cechy Proste szablony template < typename TYP, unsigned int Rozmiar > class Stos TYP Tab[Rozmiar]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; ; bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; bool Poloz(const TYP& El) return Ilosc >= Rozmiar? false : Tab[ Ilosc++] = El, true;
58 Przykład szablonu stosu Najważniejsze cechy Proste szablony template < typename TYP, unsigned int Rozmiar > class Stos TYP Tab[Rozmiar]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; ; bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; bool Poloz(const TYP& El) return Ilosc >= Rozmiar? false : Tab[ Ilosc++] = El, true; int main( ) Stos<float, 100> St;
59 Przykład szablonu stosu Najważniejsze cechy Proste szablony template < typename TYP, unsigned int Rozmiar= 100 > class Stos TYP Tab[Rozmiar]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; ; bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; bool Poloz(const TYP& El) return Ilosc >= Rozmiar? false : Tab[ Ilosc++] = El, true; int main( ) Stos<float, 100> St;
60 Przykład szablonu stosu Najważniejsze cechy Proste szablony template < typename TYP, unsigned int Rozmiar= 100 > class Stos TYP Tab[Rozmiar]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; ; bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; bool Poloz(const TYP& El) return Ilosc >= Rozmiar? false : Tab[ Ilosc++] = El, true; int main( ) Stos<float> St;
61 Najważniejsze cechy Proste szablony Koniec prezentacji
Wprowadzenie do szablonów szablony funkcji
Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
Wprowadzenie do szablonów szablony funkcji
Wprowadzenie do szablonów szablony funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do
Wprowadzenie do szablonów klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2008-2010 Bogdan Kreczmer Niniejszy
Wartości domyślne, szablony funkcji i klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2012 Bogdan Kreczmer Niniejszy dokument
Qt sygnały i sloty. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska
Qt sygnały i sloty Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska Kurs: Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera
Przestrzenie nazw. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska
Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania
Szablony funkcji i klas (templates)
Instrukcja laboratoryjna nr 3 Programowanie w języku C 2 (C++ poziom zaawansowany) Szablony funkcji i klas (templates) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp
Praca z aplikacją designer
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2014 Bogdan Kreczmer Niniejszy dokument
Wprowadzenie do UML, przykład użycia kolizja
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2012 Bogdan Kreczmer Niniejszy dokument
Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016
Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa
Qt sygnały i designer
Qt sygnały i designer Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2015 Bogdan
Szablony. Szablony funkcji
Szablony Szablony sa mechanizmem ponownego wykorzystania kodu (reuse) W przypadku funkcji ponownie wykorzystany jest algorytm W przypadku klas ponownie wykorzystane sa wszystkie skladowe Deklaracja szablonu
Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki int getmax (int a, int b) { return (a > b? a : b); float getmax (float a, float b) { return (a > b? a : b); long getmax (long a, long b)
Schemat konstrukcja pliku Makefile
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2008 Bogdan Kreczmer Niniejszy dokument
Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce
Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
Abstrakcyjny typ danych
Abstrakcyjny typ danych Abstrakcyjny Typ Danych (abstract data type-adt): zbiór wartości wraz z powiązanymi z nimi operacjami; operacje są zdefiniowane w sposób niezależny od implementacji; operacje są
Style programowania - krótki przeglad
Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
Wyliczanie wyrażenia obiekty tymczasowe
Wyliczanie wyrażenia obiekty tymczasowe Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2013 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu
Wstęp do Programowania 2
Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 4 Funkcje przeciażone - Idea Przeciażanie funkcji (polimorfizm funkcji), to kolejna nowość w języku
Szablon klasy std::list
Szablon klasy std::list Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania
Diagramy UML, przykład problemu kolizji
Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska Kurs: Copyright c 2015 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu
Podstawy Programowania Obiektowego
Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja
Przesłanianie nazw, przestrzenie nazw
Przesłanianie nazw, przestrzenie nazw Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2013 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu
Referencje do zmiennych i obiektów
Referencje do zmiennych i obiektów Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu
Hermetyzacja oraz pola i metody statyczne
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2010 Bogdan Kreczmer Niniejszy dokument
Rzutowanie i konwersje
Rzutowanie i konwersje Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2013 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania
Pola i metody statyczne
Pola i metody statyczne Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2009 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania
Programowanie 2. Język C++. Wykład 3.
3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane
Operacje wejścia/wyjścia odsłona pierwsza
Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
Programowanie obiektowe. Wykład 5. C++: szablony
Programowanie obiektowe Wykład 5. C++: szablony Szablony Szablony to technika realizacji polimorfizmu na innym poziomie niż za pomocą funkcji wirtualnych i dziedziczenia. Mechanizm ten można rozumieć jako
Programowanie obiektowe, wykład nr 6. Klasy i obiekty
Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 6 Klasy i obiekty W programowaniu strukturalnym rozwój oprogramowania oparto
Wartości domyślne, przeciażenia funkcji
Wartości domyślne, przeciażenia funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
Style programowania - krótki przeglad
Style programowania - krótki przeglad Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
Konstruktor kopiujacy
Konstruktor kopiujacy Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego. Jest on udostępniony
Wartości domyślne, przeciażenia funkcji
Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
FUNKCJE WZORCOWE. Wykład 10. Programowanie Obiektowe (język C++) Funkcje wzorcowe wprowadzenie (2) Funkcje wzorcowe wprowadzenie (1)
Programowanie Obiektowe (język C++) Wykład 10. FUNKCJE WZORCOWE Funkcje wzorcowe wprowadzenie (1) Funkcje wzorcowe wprowadzenie (2) int max ( int a, int b ) return a>b? a : b; Aby mieć analogiczną funkcję
Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego
Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska
Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania
Dalmierze optyczne. Bogdan Kreczmer. bogdan.kreczmer@pwr.wroc.pl
Dalmierze optyczne Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2013 Bogdan Kreczmer
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Programowanie w języku C++
Programowanie w języku C++ Część dziewiąta Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi
Zaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 6 - szablony. dr inż. Robert Nowak - p. 1/15 Kolekcje i algorytmy» Deklaracja szablonu y Pojęcia niezależne od typu: kolekcje (np. listy) algorytmy (np. znajdowania
Szablony, wybrane elementy biblioteki STL
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Kurs: Copyright c 2016 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu
TEMAT : KLASY DZIEDZICZENIE
TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą
Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {
Przeciążanie operatorów [] Przykład: klasa reprezentująca typ tablicowy. Obiekt ma reprezentować tablicę, do której można się odwoływać intuicyjnie, np. Tab[i] Ma być też dostępnych kilka innych metod
Szablon klasy std::vector
Szablon klasy std::vector Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat
2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne
Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie
Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this
Wstęp do programowania obiektowego WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this 1 Nazwa typu Rozmiar Zakres Uwagi bool 1 bit wartości true albo false stdbool.h TYPY ZNAKOWE
Wstęp do Programowania 2
Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 5 W programowaniu obiektowym programista koncentruje się na obiektach. Zadaje sobie pytania typu:
Technologie programowania Wykład 4. Szablony funkcji Notes. Szablony funkcji Notes. Szablony funkcji Notes. Notes. Przemek Błaśkiewicz.
Technologie programowania Wykład 4 Przemek Błaśkiewicz 9 maja 2017 1 / 54 Szablony funkcji Często w programach zachodzi potrzeba użycia funkcji, które co do mechanizmu działaja tak samo, ale różnia się
KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
Język ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
Programowanie Obiektowew języku C++ Zadania L4
Programowanie Obiektowew języku C++ Zadania L4 Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki
Stos liczb całkowitych
Stos liczb całkowitych class StosInt int* tab; unsigned size ; StosInt(unsigned s=10) tab=new int[size=s];top=0; ~StosInt()delete[] tab; void push(int i)tab[top++]=i; int pop(void) return tab[--top]; int
Wstęp do programowania
wykład 8 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Podprogramy Czasami wygodnie jest wyodrębnić jakiś fragment programu jako pewną odrębną całość umożliwiają to podprogramy.
PARADYGMATY PROGRAMOWANIA Wykład 4
PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej
Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {
Przeciążanie a dziedziczenie class Integer2: public Integer Operatory, z wyjątkiem operatora przypisania są automatycznie dziedziczone w klasach pochodnych. Integer2(int i): Integer(i) Automatyczne tworzenie
Zaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 3 - polimorfizm. dr inż. Robert Nowak - p. 1/14 Powtórzenie Powtórzenie: klasy autonomiczne: konstruktor, konstruktor kopiujacy, operator przypisania, destruktor
Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { zdefiniuje. Integer::operator=(ri);
Przeciążanie operatorów [] Przykład: klasa reprezentująca typ tablicowy. Obiekt ma reprezentować tablicę, do której można się odwoływać intuicyjnie, np. Tab[i] Ma być też dostępnych kilka innych metod
Wyjątki (exceptions)
Instrukcja laboratoryjna nr 6 Programowanie w języku C 2 (C++ poziom zaawansowany) Wyjątki (exceptions) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp Wyjątki (ang.
Klasa, metody, rozwijanie w linii
Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
Algorytmy i Struktury Danych. Anna Paszyńska
Algorytmy i Struktury Danych Anna Paszyńska Tablica dynamiczna szablon Array Zbiory Zbiory template class Container {public: virtual ~Container() { }; virtual int Count() const = 0;
Organizacja kursu, paradygmaty, ogólnie o C i C++
Organizacja kursu, paradygmaty, ogólnie o C i C++ Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechniki Wrocławskiej Kurs: Copyright c 2015 Bogdan
Programowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.
Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 7 Przegląd typów strukturalnych - klasy i obiekty - c.d. Klasa - powtórzenie
KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
Kurs programowania. Wykład 9. Wojciech Macyna
Wykład 9 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa zbiór, lista czy
Szablony klas, zastosowanie szablonów w programach
Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do
Nowe słowa kluczowe. Komentarze. Wskaźniki typu void. class, delete, new, friend,... /* Komentarz w C i C++ */ // Komentarz w C++ (do końca wiersza)
Różnice między C i C++ (Rozszerzenia C++) Nowe słowa kluczowe class, delete, new, friend,... Komentarze /* Komentarz w C i C++ */ // Komentarz w C++ (do końca wiersza) Wskaźniki typu void W C wskaźniki
Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016
Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac
Dziedziczenie i poliformizm
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Kurs: Copyright c 2016 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu
Operacje wejścia/wyjścia (odsłona druga) - pliki
Operacje wejścia/wyjścia (odsłona druga) - pliki Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały
Klasa, metody, rozwijanie w linii
Klasa, metody, rozwijanie w linii Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu
Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej
Wykład I - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Zaliczenie przedmiotu Do zaliczenia przedmiotu niezbędne jest
Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.
M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza
DYNAMICZNE PRZYDZIELANIE PAMIECI
DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne
Przykład implementacji przeciażeń operatorów problem kolizji
Przykład implementacji przeciażeń operatorów problem kolizji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera
Wprowadzenie do programowanie obiektowego w języku C++
Wprowadzenie do programowanie obiektowego w języku C++ Część czwarta Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura
Problem Próby rozwiązania Maszyna stanów Inne zastosowania Podsumowanie. Maszyny stanów. Programowanie gier bez Unity, cz. 3.
Maszyny stanów Programowanie gier bez Unity, cz. 3 Piotr Korgul Koło Naukowe Twórców Gier Polygon 3 grudnia 2014 r. Cykl Programowanie gier bez Unity 1 Jak zorganizować prace nad grą? 2 Jak działa gra?
Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać)
Języki i Paradygmaty Programowania Laboratorium 1 Obiekty i klasy C++ Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać) UWAGA! Umiejętność tworzenia
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 4. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 4 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Przeciążanie operatorów Funkcje zaprzyjaźnione Na
Projektowanie klas c.d. Projektowanie klas przykład
Projektowanie klas c.d. ogólne wskazówki dotyczące projektowania klas: o wyodrębnienie klasy odpowiedź na potrzeby życia (obsługa rozwiązania konkretnego problemu) o zwykle nie uda się utworzyć idealnej
Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1
Typy złożone Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy podstawowe Typy całkowite: char short int long Typy zmiennopozycyjne float double Modyfikatory : unsigned, signed Typ wskaźnikowy
Paradygmaty programowania
Paradygmaty programowania Programowanie generyczne w C++ Dr inż. Andrzej Grosser Cz estochowa, 2016 2 Spis treści 1. Zadanie 3 5 1.1. Wprowadzenie.................................. 5 1.2. Obiekty funkcyjne................................
Paradygmaty programowania. Paradygmaty programowania
Paradygmaty programowania Paradygmaty programowania Dr inż. Andrzej Grosser Cz estochowa, 2013 2 Spis treści 1. Zadanie 2 5 1.1. Wprowadzenie.................................. 5 1.2. Wskazówki do zadania..............................
Obiekty i metody stałe
Obiekty i metody stałe Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania
Programowanie obiektowe w C++ Wykład 12
Programowanie obiektowe w C++ Wykład 12 dr Lidia Stępień Akademia im. Jana Długosza w Częstochowie L. Stępień (AJD) 1 / 22 Zakresowe pętle for double tab[5] {1.12,2.23,3.33,4.12,5.22 for(double x: tab)
Podstawy programowania. Wykład: 8. Wskaźniki. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD
Podstawy programowania Wykład: 8 Wskaźniki 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania w C++ Wskaźniki 2 Podstawy Pojęcie wskaźnika Wskaźnik na zmienną danego
Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów
Funkcje. Spotkanie 5 Dr inż. Dariusz JĘDRZEJCZYK Tworzenie i używanie funkcji Przekazywanie argumentów do funkcji Domyślne wartości argumentów Przeładowanie nazw funkcji Dzielenie programu na kilka plików
Algorytmy i struktury danych. wykład 1
Plan całego wykładu:. Pojęcie algorytmu, projektowanie wstępujące i zstępujące, rekurencja. Klasy algorytmów. Poprawność algorytmu, złożoność obliczeniowa. Wskaźniki, dynamiczne struktury danych: listy,
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji
Identyfikacje typu na etapie. wykonania (RTTI)
Identyfikacje typu na etapie (Run Time Type Identification) wykonania (RTTI) Może powstać taka sytuacje, gdy w trakcie kompilacji typ obiektu nie jest znany. C++ implementuje polimorfizm poprzez hierarchie
Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016
Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,
Przeciążanie operatorów
Instrukcja laboratoryjna nr 4 Programowanie w języku C 2 (C++ poziom zaawansowany) Przeciążanie operatorów dr inż. Wilk-Jakubowski Jacek mgr inż. Lasota Maciej dr inż. Kaczmarek Tomasz Wprowadzenie Oprócz
Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.
Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class
Do czego służą klasy?
KLASY Dorota Pylak 2 Do czego służą klasy? W programowaniu obiektowym posługujemy się obiektami. Obiekty charakteryzują się: cechami (inaczej - atrybutami lub stanami) operacjami, które na nich można wykonywać
Programowanie, część I
11 marca 2010 Kontakt Wstęp Informacje organizacyjne Materiał na ćwiczenia Plan wykładu http://www.fuw.edu.pl/~rwys/prog rwys@fuw.edu.pl tel. 22 55 32 263 Materiał na ćwiczenia Informacje organizacyjne
Wzorce funkcji (szablony)
Wzorce funkcji (szablony) Wzorce funkcji (ang. function template) dają możliwość wielokrotnego wykorzystywania tego samego kodu funkcji dla różnych typów danych. Załóżmy, że chcemy zdefiniować funkcję
Funkcje przeciążone, konstruktory kopiujące, argumenty domyślne
Funkcje przeciążone, konstruktory kopiujące, argumenty domyślne Przeciążenie funkcji polega na użyciu funkcji z tą samą nazwą, które mają różne listy argumentów(różne typy, różna ilość lub to i inne).
Czujniki PSD i dalmierze triangulacyjne
Czujniki PSD i dalmierze triangulacyjne Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechniki Wrocławskiej Kurs: Copyright c 2015 Bogdan Kreczmer
Java - tablice, konstruktory, dziedziczenie i hermetyzacja
Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja