GLIWICE Kontakt. Dokumentacja z projektu PROGRAMOWANIA OBIEKTOWEGO

Wielkość: px
Rozpocząć pokaz od strony:

Download "GLIWICE Kontakt. Dokumentacja z projektu PROGRAMOWANIA OBIEKTOWEGO"

Transkrypt

1 GLIWICE Kontakt Dokumentacja z projektu PROGRAMOWANIA OBIEKTOWEGO

2 Wydział Elektryczny Informatyka semestr II, grupa I sekcja I Szczygieł Błażej Siudyka Aleksandra Pełka Agnieszka Lewandowski Marcin 2

3 Spis treści 1. Podręcznik użytkownika Wymagania sprzętowe Panel programu wraz z opisem funkcji Dokumentacja projektowa Główne założenia projektu Graficzne przedstawienie architektury programu Główne klasy programu (biblioteka LibKontakt) Buddy BuddyList ByteArray DataTime KontaktException LibKontakt Message Mutex MutexLocker Network NetworkPlugin TCPSocket Thread Klasy interfejsu pseudo - graficznego Pluginy GaduGadu Biblioteki

4 1. Podręcznik użytkownika 1.1. Wymagania sprzętowe Procesor: 20 MHz Pamięć RAM: 2MB Miejsce na dysku: 1 MB System operacyjny: Windows/Linux/BSD Opcjonalnie: PC-Speaker /BSD 1.2. Panel programu wraz z opisem funkcji Uruchomienie komunikatora Kontakt odbywa się za pomocą wybrania pliku Kontakt-ncurses w systemie Linux, a Kontakt - pdcurses w Windows znajdującego się w głównym folderze programu. Po uruchomieniu, pojawia się okno powitalne, które informuje użytkownika o nazwie programu oraz dostępnych sieciach komunikatorów (tutaj GaduGadu). Tak wygląda program zaraz po uruchomieniu w terminalu Konsole. 4

5 Po wybraniu sieci ukazuje się okienko logowania gdzie, jako LOGIN podajemy numer kontaktowy komunikatora, a HASŁO jest kluczem do wybranego przez nas konta. W tym oknie możemy również wybrać jeden z podanych statusów. Numery wraz z loginami zapisanych kontaktów zostają pobrane z serwera wybranej sieci ukazuje się użytkownikowi właściwe okno komunikatora, gdzie za pomocą dostępnych opcji może przeprowadzić rozmowę z wybraną przez siebie osobą. Skróty klawiszowe odpowiadające za daną funkcję są wyszczególnione i opisane poniżej właściwego okna, co ułatwia korzystanie z komunikatora. Główne okno składa się z trzech mniejszych: Kontakty lista kontaktów pobranych z serwera; Status status wybranej osoby wraz z opisem, który udostępnia; Lista rozmów aktualnie otwarte okna rozmowy. Pewnym uprzyjemnieniem korzystania z komunikatora Kontakt jest informacja o pisanej wiadomości przez użytkownika w czasie rzeczywistym. Komunikator Kontakt udostępnia również funkcje, dzięki którym możemy modyfikować swoją listę kontaktów, dodając bądź usuwając wybrany numer. 5

6 Komunikator posiada możliwość wczytywania listy kontaktów z pliku oraz pobieranie jej z serwera oraz tzw. helpa, który informuje użytkownika o kilku dodatkowych, pomocnych funkcjach (np. zmiana koloru interfejsu, sygnał dźwiękowy wiadomości czy uppload listy). 6

7 Okno pomocy uruchamiamy dopisując przełącznik -help lub -h. Zrzut ekranu okna pomocy. Interfejs po wpisaniu komendy bw. 7

8 2. Dokumentacja projektowa 2.1. Główne założenia projektu Założeniem projektu było stworzenie prostego programu komputerowego, w pełni zorientowanego obiektowo, pozwalającego na przesyłanie natychmiastowych komunikatów pomiędzy dwoma lub więcej komputerami, poprzez sieć komputerową. Dzięki możliwości sprawdzenia aktualnego statusu o obecności użytkownika, komunikator jest znacznie sprawniejszy od poczty elektronicznej pozwala na rozmowę w czasie rzeczywistym. Dodatkowo, tworząc program, chcieliśmy by jego wymagania były znacznie niższe od wymagań ogólnodostępnych komunikatorów, co nie obciąża samego komputera i usprawnia prace komunikatora. Osiągnęliśmy to dzięki prostej szacie graficznej i zrezygnowaniu z wielu zbędnych funkcji, które nie znajdują się w podstawowych założeniach komunikatora internetowego. Ponadto stworzony przez nas program równie dobrze będzie się sprawował na platformie systemu Linux jak i Windows co znacznie zwiększa grono zainteresowanych użytkowaniem Kontaktu osób. 8

9 2.2. Graficzne przedstawienie architektury programu (UML) 9

10 10

11 11

12 12

13 13

14 2.3. Główne klasy programu (biblioteka LibKontakt) LibKontakt jest to główna biblioteka programu, zajmująca się ładowaniem pluginów sieci, obsługą wątków, protokołu TCP czy obsługą listy kontaktów. Biblioteka ta, dostarcza klasy abstrakcyjne na użytek pluginów sieci (np. Gadu-Gadu) co czyni ją dość ważną w projekcie Buddy Buddy.cpp korzysta z nagłówku Buddy.hpp, który reprezentuje klasę dla pojedynczego kontaktu. namespace Kontakt class Buddy friend class BuddyList; public: Buddy(const std::string &_name = std::string(), const std::string &addr = std::string(),bool blocked=false); bool isvalid() const; void clear(); int address_int() const; std::string address() const; std::string name() const; std::string description() const; std::string status() const; bool isblocking() const; bool isblocked() const; void setaddress ( const std::string &addr); void setname ( const std::string &_name); void setblocked ( const bool blocked); bool operator == (const Buddy &other) const; bool operator > (const Buddy &other) const; bool operator < (const Buddy &other) const; void operator = (const Buddy &other); operator std::string() const; private: std::string _name,addr,descr,_status; bool blocked, blocking; ; #endif 14

15 Klasa Buddy składa się z konstruktora przechowującego nazwę użytkownika, adres oraz sprawdza czy użytkownik nie jest zablokowany. W pliku Buddy.cpp znajdziemy metody odpowiedzialne kolejno za: wyświetlanie nazwy użytkownika, loginu bądź numeru kontaktowego, statusu czy opisu. Istnieją również metody sprawdzające czy dany rozmówca nie znajduje się na liście zablokowanych użytkowników oraz czy sami nie figurujemy na owej liście BuddyList Klasa Buddy list stanowi nic innego jak zbiór listy kontaktów przechowywany w pamięci (klasa abstrakcyjna). Klasa ta zawiera strukturę danych reprezentująca dwukierunkową listę ze swobodnym dostępem do wszystkich elementów przechowywanych w klasie Buddy, jest zabezpieczona przed możliwością użycia danych przez dwa wątki równocześnie (mutex). BuddyList wczytuje oraz zapisuje do pliku binarnego listę kontaktów. Zaprezentowana niżej metoda ilustruje mechanizm wyszukiwania kontaktu po nazwie. Buddy BuddyList::find(const std::string &name) const MutexLocker ml( mutex ); for( size_t u = 0; u < buddies.size(); ++u) if( buddies[ u ]-> name() == name) return *buddies[ u ]; return Buddy(); Prócz wyżej wymienionych funkcji, BuddyList zawiera również metody odpowiedzialne za dodanie, modyfikację oraz usunięcie kontaktu ByteArray Klasa tablicy bajtów zawierająca metody odpowiedzialne za rozszerzanie tablicy. Rozszerza możliwości kontenera std::vector< unsigned char > DataTime Klasa DataTime to nic innego jak klasa odpowiedzialna za sprawdzanie wyświetlanie czasu i daty prowadzonej rozmowy pomiędzy użytkownikami komunikatora Kontakt oraz wyświetlania jej w postaci łańcucha znaków. 15

16 Zaprezentowana poniżej metoda zwraca pełną datę a kolejna odpowiedzialna jest za wyświetlanie czasu. string DateTime::getDate() const char tmp[ 14 ]; snprintf( tmp, sizeof tmp, "%.2u.%.2u.%u", day(), month(), year()); return tmp; string DateTime::getTime() const char tmp[ 12 ]; snprintf( tmp, sizeof tmp,"%.2u:%.2u:%.2u", hour(), minute(), second()); return tmp; KontaktException KontaktException jest to klasa wyjątków, błędów zgłaszanych w przypadku nieprawidłowej komendy bądź błędnie użytkowanego programu. class KontaktException : public std::exception public: KontaktException( const char *msg ) : msg( msg ) const char *what() const throw() return msg; private: const char *msg; ; LibKontakt Klasa wyszukująca i ładująca pluginy sieci. 16

17 Message Klasą odpowiedzialną za odbieranie/wysyłanie wiadomości jest klasa Message: class Message public: Message(); Message( const std::string &txt, const std::string &addr, const DateTime &datew = DateTime(), const DateTime &dated = DateTime() ); Message( const std::string &txt, int addr, const DateTime &datew = DateTime(), const DateTime &dated = DateTime() ); virtual ~Message() void clear(); std::string text() const; std::string address() const; DateTime wyslano() const; DateTime dostarczono() const; virtual int send( const std::string &txt, const std::string &addr ); virtual Message get(); protected: std::string txt, addr; DateTime datew, dated; ; W jej skład wchodzi konstruktor, który ładuje łańcuchy znaków nazw adresata wiadomości, czasu, daty oraz treść samej wiadomości. Klasa zawiera również wirtualny destruktor oraz metody wirtualne do wysyłanie i odbierania wiadomości. int Message::send( const string &txt, const string &addr ) this->txt = txt; this->addr = addr; datew.setcurrent(); dated.clear(); return 0; Metoda odpowiedzialna za wysłanie wiadomości do serwera (wymaga implementacji w pluginie). Message Message::get() return Message(); 17

18 Mutex Prezentowana poniżej klasa chroni dane przed ich użyciem przez różne wątki równocześnie. class Mutex public: Mutex(); ~Mutex(); void lock(); void unlock(); private: void *m; ; Mutex.hpp Mutex::Mutex() #if defined _WIN32 defined _WIN64 m = new CRITICAL_SECTION; InitializeCriticalSection( ( CRITICAL_SECTION * )m ); #else m = new pthread_mutex_t; pthread_mutex_init( ( pthread_mutex_t * )m, NULL ); #endif Mutex::~Mutex() #if defined _WIN32 defined _WIN64 DeleteCriticalSection( ( CRITICAL_SECTION * )m ); delete ( CRITICAL_SECTION * )m; #else pthread_mutex_destroy( ( pthread_mutex_t * )m ); delete ( pthread_mutex_t * )m; #endif void Mutex::lock() #if defined _WIN32 defined _WIN64 EnterCriticalSection( ( CRITICAL_SECTION * )m ); #else pthread_mutex_lock( ( pthread_mutex_t * )m ); #endif void Mutex::unlock() #if defined _WIN32 defined _WIN64 LeaveCriticalSection( ( CRITICAL_SECTION * )m ); #else pthread_mutex_unlock( ( pthread_mutex_t * )m ); #endif Mutex.cpp 18

19 MutexLocker W klasie znajdziemy funkcję, która po stworzeniu obiektu wykonuje konstruktor, który blokuje informację podaną jako parametr. Po wykonaniu destruktora, mutex odblokowuje się Network Klasa Network stanowi nic innego jak interfejs sieci. NetworkPlugin, która posiada pełny dostęp do wszystkich pluginów oraz zawiera szereg metod odpowiedzialnych za wyświetlanie nazwy sieci z którą chcemy się połączyć (np. Gadu-Gadu), logowanie do serwera, sprawdzania i uaktualniania statusu, pobierania listy kontaktów czy zapisywania ustawień (opis, status, login, hasło) odpowiednio zaszyfrowanych za pomocą szyfru do pliku. Jest to jedna z ważniejszych klas na której bazują pozostałe. namespace Kontakt enum EVENT NO_EVENT, MY_STATUS, UPDATE_BUDDY_LIST, NEW_MESSAGE, MESSAGE_DELIVERED, TYPING ; class Network friend class NetworkPlugin; public: virtual std::string name() const = 0; virtual bool isconnected() const = 0; virtual void login( const std::string &login, const std::string &haslo ) = 0; virtual void logout() = 0; virtual void setcallback( void (*cb)( EVENT, Network & ) ) = 0; virtual void setdescription( const std::string &descr ) = 0; virtual std::string description() const = 0; virtual std::deque< std::string > statuslist() const = 0; virtual bool setstatus( const size_t status ) = 0; virtual bool setstatus( const std::string &status_name ) = 0; virtual size_t status() const = 0; virtual void updatestatus() = 0; virtual void downloadbuddylist() = 0; virtual Message &message() const = 0; virtual BuddyList &buddies() const = 0; virtual void typing( const bool on, const std::string &address = std::string() ) = 0; void savesettings( const std::string &login, const std::string &haslo ); void loadsettings( std::string &login, std::string &haslo ); 19

20 enum PARAMETERS ALL_PARAMETERS = 1, ONLY_USER_PARAMETERS ; std::deque< std::string > allparameters( PARAMETERS type = ALL_PARAMETERS ) const; std::string getparameter( const std::string & ) const; virtual bool modparameter( const std::string &key, const std::string &val ); protected: virtual ~Network() mutable std::map< std::string, std::string > parameters; ; Prezentowana poniżej funkcja której zadaniem jest pobranie łańcucha znaków i zapis go do pliku. static void zapisz_string(const string &str, FILE *f) uint16_t l = str.length(); fwrite( &l, 1, sizeofl, f); fwrite( str.c_str(), 1, l, f); Network.cpp Przedstawiona poniżej metoda ma za zadanie zapisu ciągów znaków odpowiedzialnych za nazwę komunikatora i sieci, loginu, hasła, opisu oraz statusu. void Network::saveSettings( const string &login, const string &haslo ) FILE *f = getfile( *this, "wb" ); if ( f ) zapisz_string( "KONTAKT", f ); zapisz_string( name(), f ); zapisz_string( XOR_reverse( login ), f ); zapisz_string( XOR_reverse( haslo ), f ); zapisz_string( XOR_reverse( description() ), f ); uint16_t l = status(); fwrite( &l, 1, sizeof l, f ); deque< string > params = allparameters( ONLY_USER_PARAMETERS ); for ( size_t s = 0 ; s < params.size() ; ++s ) zapisz_string( getparameter( params[ s ] ), f ); fclose( f ); Network.cpp 20

21 NetworkPlugin NetworkPlugin jest klasą przechowującą metody odpowiedzialne za załadowanie pluginów sieci (biblioteki.dll- Windows i.so Linux/BSD) TCPSocket TCPSocket stanowi klasę odpowiedzialną za obsługę protokołu TCP/IP, najprościej mówiąc, zawdzięczamy tej klasie połączenie z serwerem i możliwość komunikowania się. Znajdziemy tutaj również zbiór funkcji odpowiedzialnych za wysyłanie danych do serwera. Przedstawiony poniżej fragment kodu najlepiej przedstawia główne zadanie klasy TCPSocket. Zaprezentowana metoda odpowiada za połączenie komunikatora z serwerem sieci a o realizacji owego połączenia, użytkownik zostaje informowany poprzez krótkie wyświetlane komunikaty (klasy wyjątków). void TCPSocket::connect( const std::string &address, uint16_t port ) if ( isconnected() ) throw KontaktException( "Jesteś już połączony" ); if ( ( sock = socket( PF_INET, SOCK_STREAM, IPPROTO_TCP ) ) < 1 ) throw KontaktException( "Socket error" ); hostent *host; if (!( host = gethostbyname( address.c_str() ) ) ) disconect(); throw KontaktException( "Błąd połączenia i/lub DNS" ); sockaddr_in serv_addr; memset( &serv_addr, 0, sizeof( sockaddr_in ) ); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = *( uint32_t * )( *host->h_addr_list ); serv_addr.sin_port = htons( port ); if ( ::connect( sock, ( sockaddr * )&serv_addr, sizeof serv_addr ) < 0 ) disconect(); throw KontaktException( "Nie udało sie połączyć z serwerem" ); int flag = 1; setsockopt(sock, IPPROTO_TCP, TCP_NODELAY,(const char*)&flag,sizeof flag ); if (!start() ) disconect(); throw KontaktException( "Nie udało sie uruchomić wątku" ); 21

22 Thread Klasa Thread jest to klasa wątku zaprzyjaźniona z funkcją thr_func() (funkcja wywoływana w wątku), która może odwoływać się do części private i protected tej klasy. Zawiera w sobie metody odpowiedzialne za wszelkie procesy wykonywane na wątkach. Zaprezentowana poniżej funkcja wywołuje bibliotekę pthread lub WinApi w wątku, która zaś wykonuje wirtualną metode run() w klasie podanej jako parametr _thr. void *thr_func( void *_thr ) Thread *thr = ( Thread * )_thr; thr->run(); thr->p->isrunning = false; return NULL; 22

23 2.4. Klasy interfejsu pseudo - graficznego Wszelkie klasy odpowiedzialne za wygląd, interfejs graficzny z których korzysta główna biblioteka programu LibKontakt - znajdują się w bibliotece Kontakt-curses. Znajdziemy tutaj klasy odpowiedzialne za powitalny ekran komunikatora Kontakt, ekran ustawiania statusu, okno rozmowy jak i wszelkie inne okienka oraz komunikaty wyświetlane w czasie użytkowania programu. Dla przykładu zaprezentujemy klasę EkranRozmowy, odpowiedzialną za wyświetlanie okna konwersacji. namespace Kontakt class Network; class EkranRozmowy : public Ekran public: EkranRozmowy( const std::string &me, const std::string &buddyaddress, const Network &net ); ~EkranRozmowy(); void refresh(); void border_refresh(); bool nieprzeczytane(); bool jakodostarczona( const int seq ); void pisanie( const bool start ); std::string getmsg( int &FunctionKey ); void addmsg( const std::string &msg, const DateTime &wyslano, const DateTime &dostarczono ); void addmsg( const std::string &msg, const int seq ); private: const Network &net; OknoWpisywania wpisywanie; OknoRozmowy rozmowa; bool nowa_wiad; ; #endif EkranRozmowy.hpp 23

24 namespace Kontakt using namespace std; EkranRozmowy::EkranRozmowy( const string &me, const string &buddyaddress, const Network &net ) : Ekran( ROZMOWA, buddyaddress ), net( net ), wpisywanie( me ), rozmowa( buddyaddress, net.buddies(), me ), nowa_wiad( false ) EkranRozmowy::~EkranRozmowy() if ( rozmowa.trescrozmowy.niepuste() ) FILE *f = getfile( net, "a", nazwa().c_str() ); if ( f ) rozmowa.trescrozmowy.zapisz( *f ); fclose( f ); void EkranRozmowy::refresh() if (!current ) return; nowa_wiad = false; const int height = 0.75*LINES; rozmowa.setgeometry( 0, 0, COLS, height ); wpisywanie.setgeometry( 0, height, COLS, LINES-height-1 ); void EkranRozmowy::border_refresh() rozmowa.refresh_border = wpisywanie.refresh_border = true; bool EkranRozmowy::nieprzeczytane() return nowa_wiad; bool EkranRozmowy::jakoDostarczona( const int seq ) return rozmowa.trescrozmowy.jakodostarczona( seq ); void EkranRozmowy::pisanie( const bool start ) rozmowa.czy_pisze = start; string EkranRozmowy::getMsg( int &FunctionKey ) string msg = wpisywanie.getmsg( FunctionKey ); switch ( FunctionKey ) case KEY_HOME: rozmowa.trescrozmowy.home(); break; case KEY_END: rozmowa.trescrozmowy.end(); 24

25 break; case KEY_UP: --rozmowa.trescrozmowy; break; case KEY_DOWN: ++rozmowa.trescrozmowy; break; return msg; void EkranRozmowy::addMsg( const string &msg, const DateTime &wyslano, const DateTime &dostarczono ) nowa_wiad = true; rozmowa.addmsg( msg, -1, wyslano, dostarczono ); void EkranRozmowy::addMsg( const string &msg, const int seq ) rozmowa.addmsg( msg, seq, DateTime::getCurrent() ); EkranRozmowy.cpp Klasa EkranRozmowy dziedziczy z klasy Ekran i składa się z konstruktora zawierającego łańcuch znaków wyświetlający nazwę (tutaj: Ja ), numer bądź login rozmówcy oraz referencję klasy Network, potrzebnej do pobrania listy kontaktów. Niżej znajdziemy destruktor oraz metody odpowiedzialne za sprawdzanie czy znajduje się jakaś nowa, nieprzeczytana wiadomość, czy widomość została dostarczona do serwera oraz czy rozmówca odpisuje w czasie rzeczywistym na dostarczoną wiadomość. Dość ciekawą klasą z wachlarza klas interfejsu graficznego, jest Okno. Składa się ona z konstruktora zawierającego nazwę danego okienka jak, np. Kontakty czy Lista rozmów, oraz metod odpowiedzialnych za geometrię oraz kolor okna jak i ustawianie kursora w odpowiednim miejscu czy czyszczenie ekranu. To dzięki niej program wygląda estetycznie i przyjaźnie dla użytkownika. Zawarte w niej instrukcje pozwalają również użytkownikowi na poruszanie się po komunikatorze za pomocą przycisków klawiatury. 25

26 void Okno::setGeometry( int x, int y, int w, int h ) if (!win ) if ( tytul.empty() ) win = newwin( h, w, y, x ); else if ( tytul == " " ) tytul = ""; border_win = newwin( h, w, y, x ); win = subwin( border_win, h-2, w-2, y+1, x+1 ); background( KOLOR_OKNA ); ::keypad( win, keypad ); else if ( border_win ) ++x; ++y; w -= 2; h -= 2; if ( getx()!= x gety()!= y width()!= w height()!= h ) if ( border_win ) wresize( border_win, h+2, w+2 ); mvwin( border_win, y-1, x-1 ); refresh_border = true; wresize( win, h, w ); mvwin( win, y, x ); geometry_changed = true; if ( refresh_border ) border_win_draw(); draw(); geometry_changed = false; Metoda SetGeometry() odpowiedzialna za ustawianie pozycji wyświetlanych okien oraz za tworzenie okna za pierwszym wywołaniem. Ostatnią z klas, którą chcielibyśmy zaprezentować jest klasa ScrollAreaRozmowa, która zapewnia wyświetlanie rozmowy z możliwością przewijania w oknie. Zawarte w niej metody dodatkowo odpowiedzialne są za sprawdzanie czy istnieje wiadomość do zapisania oraz czy dana wiadomość została dostarczona do odbiorcy. Ponadto program poprzez instrukcje zawarte w metodzie zapisz() pozwala na utworzenie swojego rodzaju archiwum rozmów, które zostaje zapisane do pliku tekstowego, co umożliwia sprawdzenie treści rozmowy sprzed kilku dni. 26

27 void ScrollAreaRozmowa::zapisz( FILE &f ) if ( ftell( &f ) ) fputc( '\n', &f ); fprintf( &f, "Poniższe wiadomości zapisano %s:\n", DateTime::getCurrent().toString( true ).c_str() ); for( deque<wiadomosc>::iterator it = buff.begin(); it!= buff.end(); ++it ) if ( it->seq <= 0 ) if ( it->seq == -1 ) fputs( okno.nick.c_str(), &f ); else fputs( okno.me.c_str(), &f ); fprintf( &f, " (%s): %s\n", it->date.c_str(), it->msg.c_str() ); Powyżej opisana metoda zapisu rozmowy do pliku. 27

28 2.5. Pluginy GaduGadu Znajdziemy tutaj zbiór dodatkowych modułów, które pozwolą nam połączyć się z siecią Gadu-Gadu. Klasy składające się na GaduGadu.pro to: GGBuddyList dziedziczona po klasie BuddyList. Stanowi uzupełnienie klas czysto wirtualnych odpowiedzialnych za usuwanie oraz dodawanie z wysłaniem informacji do serwera GG. W GGBuddyList znajduje się również metoda bool modify( const int nr, const char *const descr, const int descr_len, const std::string&status, const bool blocking );, która odpowiada za modyfikację danych znajomego (w przypadku zmiany statusu czy opisu). GGMessage dziedziczona po klasie Message. Stanowi uzupełnienie funkcji wirtualnych odpowiedzialnych za wysyłanie oraz odbieranie wiadomości. GGNet dziedziczona po klasie Network. Zawiera w sobie całą obsługę protokołów GaduGadu oraz metody odpowiedzialne za połączenie z serwerem GaduGadu, logowanie do serwera, pobranie listy kontaktów oraz jej modyfikację. Znajdziemy tutaj też kontener odpowiedzialny za status kontaktu. GGStructures zawiera w sobie struktury narzucone przez operatora sieci GaduGadu, niezbędne do prawidłowego funkcjonowania Kontaktu. 28

29 2.6. Biblioteki Prócz standardowych dostępnych bibliotek, posłużyliśmy się dodatkowo: Biblioteki dla platformy systemowej Linux Ncurses biblioteka pozwalająca na tworzenie interfejsu w trybie tekstowym, będącym połączeniem CLI (Command Line Interface) i GUI (Graphical User Interface) pod platformą Linux. Pthreads (POSIX Threads) specyfikacja określająca implementację wielowątkowości, która obejmuje podstawowe mechanizmy zarządzania wątkami, obiektami synchronizującymi oraz definiuje jednolity interfejs programowania aplikacji dla języka C. Do podstawowych funkcji biblioteki należą: tworzenie wątków, synchroniczne kończenie wątków, lokalne dane wątku czy stos funkcji kończących, co znacznie ułatwia zarządzanie zasobami w języku C. Biblioteki dla platformy systemowej Windows Pdcurses - biblioteka pozwalająca na tworzenie interfejsu w trybie tekstowym będącym połączeniem CLI (Command Line Interface) a GUI (Graphical User Interface) pod platformą Windows. Win32threads odpowiednik Pthreads przystosowany do pracy na platformie Windows, odpowiadający za tworzenie i zarządzanie wątkami. Biblioteki wspólne dla platformy systemowej Linux i Windows Zlib biblioteka służąca do kompresji danych, wykorzystywana w projekcie tylko do dekompresacji listy kontaktów pobranej z serwera. Dirent biblioteka zawierająca funkcje ułatwiające wyświetlanie zawartości katalogów i plików. STL biblioteka zawierająca algorytmy, pojemniki, iteratory oraz inne konstrukcje w formie szablonów, gotowe do użycia w programach. Standard języka C++. Sockety 29

Konspekt pracy inżynierskiej

Konspekt pracy inżynierskiej Konspekt pracy inżynierskiej Wydział Elektryczny Informatyka, Semestr VI Promotor: dr inż. Tomasz Bilski 1. Proponowany tytuł pracy inżynierskiej: Komunikator Gandu na platformę mobilną Android. 2. Cel

Bardziej szczegółowo

Zasady programowania Dokumentacja

Zasady programowania Dokumentacja Marcin Kędzierski gr. 14 Zasady programowania Dokumentacja Wstęp 1) Temat: Przeszukiwanie pliku za pomocą drzewa. 2) Założenia projektu: a) Program ma pobierać dane z pliku wskazanego przez użytkownika

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

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,

Bardziej szczegółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie

Bardziej szczegółowo

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

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

Bardziej szczegółowo

Komunikator internetowy w C#

Komunikator internetowy w C# PAŃSTWOWA WYśSZA SZKOŁA ZAWODOWA W ELBLĄGU INSTYTUT INFORMATYKI STOSOWANEJ Sprawozdanie Komunikator internetowy w C# autor: Artur Domachowski Elbląg, 2009 r. Komunikacja przy uŝyciu poczty internetowej

Bardziej szczegółowo

Listy powiązane zorientowane obiektowo

Listy powiązane zorientowane obiektowo Listy powiązane zorientowane obiektowo Aby zilustrować potęgę polimorfizmu, przeanalizujmy zorientowaną obiektowo listę powiązaną. Jak zapewne wiesz, lista powiązana jest strukturą danych, zaprojektowaną

Bardziej szczegółowo

Multimedia JAVA. Historia

Multimedia JAVA. Historia Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania

Bardziej szczegółowo

Aplikacja Sieciowa. Najpierw tworzymy nowy projekt, tym razem pracować będziemy w konsoli, a zatem: File->New- >Project

Aplikacja Sieciowa. Najpierw tworzymy nowy projekt, tym razem pracować będziemy w konsoli, a zatem: File->New- >Project Aplikacja Sieciowa Jedną z fundamentalnych właściwości wielu aplikacji jest możliwość operowania pomiędzy jednostkami (np. PC), które włączone są do sieci. W Windows operacja ta jest możliwa przy wykorzystaniu

Bardziej szczegółowo

Wprowadzenie do projektu QualitySpy

Wprowadzenie do projektu QualitySpy Wprowadzenie do projektu QualitySpy Na podstawie instrukcji implementacji prostej funkcjonalności. 1. Wstęp Celem tego poradnika jest wprowadzić programistę do projektu QualitySpy. Będziemy implementować

Bardziej szczegółowo

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński Języki programowania Część siódma Przetwarzanie plików amorficznych Konwencja języka C Autorzy Tomasz Xięski Roman Simiński Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie

Bardziej szczegółowo

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji Politechnika Białostocka Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej Instrukcja do pracowni specjalistycznej z przedmiotu Obiektowe programowanie aplikacji Kod przedmiotu: TS1C410201

Bardziej szczegółowo

Programowanie aplikacji na urządzenia mobilne

Programowanie aplikacji na urządzenia mobilne Informatyka I Programowanie aplikacji na urządzenia mobilne dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 JME - Java Platform Micro Edition JME platforma Java przeznaczona

Bardziej szczegółowo

Smarty PHP. Leksykon kieszonkowy

Smarty PHP. Leksykon kieszonkowy IDZ DO PRZYK ADOWY ROZDZIA SPIS TREœCI KATALOG KSI EK KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG Smarty PHP. Leksykon kieszonkowy Autor: Daniel Bargie³ ISBN: 83-246-0676-9 Format: B6, stron: 112 TWÓJ KOSZYK

Bardziej szczegółowo

Platformy Programistyczne Zagadnienia sieciowe i wątki

Platformy Programistyczne Zagadnienia sieciowe i wątki Platformy Programistyczne Zagadnienia sieciowe i wątki Agata Migalska 27/28 maja 2014 Komunikacja sieciowa 1 Komunikacja sieciowa 2 Wiele wątków 3 Serializacja Architektura typu klient-serwer Architektura

Bardziej szczegółowo

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1 Podstawy programowania, Poniedziałek 30.05.2016, 8-10 Projekt, część 1 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem

Bardziej szczegółowo

Zaliczenie przedmiotu:

Zaliczenie przedmiotu: INFORMATYKA 2 - Wykład 15h Kod przedmiotu: ES1C300 016, ECTS: 3 pkt. Kierunek: Elektrotechnika, studia stacjonarne I stopnia Semestr: III, rok akademicki: 2016/2017 Zaliczenie przedmiotu: Ogólne warunki

Bardziej szczegółowo

Enkapsulacja, dziedziczenie, polimorfizm

Enkapsulacja, dziedziczenie, polimorfizm 17 grudnia 2008 Spis treści I Enkapsulacja 1 Enkapsulacja 2 Spis treści II Enkapsulacja 3 Czym jest interfejs Jak definuje się interfejs? Rozszerzanie interfejsu Implementacja interfejsu Częściowa implementacja

Bardziej szczegółowo

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

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

Bardziej szczegółowo

DotGadu Tutorial v2008_08_25 Dominik Cebula

DotGadu Tutorial v2008_08_25 Dominik Cebula DotGadu Tutorial v2008_08_25 Dominik Cebula 1. Organizacja biblioteki i przyjęte koncepcje. 2. Ustawienia IDE: a) Visual Studio 2005 b) MonoDevelop 3. Łączenie z serwerem Gadu-Gadu i logowanie. 4. Wysyłanie

Bardziej szczegółowo

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe zastosowanie języka Java SE Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z

Bardziej szczegółowo

Lekcja 5. Funkcje handlemessage() i initialize(), konstruktor i destruktor

Lekcja 5. Funkcje handlemessage() i initialize(), konstruktor i destruktor Lekcja 5. Funkcje handlemessage() i initialize(), konstruktor i destruktor W lekcji 5 objaśniane jest działanie i zastosowanie funkcji handlemessage() oraz initialize(). Omówiony zostanie również konstruktor

Bardziej szczegółowo

Projektowanie klas c.d. Projektowanie klas przykład

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

Bardziej szczegółowo

Język C++ wykład VIII

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,

Bardziej szczegółowo

Mechanizmy pracy równoległej. Jarosław Kuchta

Mechanizmy pracy równoległej. Jarosław Kuchta Mechanizmy pracy równoległej Jarosław Kuchta Zagadnienia Algorytmy wzajemnego wykluczania algorytm Dekkera Mechanizmy niskopoziomowe przerwania mechanizmy ochrony pamięci instrukcje specjalne Mechanizmy

Bardziej szczegółowo

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 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

Bardziej szczegółowo

TEMAT : KLASY DZIEDZICZENIE

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ą

Bardziej szczegółowo

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

Projektowanie obiektowe. Roman Simiński  Wzorce projektowe Wybrane wzorce strukturalne Projektowanie obiektowe Roman Simiński roman.siminski@us.edu.pl www.siminskionline.pl Wzorce projektowe Wybrane wzorce strukturalne Fasada Facade Pattern 2 Wzorzec Fasada Facade Pattern koncepcja 3 Wzorzec

Bardziej szczegółowo

xmlns:prism=http://www.codeplex.com/prism c. <ContentControl prism:regionmanager.regionname="mainregion" />

xmlns:prism=http://www.codeplex.com/prism c. <ContentControl prism:regionmanager.regionname=mainregion /> 1 Tworzenie Shella a. W pierwszej kolejności tworzymy nowy projekt: WPF Application. Name: Shell SolutionName: PrismApp b. Dodajemy bibliotekę PRISM za pomocą NuGet Managera (dla.net Framework 4.5 Prism

Bardziej szczegółowo

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

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

Bardziej szczegółowo

Operatory na rzecz typu TString

Operatory na rzecz typu TString Operatory na rzecz typu TString Dopiszmy w definicji klasy operator[], dzięki któremu potraktujemy obiekt jak tablicę class TString { public: char& operator[]( size_t n ); const char& operator[]( size_t

Bardziej szczegółowo

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

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

Bardziej szczegółowo

Aplikacje WWW - laboratorium

Aplikacje WWW - laboratorium Aplikacje WWW - laboratorium Serwlety Celem ćwiczenia jest przygotowanie kilku prostych serwletów ilustrujących możliwości tej technologii. Poszczególne ćwiczenia prezentują sposób przygotowania środowiska,

Bardziej szczegółowo

SZYBKI START. Tworzenie nowego połączenia w celu zaszyfrowania/odszyfrowania danych lub tekstu 2. Szyfrowanie/odszyfrowanie danych 4

SZYBKI START. Tworzenie nowego połączenia w celu zaszyfrowania/odszyfrowania danych lub tekstu 2. Szyfrowanie/odszyfrowanie danych 4 SZYBKI START Tworzenie nowego połączenia w celu zaszyfrowania/odszyfrowania danych lub tekstu 2 Szyfrowanie/odszyfrowanie danych 4 Szyfrowanie/odszyfrowanie tekstu 6 Tworzenie nowego połączenia w celu

Bardziej szczegółowo

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

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

Bardziej szczegółowo

System komputerowy. Sprzęt. System komputerowy. Oprogramowanie

System komputerowy. Sprzęt. System komputerowy. Oprogramowanie System komputerowy System komputerowy (ang. computer system) to układ współdziałaniadwóch składowych: sprzętu komputerowegooraz oprogramowania, działających coraz częściej również w ramach sieci komputerowej.

Bardziej szczegółowo

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami. UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami

Bardziej szczegółowo

IG1: INSTALACJA KOMUNIKATORA GADU-GADU

IG1: INSTALACJA KOMUNIKATORA GADU-GADU IG1: INSTALACJA KOMUNIKATORA GADU-GADU 1. UŜytkownik pragnie zainstalować komunikator Gadu-Gadu. 2. UŜytkownik pobiera plik instalacyjny z Internetu i uruchamia go. 3. Instalator instaluje nowe oprogramowanie

Bardziej szczegółowo

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, 2015. Wydział Matematyki Stosowanej Politechniki Śląskiej

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, 2015. Wydział Matematyki Stosowanej Politechniki Śląskiej Laboratorium 1 - Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Punkty Na laboratorium można zdobyć 60 punktów. Ocena ogólna z zajęć:

Bardziej szczegółowo

Architektury systemów rozproszonych LABORATORIUM. Ćwiczenie 1

Architektury systemów rozproszonych LABORATORIUM. Ćwiczenie 1 Architektury systemów rozproszonych LABORATORIUM Ćwiczenie 1 Temat: Aplikacja klient-serwer - implementacja w środowisku QT Creator. Przykładowy projekt aplikacji typu klient - serwer został udostępniony

Bardziej szczegółowo

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

Bardziej szczegółowo

Współbieżność w środowisku Java

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

Bardziej szczegółowo

Specyfikacja wymagań systemowych (może podlegać edytowaniu na kolejnych etapach)

Specyfikacja wymagań systemowych (może podlegać edytowaniu na kolejnych etapach) Specyfikacja wymagań systemowych (może podlegać edytowaniu na kolejnych etapach) 1. Wstęp: 1.1. Cel. Niniejszy dokument przestawia specyfikację wymagań systemowych (zarówno funkcjonalnych jak i niefunkcjonalnych)

Bardziej szczegółowo

Instrukcja laboratoryjna cz.3

Instrukcja laboratoryjna cz.3 Języki programowania na platformie.net cz.2 2015/16 Instrukcja laboratoryjna cz.3 Język C++/CLI Prowadzący: Tomasz Goluch Wersja: 2.0 I. Utworzenie projektu C++/CLI z interfejsem graficznym WPF 1 Cel:

Bardziej szczegółowo

Wyjątki (exceptions)

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.

Bardziej szczegółowo

Instrukcja instalacji połączenia sterownika PL11-MUT24 ze stroną internetową.

Instrukcja instalacji połączenia sterownika PL11-MUT24 ze stroną internetową. Instrukcja instalacji połączenia sterownika PL11-MUT24 ze stroną internetową. Wymagania systemowe: Windows XP, Windows Vista, Windows 7 Krok pierwszy- serwer: 1. Do poprawnego działania aplikacji wymagane

Bardziej szczegółowo

Programowanie obiektowe i zdarzeniowe

Programowanie obiektowe i zdarzeniowe Marek Tabędzki Programowanie obiektowe i zdarzeniowe 1/23 Programowanie obiektowe i zdarzeniowe wykład 6 polimorfizm Na poprzednim wykładzie: dziedziczenie jest sposobem na utworzenie nowej klasy na podstawie

Bardziej szczegółowo

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

Platforma e-learningowa

Platforma e-learningowa Platforma e-learningowa skrócona instrukcja obsługi. Aby uruchomić platformę e-learningową, należy otworzyć przeglądarkę internetową, a następnie wpisać adres http://aok.learnway.eu/ - wyświetlony zostanie

Bardziej szczegółowo

4. Podstawowa konfiguracja

4. Podstawowa konfiguracja 4. Podstawowa konfiguracja Po pierwszym zalogowaniu się do urządzenia należy zweryfikować poprawność licencji. Można to zrobić na jednym z widżetów panelu kontrolnego. Wstępną konfigurację można podzielić

Bardziej szczegółowo

PROE wykład 4 pozostałe operatory, forward declaration, dziedziczenie. dr inż. Jacek Naruniec

PROE wykład 4 pozostałe operatory, forward declaration, dziedziczenie. dr inż. Jacek Naruniec PROE wykład 4 pozostałe operatory, forward declaration, dziedziczenie dr inż. Jacek Naruniec Kolokwium wykładowe Pierwsze kolokwium 6 kwietnia Drugie kolokwium 1 czerwca Kolokwium poprawkowe 8 czerwca

Bardziej szczegółowo

Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt

Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt 1. Wprowadzenie Wymagania wstępne: wykonanie ćwiczeń Adresacja IP oraz Implementacja aplikacji sieciowych z wykorzystaniem interfejsu gniazd

Bardziej szczegółowo

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p. Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja

Bardziej szczegółowo

Aplikacja Sieciowa wątki po stronie klienta

Aplikacja Sieciowa wątki po stronie klienta Aplikacja Sieciowa wątki po stronie klienta Na ostatnich zajęciach zajmowaliśmy się komunikacją pomiędzy klientem a serwerem. Wynikiem naszej pracy był program klienta, który za pomocą serwera mógł się

Bardziej szczegółowo

Kontrola topto. 1. Informacje ogólne. 2. Wymagania sprzętowe i programowe aplikacji. 3. Przykładowa instalacja topto. 4. Komunikacja.

Kontrola topto. 1. Informacje ogólne. 2. Wymagania sprzętowe i programowe aplikacji. 3. Przykładowa instalacja topto. 4. Komunikacja. Kontrola topto Obsługa aplikacji Kontrola topto 1. Informacje ogólne. 2. Wymagania sprzętowe i programowe aplikacji. 3. Przykładowa instalacja topto. 4. Komunikacja. 5. Dodawanie, edycja i usuwanie przejść.

Bardziej szczegółowo

Programowanie telefonów z Windows Phone 7, cz. 4

Programowanie telefonów z Windows Phone 7, cz. 4 Programowanie telefonów z Windows Phone 7, cz. 4 Piotr M. Szczypiński Instytut Elektroniki Politechniki Łódzkiej http://www.eletel.p.lodz.pl/pms/ piotr.szczypinski@p.lodz.pl Budynek B9, II piętro, pokój

Bardziej szczegółowo

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

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

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Wykład 10 - boost Thread. 8 czerwca 2007 Równoległość bardzo wolna reakcja człowieka wolne urządzenia wejścia - wyjścia (np. drukarki) bardzo szybkie procesory można przeprowadzać obliczenia podczas obsługi

Bardziej szczegółowo

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer; 14.3. Podstawy obsługi X Window 14.3. Podstawy obsługi X Window W przeciwieństwie do systemów Windows system Linux nie jest systemem graficznym. W systemach Windows z rodziny NT powłokę systemową stanowi

Bardziej szczegółowo

Jak Windows zarządza pamięcią?

Jak Windows zarządza pamięcią? Jak Windows zarządza pamięcią? System Windows definiuje dwa typy pamięci, często mylone przez użytkowników. Pamięć fizyczna (pamięc RAM zainstalowana w komputerze) Pamięć widziana przez daną aplikację

Bardziej szczegółowo

Zaawansowane programowanie w języku C++ Biblioteka standardowa

Zaawansowane programowanie w języku C++ Biblioteka standardowa Zaawansowane programowanie w języku C++ Biblioteka standardowa Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka

Bardziej szczegółowo

Forum Client - Spring in Swing

Forum Client - Spring in Swing Forum Client - Spring in Swing Paweł Charkowski. 0. Cel projektu Celem projektu jest próba integracji Spring Framework z różnymi technologiami realizacji interfejsu użytkownika, oraz jej ocena. Niniejszy

Bardziej szczegółowo

Instrukcja do oprogramowania ENAP DEC-1

Instrukcja do oprogramowania ENAP DEC-1 Instrukcja do oprogramowania ENAP DEC-1 Do urządzenia DEC-1 dołączone jest oprogramowanie umożliwiające konfigurację urządzenia, rejestrację zdarzeń oraz wizualizację pracy urządzenia oraz poszczególnych

Bardziej szczegółowo

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Zagadnienia 1. Delegaty wiązane, właściwości indeksowane 2. Delegaty niewiązane 3. Nowa wersja kalkulatora, delegaty

Bardziej szczegółowo

Programowanie Komputerów

Programowanie Komputerów Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 28 1. Tablice w C# Indeksowane od zera

Bardziej szczegółowo

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy - Narzędzie Windows Forms - Przykładowe aplikacje 1 Narzędzia Windows Form Windows Form jest narzędziem do tworzenia aplikacji dla

Bardziej szczegółowo

Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych

Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych Jacek Matulewski Materiały dla Podyplomowego Studium Programowania i Zastosowania Komputerów, sekcja Projektowanie i tworzenie aplikacji

Bardziej szczegółowo

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

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

Bardziej szczegółowo

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska Programowanie aplikacji sieci Ethernet Przykład 1 Na podstawie: Monk S.: Arduino dla początkujących, HELION, Gliwice 2014 2 Arduino z nakładką

Bardziej szczegółowo

Instalacja sterownika portu USB

Instalacja sterownika portu USB Instrukcja instalacji modemu TechLab ED77 w systemie Mac OS X. Instalacja modemu podzielona jest na cztery etapy: instalacja sterownika portu USB, instalacja skryptu modemu, konfiguracja modemu, konfiguracja

Bardziej szczegółowo

Pliki. Informacje ogólne. Obsługa plików w języku C

Pliki. Informacje ogólne. Obsługa plików w języku C Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych. Może posiadać określone atrybuty, a odwołanie do niego odbywa się poprzez nazwę. Każdy plik ma skończoną

Bardziej szczegółowo

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,

Bardziej szczegółowo

Pliki. Informacje ogólne. Obsługa plików w języku C

Pliki. Informacje ogólne. Obsługa plików w języku C Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych (np. dysku twardym, pendrive, płycie DVD itp.). Może posiadać określone atrybuty, a odwołanie do niego

Bardziej szczegółowo

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

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

Bardziej szczegółowo

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

Bardziej szczegółowo

Biblioteka standardowa - operacje wejścia/wyjścia

Biblioteka standardowa - operacje wejścia/wyjścia Biblioteka standardowa - operacje wejścia/wyjścia Przemysław Gawroński D-10, p. 234 Wykład 6 15 stycznia 2019 (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 1 / 14 Outline

Bardziej szczegółowo

Dokumentacja techniczna

Dokumentacja techniczna I N F O R M A T Y K A S T O S O W A N A E A I I E A G H Dokumentacja techniczna Mobilny asystent administratora Łukasz Świder Radosław Gabiga Łukasz Podolski Paweł Knap Marec Cabaj Maciej Stygar Aleksander

Bardziej szczegółowo

VComNet Podręcznik użytkownika. VComNet. Podręcznik użytkownika Wstęp

VComNet Podręcznik użytkownika. VComNet. Podręcznik użytkownika Wstęp VComNet Podręcznik użytkownika Wstęp VComNet przeznaczony jest do wdrażania aplikacji komunikacyjnych uruchomionych na komputerze PC z systemem Windows z urządzeniami połączonymi poprzez RS485 (RS422/RS232)

Bardziej szczegółowo

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller Dokumentacja systemu NTP rekrut Autor: Sławomir Miller 1 Spis treści: 1. Wstęp 1.1 Wprowadzenie 1.2 Zakres dokumentu 2. Instalacja 2.1 Wymagania systemowe 2.2 Początek 2.3 Prawa dostępu 2.4 Etapy instalacji

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Wykład 9 - powtórzenie. 11 maja 2007 Powtórzenie materiału obiekty automatyczne, statyczne, tymczasowe, dynamiczne dziedziczenie, agregacja polimorfizm, funkcje wirtualne wzorce projektowe (strukturalne,

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 3

PARADYGMATY PROGRAMOWANIA Wykład 3 PARADYGMATY PROGRAMOWANIA Wykład 3 Definiowanie operatorów i ich przeciążanie Przykłady zastosowania operatorów: a) operator podstawienia ( = ) obiektów o złożonej strukturze, b) operatory działania na

Bardziej szczegółowo

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego. Proxy (pełnomocnik) Cel: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego. Zastosowanie: Wszędzie tam, gdzie oczekujemy bardziej zaawansowanego odwołania do obiektu, niż zwykły

Bardziej szczegółowo

Klient poczty elektronicznej - Thunderbird

Klient poczty elektronicznej - Thunderbird Klient poczty elektronicznej - Thunderbird Wstęp Wstęp Klient poczty elektronicznej, to program który umożliwia korzystanie z poczty bez konieczności logowania się na stronie internetowej. Za jego pomocą

Bardziej szczegółowo

Instrukcja konfiguracji funkcji skanowania

Instrukcja konfiguracji funkcji skanowania Instrukcja konfiguracji funkcji skanowania WorkCentre M123/M128 WorkCentre Pro 123/128 701P42171_PL 2004. Wszystkie prawa zastrzeżone. Rozpowszechnianie bez zezwolenia przedstawionych materiałów i informacji

Bardziej szczegółowo

Instrukcja podłączenia bramki IP 1R+L oraz IP 2R+L w trybie serwisowym za pomocą usługi telnet.

Instrukcja podłączenia bramki IP 1R+L oraz IP 2R+L w trybie serwisowym za pomocą usługi telnet. Tryb serwisowy Instrukcja podłączenia bramki IP 1R+L oraz IP 2R+L w trybie serwisowym za pomocą usługi telnet. Bramka IP 2R+L oraz IP 1 R+L może zostać uruchomiana w trybie serwisowym. W przypadku wystąpienia

Bardziej szczegółowo

Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia

Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia Materiały Operacje na plikach Informatyka Operacje wejścia-wyjścia w C/C++: Podejście proceduralne Podejście obiektowe Standardowe strumienie wejścia i wyjścia stdin - strumień wejściowy (klawiatura) cin

Bardziej szczegółowo

PC0060. ADAPTER Kabel Easy Copy PC-Link USB 2.0 Proste kopiowanie, bez instalacji. Instrukcja obsługi

PC0060. ADAPTER Kabel Easy Copy PC-Link USB 2.0 Proste kopiowanie, bez instalacji. Instrukcja obsługi PC0060 ADAPTER Kabel Easy Copy PC-Link USB 2.0 Proste kopiowanie, bez instalacji Instrukcja obsługi Rozdział 1 Produkt 1.1 Instrukcja Produkt PC0060 to najlepsze rozwiązanie w zakresie przesyłania danych.

Bardziej szczegółowo

Przychodnia 0. Stwórz projekt aplikacja konsolowa lub WPF (przemyśl wybór, bo zmiana może być czasochłonna). 1. Stwórz abstrakcyjną klasę Osoba.

Przychodnia 0. Stwórz projekt aplikacja konsolowa lub WPF (przemyśl wybór, bo zmiana może być czasochłonna). 1. Stwórz abstrakcyjną klasę Osoba. Przychodnia 0. Stwórz projekt aplikacja konsolowa lub WPF (przemyśl wybór, bo zmiana może być czasochłonna). 1. Stwórz abstrakcyjną klasę Osoba. W tej klasie wykonaj następujące czynności: a) dodaj pole

Bardziej szczegółowo

PODRĘCZNIK UŻYTKOWNIKA programu Pilot

PODRĘCZNIK UŻYTKOWNIKA programu Pilot TRX Krzysztof Kryński Cyfrowe rejestratory rozmów seria KSRC PODRĘCZNIK UŻYTKOWNIKA programu Pilot Wersja 2.1 Maj 2013 Dotyczy programu Pilot w wersji 1.6.3 TRX ul. Garibaldiego 4 04-078 Warszawa Tel.

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych

Bardziej szczegółowo

DWM-157. Modem USB HSPA+ Podręcznik użytkownika

DWM-157. Modem USB HSPA+ Podręcznik użytkownika DWM-157 Modem USB HSPA+ Podręcznik użytkownika Spis treści Podstawowe funkcje modemu D-Link DWM-157... 3 Połączenie z Internetem... 7 Wiadomości SMS... 7 Kontakty..... 9 Krótkie Kody (USSD)... 10 Opcje...

Bardziej szczegółowo

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VI Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Operacje na plikach Operacje na plikach Aby móc korzystać z pliku należy go otworzyć w odpowiednim

Bardziej szczegółowo

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki Programowanie w Sieci Internet Blok 2 - PHP Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki Co dziś będziemy robić Podstawy podstaw, czyli małe wprowadzenie do PHP, Podstawy

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.

Bardziej szczegółowo

Programowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński

Programowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński Programowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński Plan Prezentacji. Programowanie ios. Jak zacząć? Co warto wiedzieć o programowaniu na platformę ios? Kilka słów na temat Obiective-C.

Bardziej szczegółowo

Backend Administratora

Backend Administratora Backend Administratora mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 W tym celu korzystając z konsoli wydajemy polecenie: symfony generate:app backend Wówczas zostanie stworzona

Bardziej szczegółowo

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;

Bardziej szczegółowo

Expo Composer. www.doittechnology.pl 1. Garncarska 5 70-377 Szczecin tel.: +48 91 404 09 24 e-mail: info@doittechnology.pl. Dokumentacja użytkownika

Expo Composer. www.doittechnology.pl 1. Garncarska 5 70-377 Szczecin tel.: +48 91 404 09 24 e-mail: info@doittechnology.pl. Dokumentacja użytkownika Expo Composer Dokumentacja użytkownika Wersja 1.0 www.doittechnology.pl 1 SPIS TREŚCI 1. O PROGRAMIE... 3 Wstęp... 3 Wymagania systemowe... 3 Licencjonowanie... 3 2. PIERWSZE KROKI Z Expo Composer... 4

Bardziej szczegółowo