Signals + Threads: Qt vs. Boost
|
|
- Przybysław Zakrzewski
- 6 lat temu
- Przeglądów:
Transkrypt
1 Signals + Threads: Qt vs. Boost Adam Bujalski Adam Bujalski Signals + Threads: Qt vs. Boost / 22
2 Spis Treści 1 2 Wątki 3 Qt::QueuedConnection w boost Adam Bujalski Signals + Threads: Qt vs. Boost / 22
3 Problem w ogólności Problem w ogólnośći Obie biblioteki stanowią implementację wzorca obserwator Adam Bujalski Signals + Threads: Qt vs. Boost / 22
4 Problem w ogólności Problem w ogólnośći Obie biblioteki stanowią implementację wzorca obserwator Obserwator Slot Obserwowany Sygnał Adam Bujalski Signals + Threads: Qt vs. Boost / 22
5 Problem w ogólności Problem w ogólnośći Obie biblioteki stanowią implementację wzorca obserwator Obserwator Slot Obserwowany Sygnał Obie biblioteki umożliwiają połączenia wiele do wiele Adam Bujalski Signals + Threads: Qt vs. Boost / 22
6 w Qt Łączenie sygnałów - Qt Qt4 QObject :: connect (&a, SIGNAL ( asignal ( int )), &d, SLOT ( bslot ( int ))); d. connect (&a, SIGNAL ( asignal ( int )), SLOT ( dslot ( int ))); Adam Bujalski Signals + Threads: Qt vs. Boost / 22
7 w Qt Łączenie sygnałów - Qt Qt4 QObject :: connect (&a, SIGNAL ( asignal ( int )), &d, SLOT ( bslot ( int ))); d. connect (&a, SIGNAL ( asignal ( int )), SLOT ( dslot ( int ))); // Koniecznie w pliku naglowkowym class A : public QObject { signals : asignal ( int ); // bez ciala metody }; class D : public QObject { public slots : dslot ( int ); }; Adam Bujalski Signals + Threads: Qt vs. Boost / 22
8 w Qt Łączenie sygnałów - Qt Qt5 QObject :: connect (&a, &A:: asignal ( int ), &d, &D:: dslot ( int )); void somefunction (); QObject :: connect ( button, & QPushButton :: clicked, this, somefunction, Qt :: QueuedConnection ); Adam Bujalski Signals + Threads: Qt vs. Boost / 22
9 w Qt Łączenie sygnałów - Qt Qt5 QObject :: connect (&a, &A:: asignal ( int ), &d, &D:: dslot ( int )); void somefunction (); QObject :: connect ( button, & QPushButton :: clicked, this, somefunction, Qt :: QueuedConnection ); Dodatkowo w Qt5 zmienił się typ zwracny przez metody QObject::connect Adam Bujalski Signals + Threads: Qt vs. Boost / 22
10 w Qt Łączenie sygnałów - Qt Qt5 QObject :: connect (&a, &A:: asignal ( int ), &d, &D:: dslot ( int )); void somefunction (); QObject :: connect ( button, & QPushButton :: clicked, this, somefunction, Qt :: QueuedConnection ); Dodatkowo w Qt5 zmienił się typ zwracny przez metody QObject::connect W Qt4 był to bool Adam Bujalski Signals + Threads: Qt vs. Boost / 22
11 w Qt Łączenie sygnałów - Qt Qt5 QObject :: connect (&a, &A:: asignal ( int ), &d, &D:: dslot ( int )); void somefunction (); QObject :: connect ( button, & QPushButton :: clicked, this, somefunction, Qt :: QueuedConnection ); Dodatkowo w Qt5 zmienił się typ zwracny przez metody QObject::connect W Qt4 był to bool W Qt5 jest to QMetaObject::Connection Adam Bujalski Signals + Threads: Qt vs. Boost / 22
12 w Qt Typy połączeń Enum Qt::ConnectionType określa sposób w jaki zostanie wywołany slot obsługujący dany sygnał. Adam Bujalski Signals + Threads: Qt vs. Boost / 22
13 w Qt Typy połączeń Enum Qt::ConnectionType określa sposób w jaki zostanie wywołany slot obsługujący dany sygnał. Możliwe są następujące wartości: Stała Wartość Qt::AutoConnection 0 Qt::DirectConnection 1 Qt::QueuedConnection 2 Qt::BlockingQueuedConnection 3 Qt::UniqueConnection 0x80 Adam Bujalski Signals + Threads: Qt vs. Boost / 22
14 w boost Sygnały w boost void slotfun ( int ); struct CSlot { void operator () ( int ); void aslot ( int ); } aslot ; Adam Bujalski Signals + Threads: Qt vs. Boost / 22
15 w boost Sygnały w boost void slotfun ( int ); struct CSlot { void operator () ( int ); void aslot ( int ); } aslot ; boost :: signals2 :: signal < void ( int )> asig ; boost :: signals2 :: connection c = asig. connect ( slotfun ); Adam Bujalski Signals + Threads: Qt vs. Boost / 22
16 w boost Sygnały w boost void slotfun ( int ); struct CSlot { void operator () ( int ); void aslot ( int ); } aslot ; boost :: signals2 :: signal < void ( int )> asig ; boost :: signals2 :: connection c = asig. connect ( slotfun ); asig. connect ( aslot ); // aslot jest kopiowany asig. connect ( boost :: bind (& CSlot :: aslot, & aslot, _1)); Adam Bujalski Signals + Threads: Qt vs. Boost / 22
17 w boost Emisja sygnału Adam Bujalski Signals + Threads: Qt vs. Boost / 22
18 w boost Emisja sygnału Qt emit voidsignal (); emit asignal (25) ; Adam Bujalski Signals + Threads: Qt vs. Boost / 22
19 w boost Emisja sygnału Qt emit voidsignal (); emit asignal (25) ; boost voidsignal (); asig (25) ; Adam Bujalski Signals + Threads: Qt vs. Boost / 22
20 w boost combiner w boost Adam Bujalski Signals + Threads: Qt vs. Boost / 22
21 w boost combiner w boost W Qt wartości zwracane przez sloty wywołane podczas obsługi sygnału są ignorowane. Adam Bujalski Signals + Threads: Qt vs. Boost / 22
22 w boost combiner w boost W Qt wartości zwracane przez sloty wywołane podczas obsługi sygnału są ignorowane. W boost można podać jako argument sygnału combiner, który umożliwia dowolne połączenie wartości zwracanych przez sloty. Adam Bujalski Signals + Threads: Qt vs. Boost / 22
23 w boost combiner w boost W Qt wartości zwracane przez sloty wywołane podczas obsługi sygnału są ignorowane. W boost można podać jako argument sygnału combiner, który umożliwia dowolne połączenie wartości zwracanych przez sloty. Domyślnie boost::optional z wartością zwróconą przez ostatni wywoływany slot. Adam Bujalski Signals + Threads: Qt vs. Boost / 22
24 w boost Przykładowy combiner // aggregate_ values is a combiner which places all // the values returned from slots into a container template < typename Container > struct aggregate_ values { template < typename InputIterator > Container operator ()( InputIterator first, InputIterator last ) const { Container values ; for (; first!= last ; ++ first ) values. push_ back (* first ); // * first wywola slot return values ; } }; Adam Bujalski Signals + Threads: Qt vs. Boost / 22
25 w boost Przykładowy combiner // aggregate_ values is a combiner which places all // the values returned from slots into a container template < typename Container > struct aggregate_ values { template < typename InputIterator > Container operator ()( InputIterator first, InputIterator last ) const { Container values ; for (; first!= last ; ++ first ) values. push_ back (* first ); // * first wywola slot return values ; } }; boost :: signals2 :: signal < float ( float, float ), aggregate_ values < std :: vector < float > > > sig ; Adam Bujalski Signals + Threads: Qt vs. Boost / 22
26 w boost Przykładowy combiner // aggregate_ values is a combiner which places all // the values returned from slots into a container template < typename Container > struct aggregate_ values { template < typename InputIterator > Container operator ()( InputIterator first, InputIterator last ) const { Container values ; for (; first!= last ; ++ first ) values. push_ back (* first ); // * first wywola slot return values ; } }; boost :: signals2 :: signal < float ( float, float ), aggregate_ values < std :: vector < float > > > sig ; std :: vector < float > results = sig (5, 3); Adam Bujalski Signals + Threads: Qt vs. Boost / 22
27 Wątki Spis Treści 1 2 Wątki 3 Qt::QueuedConnection w boost Adam Bujalski Signals + Threads: Qt vs. Boost / 22
28 Wątki Wątki w boost Wątki w boost - wynik programu [7f251f24e700] Hello from thread() [7f251f250780] Hello from run_thread1() [7f251f250780] Hello from run_thread2() [7f251f24e700] Hello from thread() Adam Bujalski Signals + Threads: Qt vs. Boost / 22
29 Wątki Wątki w boost Wątki w boost - program # define LOG std :: cout << "[" \ << boost :: this_ thread :: get_id () \ << "] " void thread () { LOG << " Hello from thread ()" << std :: endl ; } void run_ thread1 () { boost :: thread t( thread ); t. join (); LOG << " Hello from run_ thread1 ()" << std :: endl ; } Adam Bujalski Signals + Threads: Qt vs. Boost / 22
30 Wątki Wątki w boost Wątki w boost - program c.d. void run_ thread2 () { boost :: thread t( thread ); // wg. dokumentacji jest thread_ joiner // ale w 1.54 nie ma takiej klasy... boost :: thread_guard <> g( t); LOG << " Hello from run_ thread2 ()" << std :: endl ; } int main () { run_thread1 (); run_thread2 (); return 0; } Adam Bujalski Signals + Threads: Qt vs. Boost / 22
31 Wątki Wątki w Qt Wątki w Qt - hello_thread.h # include < QThread > # include < QDebug > # include < iostream > # define LOG qdebug () << "[" \ << QThread :: currentthread () << "]" class HelloThread : public QThread { Q_ OBJECT protected : virtual void run () { LOG << " HelloThread "; } }; Adam Bujalski Signals + Threads: Qt vs. Boost / 22
32 Wątki Wątki w Qt Wątki w Qt - program główny # include < QCoreApplication > # include < hello_thread.h> int main ( int argc, char * argv []) { QCoreApplication a( argc, argv ); HelloThread t; t. start (); LOG << " GUI / Main Thread "; t. wait (); } return 0; Adam Bujalski Signals + Threads: Qt vs. Boost / 22
33 Wątki Wątki w Qt Wątki w Qt - wyjście programu [ QThread(0x9fe1a0) ] GUI/Main Thread [ HelloThread(0x7fff646c9ed0) ] HelloThread Adam Bujalski Signals + Threads: Qt vs. Boost / 22
34 Wątki Synchronizacja Synchronizacja - prymitywy Adam Bujalski Signals + Threads: Qt vs. Boost / 22
35 Wątki Synchronizacja Synchronizacja - prymitywy Obie biblioteki udostępniają podobny zestaw prymitywów do synchronizacji Adam Bujalski Signals + Threads: Qt vs. Boost / 22
36 Wątki Synchronizacja Synchronizacja - prymitywy Obie biblioteki udostępniają podobny zestaw prymitywów do synchronizacji boost Qt mutex QMutex timed_mutex recursive_mutex QMutex(QMutex::Recursive) recursive_timex_mutex shared_mutex QReadWriteLock upgradable_mutex QSemaphore condition_variable[_any] QWaitCondition Adam Bujalski Signals + Threads: Qt vs. Boost / 22
37 Wątki Synchronizacja Synchronizacja - prymitywy Obie biblioteki udostępniają podobny zestaw prymitywów do synchronizacji boost Qt mutex QMutex timed_mutex recursive_mutex QMutex(QMutex::Recursive) recursive_timex_mutex shared_mutex QReadWriteLock upgradable_mutex QSemaphore condition_variable[_any] QWaitCondition Dodatkowo w obu bibliotekach dostępne są mechanizmy RAII do odpowiedniego zajmownaia zasobów. Adam Bujalski Signals + Threads: Qt vs. Boost / 22
38 Wątki QtRunable/QThreadPool i QtConcurent Wątki w Qt - inne opcje Adam Bujalski Signals + Threads: Qt vs. Boost / 22
39 Wątki QtRunable/QThreadPool i QtConcurent Wątki w Qt - inne opcje W Qt można korzystać z wielowątkowości wykorzystując dodatkowe mechanizmy, które w bardziej automatyczny sposób zarządają wątkami, Adam Bujalski Signals + Threads: Qt vs. Boost / 22
40 Wątki QtRunable/QThreadPool i QtConcurent Wątki w Qt - inne opcje W Qt można korzystać z wielowątkowości wykorzystując dodatkowe mechanizmy, które w bardziej automatyczny sposób zarządają wątkami, Mechanizm QThreadPool w połączeniu z QRunnable Adam Bujalski Signals + Threads: Qt vs. Boost / 22
41 Wątki QtRunable/QThreadPool i QtConcurent Wątki w Qt - inne opcje W Qt można korzystać z wielowątkowości wykorzystując dodatkowe mechanizmy, które w bardziej automatyczny sposób zarządają wątkami, Mechanizm QThreadPool w połączeniu z QRunnable Ale ciągle wymaga on ręcznego ustalania ilości wątków do uruchomienia, Adam Bujalski Signals + Threads: Qt vs. Boost / 22
42 Wątki QtRunable/QThreadPool i QtConcurent Wątki w Qt - inne opcje W Qt można korzystać z wielowątkowości wykorzystując dodatkowe mechanizmy, które w bardziej automatyczny sposób zarządają wątkami, Mechanizm QThreadPool w połączeniu z QRunnable Ale ciągle wymaga on ręcznego ustalania ilości wątków do uruchomienia, Wysokopoziomowy QtConcurent, który samodzielnie dostosowuje ilość wątków do ilości procesorów w systemie i udostępnia funkcyjne API MapReduce i FilterReduce. Adam Bujalski Signals + Threads: Qt vs. Boost / 22
43 Wątki QtRunable/QThreadPool i QtConcurent MapReduce w Qt - map typedef QMap < QString, int > WordCount ; // countwords counts the words in a single file. // This function is called in parallel by several // threads and must be thread safe. WordCount countwords ( const QString & file ) { QFile f( file ); f. open ( QIODevice :: ReadOnly ); QTextStream textstream (& f); WordCount wordcount ; while ( textstream. atend () == false ) foreach ( QString word, textstream. readline (). split (" ")) wordcount [ word ] += 1; } return wordcount ; Adam Bujalski Signals + Threads: Qt vs. Boost / 22
44 Wątki QtRunable/QThreadPool i QtConcurent MapReduce w Qt - reduce // reduce adds the results from map to the final result. // This functor will only be called by one thread // at a time. void reduce ( WordCount & result, const WordCount & w) { QMapIterator < QString, int > i(w); while (i. hasnext ()) { i. next (); result [i. key ()] += i. value (); } } QStringList files = findfiles (/*... */); WordCount total = mappedreduced ( files, countwords, reduce ); Adam Bujalski Signals + Threads: Qt vs. Boost / 22
45 Qt::QueuedConnection w boost Na koniec Qt::QueuedConnection w boost Adam Bujalski Signals + Threads: Qt vs. Boost / 22
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
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
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.
Szablony funkcji i szablony 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 2011 Bogdan Kreczmer Niniejszy dokument
Programowanie w środowiskach RAD QtCreator, Qt i C++
Programowanie w środowiskach RAD QtCreator, Qt i C++ Roman Simiński roman.siminski@us.edu.pl www.siminskionline.pl Wprowadzenie do programowania w C++ z wykorzystaniem biblioteki Qt Sygnały i sloty Sygnały
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
The Graphics View Framework. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5. he Graphics View Framework - architektura
The Graphics View Framework Oprogramowanie i wykorzystanie stacji roboczych Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska The Graphics View
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
Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4
Wykład 4 p. 1/1 Oprogramowanie i wykorzystanie stacji roboczych Wykład 4 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Obsługa sieci Wykład
obiekty funkcyjne - funktory
#include #include #include #include #include #include #include #include #include #include using namespace
Standard C++0x (C++1x?) Marcin Świderski
Standard C++0x (C++1x?) Marcin Świderski sfider@students.mimuw.edu.pl O czym będzie mowa? Wytyczne komitetu standaryzacyjnego Rozszerzenia języka Rozszerzenia języka szablony Rozszerzenia biblioteki standardowej
Qt - podstawowe cechy
Qt - podstawowe cechy Bogdan Kreczmer ZPCiR ICT PWR pokój 307 budynek C3 kreczmer@ict.pwr.wroc.pl Copyright c 2003 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania
Składnia C++ Programowanie Obiektowe Mateusz Cicheński
Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Konstruktory i destruktory
Programowanie w środowiskach RAD Qt i C++
Programowanie w środowiskach RAD Qt i C++ Roman Simiński roman.siminski@us.edu.pl www.siminskionline.pl Wprowadzenie do programowania w języku C++ z wykorzystaniem biblioteki Qt Qt i QtCreator Aktualnie
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
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)
Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )
Jzyk C++ cz 3 Jarosław Gramacki Instytut Informatyki i Elektroniki # $$%%& ' ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )!" 2 # $$%%& ' ( $%%/,))3 ( %* 2 / 4 ( ( *' *''*,
Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.
- - uzupełnienie notatek: dr Jerzy Białkowski - - 1-2 - - - 1 #include 2 #include 3 # include 4 using namespace std ; 5 6 class Punkt { 7 8 private : 9 double
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,
Podstawy programowania w Qt4
Podstawy programowania w Qt4 Rafał Rawicki 21 kwietnia 2007 Co to jest Qt? Zestaw bibliotek dla języka C++ oraz narzędzia roszerzające jego możliwości Ponad 400 klas Introspekcja oraz mechanizm sygnałów
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
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
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
Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017
Wykład 13 14 czerwiec 2017 Java vs cpp - podobieństwa Podobny sposób definiowania klas. Występowanie typów podstawowych: boolean, char, byte, short, int, long, float, double. Podobna zasada definiowania
Składnia C++ Programowanie Obiektowe Mateusz Cicheński
Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Przeciążanie operatorów Słowo
STL: implementowanie algorytmów C++: STL. STL: implementowanie algorytmów. STL: implementowanie algorytmów. STL: implementowanie algorytmów
Algorytm przeszukiwania w głąb Przeszukiwanie grafu odwiedzenie wszystkich jego wierzchołków w kolejności jak na rysunku obok: C++: STL Implementowanie własnych algorytmów Reprezentacja grafu w programie
Obsługa wyjątków. Język C++ WW12
Obsługa wyjątków Pozwala zarządzać błędami wykonania w uporządkowany sposób. Umożliwia automatyczne wywołanie części kodu, funkcji, metod klas, który trzeba wykonać przy powstaniu błędów. try //blok try
Mechanizm sygnałów i slotów. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4. Sygnały i sloty - definicja klasy
Mechanizm sygnałów i slotów Oprogramowanie i wykorzystanie stacji roboczych Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Mechanizm sygnałów
Składnia C++ Programowanie Obiektowe, część 3 Mateusz Cicheński
Składnia C++ Programowanie Obiektowe, część 3 Mateusz Cicheński Rzutowanie Implicit/explicit cast Reinterpret cast Static cast Z wykorzystaniem Run-time Type Information Obsługa wyjątków Czym jest wyjątek
STL: kontenery. STL: kontenery. STL: kontenery. Typy kontenerów STL. STL: kontenery. STL: kontenery. multimap. Kontener map: przykład zadanie:
Kontener map: przykład zadanie: Jak policzyć liczby różnych słów występujących w tekście? Rozwiązanie: Potrzebny jest kontener, który będzie zawierał listę różnych słów (tj. listę bez powtórzeń), która
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
Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().
Wątki Streszczenie Celem wykładu jest wprowadzenie do obsługi wątków w Javie. Czas wykładu 45 minut. Definiowanie wątków jako klas potomnych Thread Nadpisanie metody run(). class Watek extends Thread public
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ę
I - Microsoft Visual Studio C++
I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i
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
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
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
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.
wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i
Zdalne wywołania procedur. Jarosław Kuchta Programowanie Współbieżne
Zdalne wywołania procedur Jarosław Kuchta Programowanie Współbieżne Podstawy RPC Remote Procedure Call Wywołanie procedur jednego procesu z innego procesu. Proces wywoływany serwer Proces wywołujący -
Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 12 Katarzyna Grzelak 28 maja 2018 K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27 Klasy cd K.Grzelak (Wykład 12) Programowanie w C++ 2 / 27 Klasy - powtórzenie Klasy typy definiowane
public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje
Zbudujemy klasę Definicję klasy zapiszmy w pliku tstring.h #ifndef TSTRING_H #define TSTRING_H #include // w pliku nagłówkowym NIE // otwieramy przestrzeni std // interfejs private: // implementacja
PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO
PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO LABORATORIUM Temat: THREADS Mariusz Rudnicki 2016 1. Przygotowanie platformy i środowiska IDE. Przed uruchomieniem własnego kodu zwiększ priorytet procesu qconn
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;
C++11. C++ 11 wybrane elementy. C++11: referencje do rvalue C++ 11: C++11: referencje do rvalue. C++11: referencje do rvalue. Referencje do rvalue
C++ 11 wybrane elementy C++11 Lista rozszerzeń C++11 obecnych w VC2013: 1. Referencje do rvalue, 2. Jednolite inicjowanie i delegowanie konstruktorów, 3. Konstruktory delegujące 4. Jednolita inicjalizacja
Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej
Wykład II - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Operacje dyskowe - zapis do pliku #include #include
Systemy wbudowane. Architektura środowiska SystemC. Wykład 8: SystemC zasady modelowania systemów wbudowanych
Systemy wbudowane Wykład 8: SystemC zasady modelowania systemów wbudowanych Architektura środowiska SystemC 11/19/2011 S.Deniziak:Systemy wbudowane 2 1 Tworzenie modelu w SystemC 11/19/2011 S.Deniziak:Systemy
Technologie cyfrowe semestr letni 2018/2019
Technologie cyfrowe semestr letni 2018/2019 Tomasz Kazimierczuk Wykład 8 (15.04.2019) Kompilacja Kompilacja programu (kodu): proces tłumaczenia kodu napisanego w wybranym języku na kod maszynowy, zrozumiały
Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30
Programowanie w C++ Wykład 11 Katarzyna Grzelak 13 maja 2019 K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30 Klasy cd K.Grzelak (Wykład 11) Programowanie w C++ 2 / 30 Klasy - powtórzenie Klasy typy definiowane
Język C++ wykład VIII
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,
Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3
Modelowanie numeryczne w fizyce atmosfery Sylwester Arabas (ćwiczenia do wykładu dr. hab. inż. Lecha Łobockiego) Instytut Geofizyki, Wydział Fizyki Uniwersytetu Warszawskiego 3. listopada 2011 r. Schemat
Technologie cyfrowe semestr letni 2018/2019
Technologie cyfrowe semestr letni 2018/2019 Tomasz Kazimierczuk Wykład 7 (08.04.2019) Wikipedia Programowanie komputerów proces projektowania, tworzenia, testowania i utrzymywania kodu źródłowego programów
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. 1. Przygotowanie środowiska programistycznego. Zajęcia będą
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
Języki programowania - podstawy
Języki programowania - podstawy Andrzej Dudek Wydział Techniczno Informatyczny W Jeleniej Górze Dudek A. Informatyka przemysłowa tendencje i wyzwania 26.10.2015 1 /24 Algorytm określony sposób rozwiązania
Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019
Wykład 3 22 marca 2019 Klasy wewnętrzne Klasa wewnętrzna class A {... class B {... }... } Klasa B jest klasa wewnętrzna w klasie A. Klasa A jest klasa otaczajac a klasy B. Klasy wewnętrzne Właściwości
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
Curiously recurring template pattern
class Derived : public Base Adam Mizerski adam@mizerski.pl Warsaw C++ Users Group 13 stycznia 2015 Wstęp The Matasano Crypto Challenges The Matasano Crypto Challenges http://cryptopals.com/ Wstęp
Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:
Program przedmiotu Programowanie (język C++) Wykład 1. Język C a C++. Definiowanie prostych klas. Typy referencyjne. Domyślne wartości argumentów. PrzeciąŜanie funkcji. Konstruktory, destruktory. Definiowanie
Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:
Program przedmiotu Programowanie Obiektowe (język C++) Wykład 1. Definiowanie prostych klas. Przykłady. Przypomnienie: typy referencyjne, domyślne wartości argumentów, przeciąŝanie funkcji. Konstruktory,
Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.
Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using
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
Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1
Współbieżność i równoległość w środowiskach obiektowych Krzysztof Banaś Obliczenia równoległe 1 Java Model współbieżności Javy opiera się na realizacji szeregu omawianych dotychczas elementów: zarządzanie
Przeciążenie (przeładowanie nazw) funkcji
Przeciążenie (przeładowanie nazw) funkcji dla większości języków (w tym C) zasada w programie może być tylko jedna funkcja o danej nazwie kompilator C++ - dopuszcza więcej niż jedną funkcję o tej samej
Programowanie i struktury danych
Programowanie i struktury danych 1 / 30 STL Standard Template Library, STL (ang. = Standardowa Biblioteka Wzorców) biblioteka C++ zawierająca szablony (wzorce), które umożliwiają wielokrotne użycie. Główne
Qt - edycja, obsługa zdarzeń, rozmieszczenie kontrolek
Qt - edycja, obsługa zdarzeń, rozmieszczenie kontrolek Bogdan Kreczmer ZPCiR ICT PWR pokój 307 budynek C3 kreczmer@ict.pwr.wroc.pl Copyright c 2003 Bogdan Kreczmer Niniejszy dokument zawiera materiały
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..............................
TEMAT : KLASY POLIMORFIZM
TEMAT : KLASY POLIMORFIZM 1. Wprowadzenie do polimorfizmu i funkcji wirtualnych w języku C++ Język C++ zakłada, że w pewnych przypadkach uzasadnione jest tworzenie klas, których reprezentanci w programie
Dzisiejszy wykład. Klasa string. wersja prosta wersja ze zliczaniem odwołań. Wyjątki Specyfikator volatile Semafory
Dzisiejszy wykład Klasa string wersja prosta wersja ze zliczaniem odwołań Wyjątki Specyfikator volatile Semafory 1 Klasa string Przetwarzanie tekstów jest powszechną dziedziną zastosowań komputerów W języku
1 Atrybuty i metody klasowe
1 Atrybuty i metody klasowe Składowe klasowe (statyczne) Każdy obiekt klasy posiada własny zestaw atrybutów. Metody używają atrybutów odpowiedniego obiektu. Czasem potrzeba atrybutów wspólnych dla wszystkich
Qt - dialogi. Bogdan Kreczmer. ZPCiR ICT PWR pokój 307 budynek C3
Qt - dialogi Bogdan Kreczmer ZPCiR ICT PWR pokój 307 budynek C3 kreczmer@ict.pwr.wroc.pl Copyright c 2003 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
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
Współbieżność w środowisku Java
Współbieżność w środowisku Java Wątki i ich synchronizacja Zagadnienia Tworzenie wątków Stany wątków i ich zmiana Demony Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych
Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1
Tablice i struktury czyli złożone typy danych. Programowanie Proceduralne 1 Tablica przechowuje elementy tego samego typu struktura jednorodna, homogeniczna Elementy identyfikowane liczbami (indeksem).
Część 4 życie programu
1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część
Wstęp do programowania obiektowego. STL - Standard Template Library
Wstęp do programowania obiektowego STL - Standard Template Library 1 STL z ang. Standard Template Library, (pol. standardowa biblioteka szablonów) biblioteka C++ zawierająca pojemniki, iteratory, algorytmy,
Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton
Dzisiejszy wykład Wzorce projektowe Visitor Client-Server Factory Singleton 1 Wzorzec projektowy Wzorzec nazwana generalizacja opisująca elementy i relacje rozwiązania powszechnie występującego problemu
Java. Programowanie Obiektowe Mateusz Cicheński
Java Programowanie Obiektowe Mateusz Cicheński Wielowątkowość Proces a wątek? Thread vs Runnable sleep(), interrupt(), join() Problemy wielowątkowości Obiekty niemodyfikowalne (immutable) Serializacja
Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
Procesy i wątki Proces posiada samodzielne środowisko wykonawcze. Proces posiada własny zestaw podstawowych zasobów w czasie wykonywania; W szczególności, każdy proces ma własną przestrzeń pamięci. W uproszczeniu
Wprowadzenie do tworzenia zaawansowanych interfejsów graficznych: QGraphics View Framework vs. QML. Jakub Bogacz. Patryk Górniak
Wprowadzenie do tworzenia zaawansowanych interfejsów graficznych: QGraphics View Framework vs. QML Jakub Bogacz Software Engineer Tieto, Jakub.Bogacz@tieto.com Patryk Górniak Software Engineer Tieto, Patryk.Górniak@tieto.com
Na ekranie monitora zostaną wyświetlone w dwu liniach teksty Pierwsza linia Druga linia
Struktura programu W programach napisanych w C++ litery wielkie i małe są rozróżniane i często po nauce Pascala są przyczyną błędów. Program napisany w języku C++ składa się zazw yczaj z następujących
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
Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40
Programowanie w C++ Wykład 6 Katarzyna Grzelak kwiecień 2019 K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40 STL - powtórzenie STL Standard Template Libarary standardowa biblioteka szablonów Składowe biblioteki:
Programowanie obiektowe i C++ dla matematyków
Programowanie obiektowe i C++ dla matematyków Bartosz Szreder szreder (at) mimuw... 22 XI 2011 Uwaga! Ponieważ już sobie powiedzieliśmy np. o wskaźnikach i referencjach, przez które nie chcemy przegrzebywać
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float
Wprowadzenie. Programowanie Obiektowe Mateusz Cicheński
Wprowadzenie Programowanie Obiektowe Mateusz Cicheński Paradygmaty programowania C++ Krótki przykład Kompilacja i linkowanie Makefile Przydatne flagi kompilatora Zaliczenie przedmiotu Harmonogram roku
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
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:
Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31
Programowanie w C++ Wykład 8 Katarzyna Grzelak 7 maja 2018 K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31 STL - powtórzenie STL Standard Template Libarary standardowa biblioteka szablonów Składowe biblioteki:
Środowisko programistyczne GEANT4
Środowisko programistyczne GEANT4 Leszek Adamczyk Wydział Fizyki i Informatyki Stosowanej Akademia Górniczo-Hutnicza Wykłady w semestrze zimowym 2013/2014 Informacje wstępne Kurs oparty jest na: dokumentacji
1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.
1. Pierwszy program // mój pierwszy program w C++ #include using namespace std; cout
Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw
Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej
Programowanie Proceduralne
Programowanie Proceduralne Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 10 Co dziś będzie: Definiowanie struktury Deklarowanie zmiennych bȩda cych strukturami
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
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.
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ę
ECLIPSE wnioski z dwóch pierwszych laboratoriów
PODSTAWY PROGRAMOWANIA 3-4 WYKŁAD 22-10-2015 ECLIPSE wnioski z dwóch pierwszych laboratoriów Dodanie pliku i konfiguracji startowej (każdy uruchamiany program powinien mieć własna konfigurację startową)
X Window System (I) Oprogramowanie i wykorzystanie stacji roboczych. Wykład 1. X Window System (III) X Window System (II)
X Window System (I) Oprogramowanie i wykorzystanie stacji roboczych Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska X Window System można
W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :
Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : class nazwa_klasy prywatne dane i funkcje public: publiczne dane i funkcje lista_obiektów;