GLIWICE Kontakt. Dokumentacja z projektu PROGRAMOWANIA OBIEKTOWEGO
|
|
- Alicja Komorowska
- 8 lat temu
- Przeglądów:
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 Wydział Elektryczny Informatyka, Semestr VI Promotor: dr inż. Tomasz Bilski 1. Proponowany tytuł pracy inżynierskiej: Komunikator Gandu na platformę mobilną Android. 2. Cel
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
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ąć
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,
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
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
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
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ą
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
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
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ć
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
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
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
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
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
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
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
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
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
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
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
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
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
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,
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
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
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ą
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
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
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
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
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
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,
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
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
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.
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
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
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ęć:
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
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
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
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)
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:
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.
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
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
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
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
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ć
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
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
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
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ę
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ść.
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
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
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
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
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ę
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
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
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
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
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
- 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
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
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
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ą
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
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ą
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,
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
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
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
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
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
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)
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
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,
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
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
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ą
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
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
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
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.
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
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.
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
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...
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
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
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.
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.
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
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
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;
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