Projektowanie i programowanie obiektowe (materiały do wykładu cz. VII)

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

Download "Projektowanie i programowanie obiektowe (materiały do wykładu cz. VII)"

Transkrypt

1 Projektowanie i programowanie obiektowe (materiały do wykładu cz. VII) Jacek Cichosz Katedra Systemów i Sieci Komputerowych Politechnika Wrocławska

2 Dziedziczenie 265 Klasy abstrakcyjne class Figura{ public: // Czyste funkcje wirtualne virtual void rysuj() const = 0; virtual void przesun( int, int ) = 0; ; Klasa abstrakcyjna reprezentuje abstrakcyjne pojęcie i ma sens tylko jako klasa podstawowa dla jakiejś klasy pochodnej.

3 Dziedziczenie 265 Klasy abstrakcyjne class Figura{ public: // Czyste funkcje wirtualne virtual void rysuj() const = 0; virtual void przesun( int, int ) = 0; ; Klasa abstrakcyjna reprezentuje abstrakcyjne pojęcie i ma sens tylko jako klasa podstawowa dla jakiejś klasy pochodnej. Klasa abstrakcyjna to taka klasa, która zawiera przynajmniej jedną czystą funkcję wirtualną.

4 Dziedziczenie 265 Klasy abstrakcyjne class Figura{ public: // Czyste funkcje wirtualne virtual void rysuj() const = 0; virtual void przesun( int, int ) = 0; ; Klasa abstrakcyjna reprezentuje abstrakcyjne pojęcie i ma sens tylko jako klasa podstawowa dla jakiejś klasy pochodnej. Klasa abstrakcyjna to taka klasa, która zawiera przynajmniej jedną czystą funkcję wirtualną. Nie można tworzyć żadnych obiektów takiej klasy.

5 Dziedziczenie 266 Czyste funkcje wirtualne Czyste funkcje wirtualne różnią się od zwykłych funkcji wirtualnych inicjatorem 0, np. class Figura{ public: virtual void rysuj() const = 0; ; Sensownej definicji funkcji wirtualnej zdeklarowanej jako czysta, można dostarczyć dopiero w klasach pochodnych. Czysta funkcja wirtualna, której nie zdefiniowano w klasie pochodnej pozostaje czystą funkcją wirtualną, a klasa pozostaje abstrakcyjna i nie można tworzyć żadnych jej obiektów.

6 Dziedziczenie 267 Czyste funkcje wirtualne class Figura{ public: virtual void rysuj() const = 0; virtual void przesun( int, int ) = 0; ; class Okrag : public Figura{ Punkt srodek; int promien; public: Okrag( Punkt, int ); void rysuj() const; void przesun( int, int ); ; Klasy abstrakcyjnej można użyć jedynie jako klasy podstawowej dla innej klasy.

7 Dziedziczenie 268 Definiowanie funkcji wirtualnych etapami Czysta funkcja wirtualna, której nie zdefiniowano w klasie pochodnej pozostaje czystą funkcją wirtualną, a klasa pochodna pozostaje. Funkcje wirtualne można definiować etapami w kolejnych klasach pochodnych. class A{ public: virtual void f() = 0; virtual void g() = 0; ; A a; // Błąd! nie można tworzyć obiektu klasy A class B : public A{ public: void f(); // Unieważnia A :: f() ; B b; // Błąd! B jest klasą abstrakcyjną class C : public B{ public: void g(); // Unieważnia A :: g() ; C c; // O.K.

8 Dziedziczenie 269 Biblioteka figur założenia Klasa abstrakcyjna Figura definiuje ogólne pojęcie figury dwuwymiarowej poprzez zbiór operacji jakie można na niej wykonać.

9 Dziedziczenie 269 Biblioteka figur założenia Klasa abstrakcyjna Figura definiuje ogólne pojęcie figury dwuwymiarowej poprzez zbiór operacji jakie można na niej wykonać. Konkretne figury: Okrag, Linia, Prostokat,... klasy potomne klasy Figura.

10 Dziedziczenie 269 Biblioteka figur założenia Klasa abstrakcyjna Figura definiuje ogólne pojęcie figury dwuwymiarowej poprzez zbiór operacji jakie można na niej wykonać. Konkretne figury: Okrag, Linia, Prostokat,... klasy potomne klasy Figura. Każda określona figura definiuje dla siebie reprezentację, sposób rysowania i przesuwania.

11 Dziedziczenie 269 Biblioteka figur założenia Klasa abstrakcyjna Figura definiuje ogólne pojęcie figury dwuwymiarowej poprzez zbiór operacji jakie można na niej wykonać. Konkretne figury: Okrag, Linia, Prostokat,... klasy potomne klasy Figura. Każda określona figura definiuje dla siebie reprezentację, sposób rysowania i przesuwania. Operacje dla każdej figury powinny być dostępne wyłączne przez interfejs dostarczany przez klasę Figura.

12 Dziedziczenie 269 Biblioteka figur założenia Klasa abstrakcyjna Figura definiuje ogólne pojęcie figury dwuwymiarowej poprzez zbiór operacji jakie można na niej wykonać. Konkretne figury: Okrag, Linia, Prostokat,... klasy potomne klasy Figura. Każda określona figura definiuje dla siebie reprezentację, sposób rysowania i przesuwania. Operacje dla każdej figury powinny być dostępne wyłączne przez interfejs dostarczany przez klasę Figura. Chcemy przydzielać pamięć dla obiektów figur wymaganie wirtualnego destruktora.

13 Dziedziczenie 270 Graficzne współrzędne ekranowe punktu struct Punkt{ short x, y; void operator += ( Punkt d ){ x += d.x; y += d.y; inline Punkt( int l, int r ) : x( l ), y( r ) { ; (0,0) y getmaxy() x (x,y) getmaxx() Funkcja void Punkt :: operator += ( Punkt d ) służy do wyznaczania współrzędnych punktu po jego przesunięciu o wektor d. Klasa Punkt w pewnych sytuacjach oznacza współrzędne punktu, np. w reprezentacji różnych figur, a w innych oznacza współrzędne wektora d = [x, y], np. w argumencie funkcji operator += ().

14 Dziedziczenie 271 Klasa podstawowa class Figura{ public: virtual void rysuj() const = 0; virtual void przesun( Punkt ) = 0; virtual ~Figura() = 0; ; Figura :: ~Figura(){ Rysowanie polega na wywołaniu odpowiedniej funkcji bibliotecznej. Przesuwanie o zadany wektor polega na obliczeniu nowych współrzędnych figury.

15 Dziedziczenie 272 Reprezentacja prostokąta class Prostokat : public Figura{ Punkt lg, pd; public: inline Prostokat( Punkt l, Punkt r ) :lg( l ), pd( r ) { void rysuj() const; void przesun( Punkt ); ~Prostokat(); ; // Rysowanie za pomocą funkcji bibliotecznej void Prostokat :: rysuj() const{ rectangle( lg.x, lg.y, pd.x, pd.y ); Prostokat :: ~Prostokat(){ //... Usuń rysunek figury z ekranu

16 Dziedziczenie 273 Przesunięcie prostokąta na płaszczyźnie // Wyznacz nowe położenie figury void Prostokat :: przesun( Punkt p ){ lg += p; pd += p;

17 Dziedziczenie 274 Reprezentacja odcinka linii class Linia : public Figura{ Punkt pocz, kon; public: inline Linia( Punkt l, Punkt r ); void rysuj() const; void przesun( Punkt ); ~Linia(); ; Linia :: Linia( Punkt l, Punkt r ) : pocz( l ), kon( r ){ void Linia :: rysuj() const{ line( pocz.x, pocz.y, kon.x, kon.y ); Linia :: ~Linia(){ // Usuń rysunek odcinka z ekranu

18 Dziedziczenie 275 Przesunięcie linii na płaszczyźnie // Wyznacz nowe polożenie odcinka na ekranie void Linia :: przesun(punkt p){ pocz += p; kon += p;

19 Dziedziczenie 276 Reprezentacja okręgu class Okrag : public Figura{ Punkt srodek; short promien; public: Okrag( Punkt s, int r ); void rysuj() const; void przesun( Punkt ); ~Okrag(); ; Okrag :: Okrag( Punkt s, int r ) : srodek(s), promien( r ){ void Okrag :: rysuj() const{ circle( srodek.x, srodek.y, promien ); Okrag :: ~Okrag(){ // Usuń rysunek okręgu z ekranu

20 Dziedziczenie 277 Przesunięcie okręgu na płaszczyźnie // // Wyznacz nowe położenie środka // void Okrag :: przesun( Punkt p ){ srodek += p;

21 Dziedziczenie 278 Program użytkowy void main(){ int driver = DETECT, mode; initgraph( &driver, &mode, "c:\\borlandc\\bgi"); if(graphresult()!= grok ){ cprintf("blad grafiki\n"); exit(1); Figura * p[] = { new Okrag( Punkt( 100, 60 ), 40 ), new Prostokat( Punkt(200, 200), Punkt(340, 400 )), new Linia( Punkt(0,0), Punkt(200, 300)); rysuj_tab(p,sizeof(p)/sizeof(p[0])); p[1]->przesun(punkt(100, 100)); for( int i = 0; i < sizeof(p)/sizeof(p[0]) ; i++ ) delete p[i]; closegraph(); void rysuj_tab( Figura * p[], int rozmiar ){ for( int i = 0; i < rozmiar ; i++ ) p[i]->rysuj();

22 Dziedziczenie 279 Reprezentacja ogólnego pojęcia class Koszyk{ protected: int licznik; // Licznik elementów public: int ilosc() const { return licznik; Koszyk() : licznik( 0 ) { virtual ~Koszyk() = 0; virtual int dodaj( RecordT * ) = 0; virtual int usun( RecordT * ) = 0; virtual void usun_wszystko() = 0; ; Koszyk :: ~Koszyk() {

23 Dziedziczenie 280 Reprezentacja pojęcia Koszyk za pomocą listy // Koszyk zrealizowany za pomocą listy class KoszykLista : public Koszyk{ // Dane potrzebne do reprezentacji listy public: KoszykLista(); // Zwolnij pamięc elementów listy ~KoszykLista(); int dodaj( RecordT * ); int usun( RecordT * ); void usun_wszystko(); ;

24 Dziedziczenie 281 Koszyk oparty na tablicy // Koszyk zrealizowany za pomocą tablicy class KoszykTab : public Koszyk{ // Dane potrzebne do reprezentacji tablicy public: // Utwórz tablicę o zadanym rozmiarze KoszykTab( int ); // Zwolnij pamięć elementów tablicy virtual ~KoszykTab(); virtual int dodaj( RecordT * ); virtual int usun( RecordT * ); void usun_wszystko(); ;

25 Dziedziczenie 282 Koszyk oparty tablicy posortowanej // Koszyk zrealizowany za pomocą uporządkowanej tablicy class KoszykSrt : public KoszykTab{ public: // Utwórz tablicę o zadanym rozmiarze KoszykSrt( int r ) : KoszykTab( r ); // Destruktor nie robi nic // Pamięć zwalnia destruktor klasy KoszykTab ~KoszykSrt() { int dodaj( RecordT * ); int usun( RecordT * ); ;

26 Dziedziczenie 283 Wypelnianie koszyka void robimy_zakupy( Koszyk & k ){ RecordT * rp; while( (rp = czekaj_na_wybor_klienta())!= NULL ) k.dodaj( rp ); KoszykLista list; robimy_zakupy( list ); KoszykSrt srt; robimy_zakupy( srt );

27 Dziedziczenie 284 Ogólna klasa do przeglądania zawartości koszyka class KoszykItr{ public: // Inicjuj przeglądanie koszyka virtual void na_poczatek() = 0; virtual void na_koniec() = 0; // Zwróć wskaźnik bieżącego elementu virtual RecordT * biezacy() = 0; virtual RecordT * nastepny() = 0; virtual RecordT * poprzedni() = 0; ;

28 Dziedziczenie 285 Przeglądanie zawartości koszyka listowego class KoszykListaItr : public KoszykItr{ public: KoszykListaItr( KoszykLista & ); // Inicjuj przeglądanie koszyka void na_poczatek(); void na_koniec(); // Zwróć wskaźnik bieżącego elementu RecordT * biezacy(); RecordT * nastepny(); RecordT * poprzedni(); ;

29 Dziedziczenie 286 Przeglądanie zawartości koszyka tablicowego class KoszykTabItr : public KoszykItr{ public: KoszykTabItr( KoszykTab & ); // Inicjuj przeglądanie koszyka void na_poczatek(); void na_koniec(); // Zwróć wskaźnik bieżącego elementu RecordT * biezacy(); RecordT * nastepny(); RecordT * poprzedni(); ;

30 Dziedziczenie 287 Drukowanie zawartości koszyka void drukuj_koszyk( KoszykItr & itr ){ drukuj_naglowek(); // Np. Oto twoje zakupy: RecordT * rp; while( ( rp = nastepny() )!= NULL ) drukuj_rekord( rp ); KoszykTab tab( 20 ); KoszykSrt srt( 50 ); KoszykLista list; drukuj_koszyk(koszyktabitr( tab )); drukuj_koszyk(koszyksrtitr( srt )); drukuj_koszyk(koszyklistaitr( list ));

31 Dziedziczenie 288 Klasy strumieniowe ios fstreambase istream ostream strstreambase ifstream istrstream ofstream iostream ostrstream fstream strstream

32 Dziedziczenie 289 Zakres odpowiedzialności klas strumieniowych Klasa C ios istream ostream iostream fstreambase ifstream ofstream fstream strstreambase istrstream ostrstream strstream Zakres odpowiedzialności Sterowanie formatem, stan strumienia Operacje wejściowe Operacje wyjściowe Operacje wejściowe i wyjściowe Klasa podstawowa do operacji we/wy na plikach Operacje wejściowe na plikach Operacje wyjściowe na plikach Operacje wejściowe i wyjściowe na plikach Klasa podstwowa do operacji we/wy na pamięci Operacje wejściowe na pamięci Operacje wyjściowe na pamięci Operacje wejściowe i wyjściowe na pamięci

33 Dziedziczenie 290 Stany strumienia Z każdym strumieniem jest związany jego stan. Zastosowanie: obsługa błędów i różnych warunków takich jak napotkanie końca strumienia. Funkcje do testowania stanu strumienia (klasa: ios). Funkcja bad() eof() fail() good() operator!() Opis Strumień jest zniszczony. Napotkano koniec strumienia. Następna operacja zakończy się niepowodzeniem. Następna operacja może się zakończyć sukcesem. Zwraca TRUE, jeśli strumień w stanie bad lub fail Zniszczony strumień oznacza, że znaki zostały zgubione.

34 Dziedziczenie 291 Testowanie stanu strumienia w warunku #include <iostream.h> void main(){ int liczba; while( cin >> liczba ) cout << liczba << endl; Jeśli używamy strumienia w warunku, to testujemy jego stan. Test kończy się pomyślnie (zwracana jest wartość niezerowa) tylko wtedy, gdy strumień jest w stanie good.

35 Dziedziczenie 292 Testowanie stanu strumienia za pomocą funkcji

36 Dziedziczenie 293 Ustawianie stanu strumienia

37 Dziedziczenie 294 Strumienie plikowe <fstream.h> Otwieranie istniejącego pliku do odczytu: ifstream wejscie( "c:\\jacek\\dane.txt" ); if(!wejscie ){ cerr << "Nie moge otworzyc pliku!" << endl; exit( 1 ); Otwieranie pliku do zapisu: ofstream wyjscie( "c:\\jacek\\wyniki.txt" ); Otwieranie pliku do zapisu i odczytu: fstream dbase( "c:\\jacek\\rekordy.dat", ios :: in ios :: out ); Zamykanie pliku realizują destruktory odpowiednich klas lub funkcja close().

38 Dziedziczenie 295 Nieformatowane wejście i wyjście #include <fstream.h> int main( int argc, char *argv[] ){ if( argc!= 3 ){cerr << "Skladnia: kopiuj <src> <dst>\n"; return 1; ifstream src( argv[1] ); if(!src ){ cerr << "Nie mozna otworzyc pliku: " << argv[1] << endl; return 1; ofstream dst(argv[2]); if(!src ){ cerr << "Nie mozna otworzyc pliku: " << argv[2] << endl; return 1; char c; while( src.get( c ) ) dst.put( c ); if(!src.eof() dst.bad() ){ cerr << "Powazny blad!\n"; return 2; return 0;

39 Dziedziczenie 296 Wprowadzanie tekstów Rozwiązanie ryzykowne! Co będzie, gdy napis przekroczy 17 znaków? #define DLUG 18 #include <iostream.h> void main(){ char buf[dlug]; cin >> buf; cout << buf;

40 Dziedziczenie 296 Wprowadzanie tekstów Rozwiązanie ryzykowne! Co będzie, gdy napis przekroczy 17 znaków? #define DLUG 18 #include <iostream.h> void main(){ char buf[dlug]; cin >> buf; cout << buf; Bezpieczne wprowadzanie linii tekstu za pomocą funkcji get(). cin.get( buf, DLUG, \n );

41 Dziedziczenie 297 Wprowadzanie tekstu za pomocą get() Deklaracja:

42 Dziedziczenie 297 Wprowadzanie tekstu za pomocą get() Deklaracja:istream & get( char * gdzie, int ile, int = \n );

43 Dziedziczenie 297 Wprowadzanie tekstu za pomocą get() Deklaracja:istream & get( char * gdzie, int ile, int = \n ); Wczytuje zadaną liczbę znaków, chyba że zostanie napotkany znak terminatora (domyślnie: \n ).

44 Dziedziczenie 297 Wprowadzanie tekstu za pomocą get() Deklaracja:istream & get( char * gdzie, int ile, int = \n ); Wczytuje zadaną liczbę znaków, chyba że zostanie napotkany znak terminatora (domyślnie: \n ). Jeśli na wejściu pozostanie terminator, to będzie on pierwszym nie przeczytanym znakiem strumienia. Dzięki temu można sprawdzać przepełnienie bufora: #include <iostream.h> void main(){ char buf[dlug]; cin.get( buf, DLUG, \n ); char c; if( cin.get( c ) && c!= \n ) cerr << "Napis przekroczyl dlugosc bufora" << endl;

45 Dziedziczenie 298 Ustalanie i odczyt pozycji strumienia Funkcja Opis ostream& ostream::seekp( streampos ); Ustaw pozycję ostream& ostream::seekp( streamoff, ios::seekdir ); Ustaw pozycję streampos ostream::tellp(); Odczyt pozycji istream& istream::seekg( streampos ); Ustaw pozycję istream& istream::seekg( streamoff, ios::seekdir ); Ustaw pozycję streampos istream::tellg(); Odczyt pozycji g oznacza pozycję odczytu znaku, a p pozycję zapisu. ios :: seekdir oznacza bieżącą pozycję, względem której należy ustawiać nową pozycję strumienia:

46 Dziedziczenie 298 Ustalanie i odczyt pozycji strumienia Funkcja Opis ostream& ostream::seekp( streampos ); Ustaw pozycję ostream& ostream::seekp( streamoff, ios::seekdir ); Ustaw pozycję streampos ostream::tellp(); Odczyt pozycji istream& istream::seekg( streampos ); Ustaw pozycję istream& istream::seekg( streamoff, ios::seekdir ); Ustaw pozycję streampos istream::tellg(); Odczyt pozycji g oznacza pozycję odczytu znaku, a p pozycję zapisu. ios :: seekdir oznacza bieżącą pozycję, względem której należy ustawiać nową pozycję strumienia:ios :: beg początek pliku

47 Dziedziczenie 298 Ustalanie i odczyt pozycji strumienia Funkcja Opis ostream& ostream::seekp( streampos ); Ustaw pozycję ostream& ostream::seekp( streamoff, ios::seekdir ); Ustaw pozycję streampos ostream::tellp(); Odczyt pozycji istream& istream::seekg( streampos ); Ustaw pozycję istream& istream::seekg( streamoff, ios::seekdir ); Ustaw pozycję streampos istream::tellg(); Odczyt pozycji g oznacza pozycję odczytu znaku, a p pozycję zapisu. ios :: seekdir oznacza bieżącą pozycję, względem której należy ustawiać nową pozycję strumienia:ios :: beg początek pliku, ios :: cur bieżąca pozycja

48 Dziedziczenie 298 Ustalanie i odczyt pozycji strumienia Funkcja Opis ostream& ostream::seekp( streampos ); Ustaw pozycję ostream& ostream::seekp( streamoff, ios::seekdir ); Ustaw pozycję streampos ostream::tellp(); Odczyt pozycji istream& istream::seekg( streampos ); Ustaw pozycję istream& istream::seekg( streamoff, ios::seekdir ); Ustaw pozycję streampos istream::tellg(); Odczyt pozycji g oznacza pozycję odczytu znaku, a p pozycję zapisu. ios :: seekdir oznacza bieżącą pozycję, względem której należy ustawiać nową pozycję strumienia:ios :: beg początek pliku, ios :: cur bieżąca pozycja, ios :: end koniec pliku.

49 Dziedziczenie 299 Binarny odczyt i zapis do pliku Klasę RecTbl poszerzamy o dwie operacje: odczyt_bin i zapis_bin. class RecTbl{ public: // Zapis bazy w formacie binarnym ostream & zapis_bin( ostream & ) const; // Odczyt bazy w formacie binarnym istream & odczyt_bin( istream & ); //... Pozostałe deklaracje private: int rozmiar; int licznik; OsobaInfo * tab; ;

50 Dziedziczenie 300 Operacja odczytu z pliku binarnego istream & RecTbl :: odczyt_bin( istream & is ){ // Zbadaj rozmiar pliku is.seekg( 0, ios :: end ); // Przesuń wskaźnik na koniec int bajty = is.tellg(); // Odczytaj pozycję // Czy wystarczy miejsca na dane if( bajty / sizeof(osobainfo) > rozmiar ){ // Trzeba powiększyc rozmiar bazy is.seekg( 0, ios :: beg ); // Przesuń wskaźnik na początek is.read( (char *)tab, bajty ); // Wczytaj całą tablicę licznik = bajty / sizeof(osobainfo); return is;

51 Dziedziczenie 301 Operacja zapisu do pliku binarnego Zapis do pliku binarnego wszystkich rekordów bazy ostream & RecTbl :: zapis_bin( ostream & os ) const{ if( licznik > 0 ) os.write( (char *)tab, licznik*sizeof(osobainfo)); return os; Funkcja do nieformatowanego odczytu: istream & istream :: read( char* gdzie, int ile); Funkcja do nieformatowanego zapisu: ostream & ostream :: write( char* buf, int ile);

52 Dziedziczenie 302 Przykładowy program void main( int argc, char *argv[] ){ if( --argc ){ ifstream plik_we(*++argv, ios::in ios::binary ); if(!plik_we ){ cerr << "Nie moge otworzyc pliku: " << *argv << endl; exit( 1 ); RecTbl tbl(100); tbl.odczyt_bin( plik_we ); plik_we.close(); tbl.dodaj("abacki", ); // Zapis binarny do pliku ofstream plik_wy( *argv, ios::out ios::binary ); if(!plik_wy ){ cerr << "Nie moge otworzyc pliku: " << *argv << endl; exit( 1 ); tbl.zapis_bin( plik_wy );

53 Dziedziczenie 303 Strumienie napisowe <strstrea.h> Strumień można związać z tablicą znaków w pamięci głównej: #define ROZM 512 char buf[rozm]; ostrstream strwyj( buf, ROZM ); strwyj << "2 + 2 = " << 4; Jeśli nastąpi przepełnienie bufora, strumień automatycznie przejdzie w stan fail. Można użyć taki strumień do formatowania tekstu, którego nie trzeba drukować od razu.

54 Dziedziczenie 304 Strumienie napisowe przykład #include <strstrea.h> const int ROZM = 256; void main( int argc, char * argv[] ){ char buf[rozm]; ostrstream strwy( buf, ROZM ); strwy << "Ten program nazywa sie: " << *argv++ << " i ma " << --argc << " argumentow" << endl << "Argumenty programu:" << endl; while( argc-- ) strwy << *argv++ << endl; strwy << \0 ; cout << buf << endl;

55 Dziedziczenie 305 Operatory we/wy dla typów użytkownika class Zesp{ double re, im; public: inline Zesp( double r, double i = 0.0 ) : re( r ), im( i ) { //... // Operator wprowadzania friend istream & operator >> ( istream &, Zesp & ); // Operator wyprowadzania friend ostream & operator << ( ostream &, Zesp & ); ;

56 Dziedziczenie 306 Reprezentacja liczby zespolonej Liczba zespolona z niezerową częścią urojoną: ( liczba_rzeczywista, liczba rzeczywista ), np. (2.7, 90.5) Liczba zespolona z zerową częścią urojoną może być reprezentowana jak wyżej lub: (liczba_rzeczywista), np. (34.98) lub liczba_rzeczywista, np Przykład poprawnego strumienia wejściowego: ( , 6.5 ) (12.8) 45.21

57 Dziedziczenie 307 Operator wprowadzania dla typu: Zesp istream & operator >> ( istream & is, Zesp & z){ double r, i = 0.0; char c = \0 ; is >> c; if( c == ( ){ is >> r >> c; if( c ==, ) is >> i >> c; if( c!= ) ) is.clear( ios :: badbit ); else{ is.putback( c ); //Zwraca znak z powrotem do strumienia is >> r; if( is ) z = Zesp( r, i ); return is;

58 Dziedziczenie 308 Operator wyprowadzania dla: Zesp ostream & operator << ( ostream & os, Zesp & z){ if( z.im!= 0.0 ) os << ( << z.re <<, << z.im << ) ; else os << z.re; return os; void main(){ Zesp z( 0.0 ); while ( cin >> z ) cout << z << endl;

59 Dziedziczenie 309 Operatory we/wy dla klasy OsobaInfo class OsobaInfo{ friend class RecTbl; // Operator wyprowadzania friend ostream & operator << ( ostream &, OsobaInfo & ); // Operator wprowadzania friend istream & operator >> ( istream &, OsobaInfo & ); //... Pozostałe deklaracje ; // Prosta wersja operatora wprowadzania istream & operator >> ( istream & is, OsobaInfo & oi ){ is >> oi.nazwisko >> oi.tel; return is; // Operator wyprowadzania ostream & operator << ( ostream & os, OsobaInfo & oi ){ os << oi.nazwisko << << oi.tel; return os;

60 Dziedziczenie 310 Operator >> dla klasy OsobaInfo istream & operator >> ( istream & is, OsobaInfo & oi ){ char c; // Pomiń białe znaki while( is.get( c ) ) if(!isspace( c ) ){ is.putback( c ); break; char * p = oi.nazwisko; int i; // Nazwisko może zawierać tylko litery i znak myślnika - for( i = 0 ; i < DLUG_NAZW && is.get( c ) ; i++, p++ ) if( isalpha( c ) c == - ) *p = c; else break; if( i == DLUG_NAZW ) ++p; *p = \0 ; while( c!= \n &&!isdigit( c ) && is.get( c )) ; if( isdigit( c )){ is.putback( c ); is >> oi.tel; return is;

61 Dziedziczenie 311 Operator >> dla klasy RecTbl Operator >> zrealizowano jako funkcję zewnętrzną. istream & operator >> ( istream & is, RecTbl & tab ){ char buf[dlug_nazw + 1]; Tele tel; while( is >> buf >> tel ) tab.dodaj( buf, tel ); return is; Użycie w programie głównym. RecTbl tab( 100 ); ifstream plik( "c:\\jacek\\telefony.txt" ); plik >> tab;

62 Dziedziczenie 312 Operator << dla klasy RecTbl Operator << zrealizowano jako funkcję zewnętrzną. ostream & operator << ( ostream & os, const RecTbl & tab ){ RecTbl :: Itr b = tab.beg(); RecTbl :: Itr e = tab.end(); while( b!= e ){ os << *b << endl; ++b; return os; Wyprowadzenie nazwisk na ekran RecTbl tab(100); //... Wypełnij tablicę nazwiskami cout << tab;

63 Dziedziczenie 313 Indeks c J. Cichosz Start Projektowanie i programowanie obiektowe

Operacje wejścia/wyjścia (odsłona druga) - pliki

Operacje wejścia/wyjścia (odsłona druga) - pliki Operacje wejścia/wyjścia (odsłona druga) - pliki Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały

Bardziej szczegółowo

Programowanie w językach

Programowanie w językach Programowanie w językach wysokiego poziomu Obsługa plików za pomocą strumieni Elektronika i Telekomunikacja, semestr III rok akademicki 2013/2014 dr inż. Paweł Myszkowski Plan zajęć a) otwieranie i zamykanie

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

Wykład 9 2014-06-20 09:37 PP2_W9

Wykład 9 2014-06-20 09:37 PP2_W9 Wykład 9 Przykłady programów z wykorzystaniem klas - przykład funkcji operatorowych - obiektowa implementacja listy jednokierunkowej kopiowanie obiektów - klasa "latający napis" Pozycjonowanie w plikach

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

jest mocny, skoro da się w nim wyrazić nowe pojęcia; łatwiej przenieść go na nową platformę jest mniejszy.

jest mocny, skoro da się w nim wyrazić nowe pojęcia; łatwiej przenieść go na nową platformę jest mniejszy. Wejście-wyjście Nie jest elementem języka C++ Niezbyt istotne dla użytkownika, ważne dla języka: jest mocny, skoro da się w nim wyrazić nowe pojęcia; łatwiej przenieść go na nową platformę jest mniejszy.

Bardziej szczegółowo

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład II - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Operacje dyskowe - zapis do pliku #include #include

Bardziej szczegółowo

Programowanie Obiektowe i C++

Programowanie Obiektowe i C++ Programowanie Obiektowe i C++ Marcin Benke Instytut Informatyki UW 13.11.2006 Marcin Benke (IIUW) Programowanie Obiektowe i C++ 13.11.2006 157 / 201 Wejście-wyjście Nie jest elementem języka C++ Niezbyt

Bardziej szczegółowo

Wejście wyjście strumieniowe

Wejście wyjście strumieniowe PARADYGMATY PROGRAMOWANIA Wykład 6 Wejście wyjście strumieniowe stdin standardowy strumień wejściowy stdout standardowy strumień wyjściowy stderr standardowy strumień komunikatów o błędach pliki - inne

Bardziej szczegółowo

Operacje na plikach (niskiego poziomu) < IO.H >

Operacje na plikach (niskiego poziomu) < IO.H > OPERACJE WEJŚCIA WYJŚCIA (część b) Operacje wejścia / wyjścia odczyt i zapis danych do róŝnych zewnętrznych urządzeń lub nośników pamięciowych komputera: np. klawiatury, ekranu monitora, dyskietki, czytnika

Bardziej szczegółowo

C++ - [3-5] Pliki i strumienie w C++

C++ - [3-5] Pliki i strumienie w C++ Slajd 1 z 13 C++ - [3-5] Pliki i strumienie w C++ Nysa 2004-2013. Autor: Wojciech Galiński. wersja dnia 19 maja 2013 r. Slajd 2 z 13 Klasy i obiekty do obsługi plików Aby korzystać z obiektów do obsługi

Bardziej szczegółowo

Programowanie i struktury danych

Programowanie i struktury danych Programowanie i struktury danych Wykªad 3 1 / 37 tekstowe binarne Wyró»niamy dwa rodzaje plików: pliki binarne pliki tekstowe 2 / 37 binarne tekstowe binarne Plik binarny to ci g bajtów zapami tanych w

Bardziej szczegółowo

Operacje wejścia/wyjścia odsłona pierwsza

Operacje wejścia/wyjścia odsłona pierwsza Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.

Bardziej szczegółowo

Pliki wykład 2. Dorota Pylak

Pliki wykład 2. Dorota Pylak Pliki wykład 2 Dorota Pylak Struktura programu działającego na plikach 1) Dyrektywa preprocesora #include //zapewnia dostęp do strumieni ifstream i ofstream 2) deklaracja zmiennej (strumienia)

Bardziej szczegółowo

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 21 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 24

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 21 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 24 Programowanie w C++ Wykład 11 Katarzyna Grzelak 21 maja 2018 K.Grzelak (Wykład 11) Programowanie w C++ 1 / 24 Strumienie Strumień bajtów płynacy od źródła do ujścia: 1 standardowe strumienie wejściowe

Bardziej szczegółowo

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30 Programowanie w C++ Wykład 9 Katarzyna Grzelak 14 maja 2018 K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe plus

Bardziej szczegółowo

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33 Programowanie w C++ Wykład 8 Katarzyna Grzelak 15 kwietnia 2019 K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe

Bardziej szczegółowo

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

Funkcje zawarte w bibliotece < io.h >

Funkcje zawarte w bibliotece < io.h > PLIKOWE OPERACJE WEJŚCIA - WYJŚCIA Język C/C++ nie ma wbudowanych żadnych instrukcji umożliwiających wykonywanie operacji wejścia-wyjścia! Służą do tego funkcje biblioteczne. Funkcje zawarte w bibliotece

Bardziej szczegółowo

Pliki wykład 2. Dorota Pylak

Pliki wykład 2. Dorota Pylak Pliki wykład 2 Dorota Pylak Struktura programu działającego na plikach 1) Dyrektywa preprocesora #include //zapewnia dostęp do strumieni ifstream i ofstream 2) deklaracja zmiennej (strumienia)

Bardziej szczegółowo

Funkcje zawarte w bibliotece < io.h >

Funkcje zawarte w bibliotece < io.h > PLIKOWE OPERACJE WEJŚCIA - WYJŚCIA Język C/C++ nie ma wbudowanych żadnych instrukcji umożliwiających wykonywanie operacji wejścia-wyjścia! Służą do tego funkcje biblioteczne. Funkcje zawarte w bibliotece

Bardziej szczegółowo

Klasa iostream... 1 Klasy ofstream, ifstream Struktura FILE... 8

Klasa iostream... 1 Klasy ofstream, ifstream Struktura FILE... 8 12.1 12.2 Klasa iostream... 1 Klasy ofstream, ifstream... 3 12.3 Struktura FILE... 8 12.1 Klasa iostream Obiekty klasy stream tworzone automatycznie: istream& cin, standardowe wejście konsoli (klawiatura).

Bardziej szczegółowo

TEMAT : KLASY POLIMORFIZM

TEMAT : KLASY POLIMORFIZM TEMAT : KLASY POLIMORFIZM 1. Wprowadzenie do polimorfizmu i funkcji wirtualnych w języku C++ Język C++ zakłada, że w pewnych przypadkach uzasadnione jest tworzenie klas, których reprezentanci w programie

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

Wykład 2 Operacje wejściawyjścia. Ewa Gajda

Wykład 2 Operacje wejściawyjścia. Ewa Gajda Wykład 2 Operacje wejściawyjścia w C++ Ewa Gajda Strumienie Operacje wejścia-wyjścia w C++ realizowane są przy pomocy tak zwanych strumieni. Strumieo można sobie wyobrażad jako ciąg znaków bądź bajtów

Bardziej szczegółowo

Język C++ Różnice między C a C++

Język C++ Różnice między C a C++ Język C++ Różnice między C a C++ Plan wykładu C a C++ Różnice ogólne Typy Deklaracje zmiennych C++ jako rozszerzenie C Domyślne argumenty funkcji Przeciążanie funkcji Referencje Dynamiczny przydział pamięci

Bardziej szczegółowo

1 Pierwsze kroki w C++ cz.3 2 Obsługa plików

1 Pierwsze kroki w C++ cz.3 2 Obsługa plików 1 Pierwsze kroki w C++ cz.3 2 Obsługa plików Do pracy z plikami zewnętrznymi niezbędna będzie biblioteka fstream. Udostępnia ona programiście narzędzia do zapisu i odczytu plików. 2.1 Typ zmiennej fstream.

Bardziej szczegółowo

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 20 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 32

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 20 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 32 Programowanie w C++ Wykład 12 Katarzyna Grzelak 20 maja 2019 K.Grzelak (Wykład 12) Programowanie w C++ 1 / 32 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe

Bardziej szczegółowo

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Zajęcia nr 5 Algorytmy i wskaźniki dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Plan Zapis i odczyt z plików tekstowych O tablicach ciąg dalszy Referencje

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

Programowanie Procedurale. Pliki w języku C++

Programowanie Procedurale. Pliki w języku C++ Programowanie Procedurale. Pliki w języku C++ Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 10 Bożena Woźna-Szcześniak (AJD) Programowanie Procedurale. Pliki w języku C++

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

4. Wyrzuć wyjątek jeśli zmienna ist nie istnieje bloki: try, catch i wyrzucanie wyjątku

4. Wyrzuć wyjątek jeśli zmienna ist nie istnieje bloki: try, catch i wyrzucanie wyjątku Lista 7 Zad. 1 Pierwsza wersja programu 1. Przygotuj plik do w: plik tekstowy z pojedynczą liczbą. Umieść go w tym samym folderze, co projekt (*.cpp). 2. Nazwa pliku name nazwa zmiennej może być dowolna

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe 10.04.2017 W slajdach są materiały zapożyczone z https://www.ii.uni.wroc.pl/~prz/2012lato/cpp/slajdy/cpp5.ppt Przykład wykorzystania obiektu Obiekt X jest instancją klasy Y Obiekt

Bardziej szczegółowo

Spis treści OBSŁUGA PLIKÓW W JĘZYKU C++ Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF32

Spis treści OBSŁUGA PLIKÓW W JĘZYKU C++ Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF32 Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 2 Kod przedmiotu: ES1C300 016 (studia stacjonarne)

Bardziej szczegółowo

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 5. Karol Tarnowski A-1 p. Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni Wykład 5 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Standardowa biblioteka szablonów (Standard Template

Bardziej szczegółowo

Wstęp do programowania obiektowego

Wstęp do programowania obiektowego Wstęp do programowania obiektowego KLASA ISTREAM KLASA OSTREAM MANIPULATORY STRUMIENIOWE STRUKTURY W C++ DOMYŚLNE WARTOŚCI PARAMETRÓW KONSTRUKTORY I DESTRUKTORY KLAS POCHODNYCH KONSTRUKTOR KOPIUJĄCY POLIMORFIZM

Bardziej szczegółowo

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Programowanie w C++ Wykład 5 Katarzyna Grzelak 26 marca 2018 9 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne

Bardziej szczegółowo

Pliki wykład 2 -przekazywanie strumieni do funkcji -funkcje get(char &) i getline(string)

Pliki wykład 2 -przekazywanie strumieni do funkcji -funkcje get(char &) i getline(string) Pliki wykład 2 -przekazywanie strumieni do funkcji -funkcje get(char &) i getline(string) Dorota Pylak Struktura programu działającego na plikach 2 1) Dyrektywa preprocesora #include //zapewnia

Bardziej szczegółowo

Program dopisujący gwiazdkę na końcu pliku tekstowego o nazwie podanej przez uŝytkownika oraz wypisujący zawartość tego pliku.

Program dopisujący gwiazdkę na końcu pliku tekstowego o nazwie podanej przez uŝytkownika oraz wypisujący zawartość tego pliku. Program 7 Program dopisujący gwiazdkę na końcu pliku tekstowego o nazwie podanej przez uŝytkownika oraz wypisujący zawartość tego pliku. #include #include using namespace std; int main()

Bardziej szczegółowo

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27 Programowanie w C++ Wykład 14 Katarzyna Grzelak 3 czerwca 2019 K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27 Na ostatnim wykładzie: Konstruktor standardowy (domyślny) to taki, który nie ma żadnych argumentów

Bardziej szczegółowo

Wstęp do Programowania 2

Wstęp do Programowania 2 Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 5 W programowaniu obiektowym programista koncentruje się na obiektach. Zadaje sobie pytania typu:

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 4 PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej

Bardziej szczegółowo

Operator przypisania. Jest czym innym niż konstruktor kopiujący!

Operator przypisania. Jest czym innym niż konstruktor kopiujący! Operator przypisania Jest czym innym niż konstruktor kopiujący! Domyślnie jest zdefiniowany jako przypisanie składowa po składowej (zatem niekoniecznie bajt po bajcie). Dla klasy X definiuje się jako X&

Bardziej szczegółowo

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

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 5. Karol Tarnowski A-1 p. Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 5 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Przestrzenie nazw Standardowa biblioteka szablonów

Bardziej szczegółowo

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach Laboratorium Systemów Operacyjnych Ćwiczenie 4. Operacje na plikach Wykonanie operacji wymaga wskazania pliku, na którym operacja ma zostać wykonana. Plik w systemie LINUX identyfikowany jest przez nazwę,

Bardziej szczegółowo

Wstęp do programowania obiektowego. Przekazywanie parametrów do funkcji w C++ Metody i funkcje operatorowe Strumienie: standardowe, plikowe, napisowe

Wstęp do programowania obiektowego. Przekazywanie parametrów do funkcji w C++ Metody i funkcje operatorowe Strumienie: standardowe, plikowe, napisowe Wstęp do programowania obiektowego Przekazywanie parametrów do funkcji w C++ Metody i funkcje operatorowe Strumienie: standardowe, plikowe, napisowe 1 PRZEKAZYWANIE PARAMETRÓW DO FUNKCJI W C++ 2 W C++

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 Przeciążanie operatorów Słowo

Bardziej szczegółowo

Programowanie obiektowe w języku C++ Zarządzanie procesami. dr inż. Jarosław Forenc. Przeładowanie (przeciążanie) operatorów

Programowanie obiektowe w języku C++ Zarządzanie procesami. dr inż. Jarosław Forenc. Przeładowanie (przeciążanie) operatorów Rok akademicki 2016/2017, Wykład nr 5 2/40 Plan wykładu nr 5 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2016/2017

Bardziej szczegółowo

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.: Program przedmiotu Programowanie Obiektowe (język C++) Wykład 1. Definiowanie prostych klas. Przykłady. Przypomnienie: typy referencyjne, domyślne wartości argumentów, przeciąŝanie funkcji. Konstruktory,

Bardziej szczegółowo

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis i cz. 2 Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 i cz. 2 2 i cz. 2 3 Funkcje i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje

Bardziej szczegółowo

Dziedziczenie & W slajdach są materiały zapożyczone z https://www.ii.uni.wroc.pl/~prz/2012lato/cpp/slajdy/cpp5.

Dziedziczenie & W slajdach są materiały zapożyczone z https://www.ii.uni.wroc.pl/~prz/2012lato/cpp/slajdy/cpp5. Dziedziczenie 27.04.2016 & 04.05.2016 W slajdach są materiały zapożyczone z https://www.ii.uni.wroc.pl/~prz/2012lato/cpp/slajdy/cpp5.ppt class A{ private: int x, y; public: void setvaluex(); void setvaluey();

Bardziej szczegółowo

Programowanie Obiektowe i C++

Programowanie Obiektowe i C++ Programowanie Obiektowe i C++ Marcin Benke Instytut Informatyki UW 6.11.2006 Marcin Benke (IIUW) Programowanie Obiektowe i C++ 6.11.2006 1 / 138 Operator przypisania Jest czym innym niż konstruktor kopiujacy!

Bardziej szczegółowo

Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania

Bardziej szczegółowo

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013 Wykład nr 6 (07.12.2012) dr inż. Jarosław Forenc Rok

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

Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006)

Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006) Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006) Część 1. Teoria Wyjaśnij pojęcia, podaj przykład: klasa obiekt konstruktor destruktor kapsułkowanie (hermetyzacja) wskaźnik this

Bardziej szczegółowo

C++ - szablony. C++ - szablony. C++ - szablony. C++ - szablony. C++ - szablony. C++ - szablony

C++ - szablony. C++ - szablony. C++ - szablony. C++ - szablony. C++ - szablony. C++ - szablony Słowo kluczowe class w linii: template nie oznacza, że T1 i T2 mogą być tylko klasami (jak widać na przykładzie); mogą to być dowolne typy (wbudowane lub definiowane przez użytkownika)

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

Programowanie Obiektowe i C++

Programowanie Obiektowe i C++ Programowanie Obiektowe i C++ Marcin Benke Instytut Informatyki UW 30.10.2006 Marcin Benke (IIUW) Programowanie Obiektowe i C++ 30.10.2006 85 / 112 Zgodność typów Rozważmy klasy class A { //... }; class

Bardziej szczegółowo

Języki programowania obiektowego Nieobiektowe elementy języka C++

Języki programowania obiektowego Nieobiektowe elementy języka C++ Języki programowania obiektowego Nieobiektowe elementy języka C++ Roman Simiński roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Przetwarzanie tablic znaków Łańcuchy znakowe jako tablice znaków

Bardziej szczegółowo

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30 Programowanie w C++ Wykład 11 Katarzyna Grzelak 13 maja 2019 K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30 Klasy cd K.Grzelak (Wykład 11) Programowanie w C++ 2 / 30 Klasy - powtórzenie Klasy typy definiowane

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Zaawansowane programowanie w języku C++ Programowanie obiektowe

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

Bardziej szczegółowo

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27 Programowanie w C++ Wykład 12 Katarzyna Grzelak 28 maja 2018 K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27 Klasy cd K.Grzelak (Wykład 12) Programowanie w C++ 2 / 27 Klasy - powtórzenie Klasy typy definiowane

Bardziej szczegółowo

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, Lista 3 Zestaw I Zadanie 1. Zaprojektować i zaimplementować funkcje: utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, zapisz

Bardziej szczegółowo

tablica: dane_liczbowe

tablica: dane_liczbowe TABLICE W JĘZYKU C/C++ tablica: dane_liczbowe float dane_liczbowe[5]; dane_liczbowe[0]=12.5; dane_liczbowe[1]=-0.2; dane_liczbowe[2]= 8.0;... 12.5-0.2 8.0...... 0 1 2 3 4 indeksy/numery elementów Tablica

Bardziej szczegółowo

Wstęp do programowania. Dariusz Wardecki, wyk. X

Wstęp do programowania. Dariusz Wardecki, wyk. X Wstęp do programowania Dariusz Wardecki, wyk. X Na czym polega przeciążanie operatorów Zamiast podawaê nazwí metody, moøna jπ oznaczyê z pomocπ symbolu operatora. Wtedy liczba argumentów metody zaleøy

Bardziej szczegółowo

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce. Przygotować program tworzący tablicę dwuwymiarową zawierającą zestawy 10 2, 10 4, 10 6 liczb losowych zmiennoprzecinkowych. Korzystając z funkcji bibliotecznych uporządkować zawartość każdego (a) wiersza

Bardziej szczegółowo

Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p. Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411b Plan wykładu Operacje wejścia-wyjścia Dostęp do plików Struktury

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

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i

Bardziej szczegółowo

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński Języki programowania Część druga Przetwarzanie tablic znaków Autorzy Tomasz Xięski Roman Simiński Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi uważnego w nim

Bardziej szczegółowo

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy i obiekty Programowanie i obiekty uzupełnienie notatek: dr Jerzy Białkowski i obiekty 1 2 3 4 i obiekty Obiektowość języka C++ Na tym wykładzie poznamy: ˆ Klasa (w języku C++ rozszerzenie struktury, typ

Bardziej szczegółowo

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ; Ogólna postać definicji tablicy: TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ; np. int tablica [ 10 ]; // 10-cio elementowa tablica liczb całkowitych char tekst

Bardziej szczegółowo

Nowe słowa kluczowe. Komentarze. Wskaźniki typu void. class, delete, new, friend,... /* Komentarz w C i C++ */ // Komentarz w C++ (do końca wiersza)

Nowe słowa kluczowe. Komentarze. Wskaźniki typu void. class, delete, new, friend,... /* Komentarz w C i C++ */ // Komentarz w C++ (do końca wiersza) Różnice między C i C++ (Rozszerzenia C++) Nowe słowa kluczowe class, delete, new, friend,... Komentarze /* Komentarz w C i C++ */ // Komentarz w C++ (do końca wiersza) Wskaźniki typu void W C wskaźniki

Bardziej szczegółowo

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków ZAWARTOŚCI 3 PLIKOW W WORDZIE: MAIN.CPP: #include #include #include pamięci // Potrzebne do memset oraz memcpy, czyli kopiowania bloków #include "Rysowanie_BMP.h" using

Bardziej szczegółowo

Podstawy programowania

Podstawy programowania Podstawy programowania Część siódma Przetwarzanie tablic znaków Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle! Funkcja wysoce niezależny blok definicji i instrukcji programu (podprogram) Każdy program napisany w języku C/C++ zawiera przynajmniej jedną funkcję o predefiniowanej nazwie: main( ). Najczęściej wykorzystuje

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część siódma Przetwarzanie tablic znaków Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Wykład: 9 Łańcuchy znaków 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Rodzaje plików Dane przechowywane w pliku mogą mieć reprezentację binarną (taką samą, jak

Bardziej szczegółowo

Programowanie 2. Język C++. Wykład 3.

Programowanie 2. Język C++. Wykład 3. 3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane

Bardziej szczegółowo

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1 Tablice i struktury czyli złożone typy danych. Programowanie Proceduralne 1 Tablica przechowuje elementy tego samego typu struktura jednorodna, homogeniczna Elementy identyfikowane liczbami (indeksem).

Bardziej szczegółowo

Referencje. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zaawansowane Programowanie Obiektowe. Informacje organizacyjne:

Referencje. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zaawansowane Programowanie Obiektowe. Informacje organizacyjne: Referencje Informacje organizacyjne: Wykład: środy, 13:15 14:45 Strona główna www z komunikatami dla ZPO: http://troja.uksw.edu.pl/category/zpo2017/ Zaawansowane Programowanie Obiektowe E-mail: k.trojanowski@uksw.edu.pl

Bardziej szczegółowo

Programowanie w C++ Wykład 13. Katarzyna Grzelak. 4 czerwca K.Grzelak (Wykład 13) Programowanie w C++ 1 / 26

Programowanie w C++ Wykład 13. Katarzyna Grzelak. 4 czerwca K.Grzelak (Wykład 13) Programowanie w C++ 1 / 26 Programowanie w C++ Wykład 13 Katarzyna Grzelak 4 czerwca 2018 K.Grzelak (Wykład 13) Programowanie w C++ 1 / 26 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe

Bardziej szczegółowo

Pliki wykład. Dorota Pylak

Pliki wykład. Dorota Pylak Pliki wykład Dorota Pylak Pliki 2 Większość programów komputerowych korzysta z plików, np. w edytorach tekstów tworzymy pliki dokumentów. Plik (ang. file) jest porcją danych zapisanych na jakimś nośniku.

Bardziej szczegółowo

Pliki wykład. Dorota Pylak

Pliki wykład. Dorota Pylak Pliki wykład Dorota Pylak Pliki 2 Większość programów komputerowych korzysta z plików, np. w edytorach tekstów tworzymy pliki dokumentów. Plik (ang. file) jest porcją danych zapisanych na jakimś nośniku.

Bardziej szczegółowo

Wstęp do Programowania 2

Wstęp do Programowania 2 Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 8 Przykład realizowany na wykładzie Klasy StringBad i String. Wstępne pliki załaczone jako źródła.

Bardziej szczegółowo

Programowanie komputerowe. Zajęcia 1

Programowanie komputerowe. Zajęcia 1 Programowanie komputerowe Zajęcia 1 Code::Blocks - tworzenie projektu Create New Project Console Application -> C++ Wybierz nazwę projektu Stworzy się nowy projekt z wpisaną funkcją main Wpisz swój program

Bardziej szczegółowo

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis. 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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki zaprojektowany jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych jest to język pozwalający na programowanie zarówno proceduralne

Bardziej szczegółowo

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, rok

Bardziej szczegółowo

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami 1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami Celem tych zajęć jest zrozumienie i oswojenie z technikami programowania przy pomocy wskaźników w języku C++. Proszę przeczytać rozdział 8.

Bardziej szczegółowo

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char Programowanie C++ Informacje wstępne #include - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char = -128 do 127, unsigned char = od

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

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this Wstęp do programowania obiektowego WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this 1 Nazwa typu Rozmiar Zakres Uwagi bool 1 bit wartości true albo false stdbool.h TYPY ZNAKOWE

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

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec PROE wykład 3 klasa string, przeciążanie funkcji, operatory dr inż. Jacek Naruniec Przypomnienie z ostatnich wykładów Konstruktory/destruktory i kolejność ich wywołania w złożonej klasie. Referencja Obiekty

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

Wprowadzenie do programowania i programowanie obiektowe

Wprowadzenie do programowania i programowanie obiektowe Wprowadzenie do programowania i programowanie obiektowe Wirtotechnologia Zajęcia nr 10 autor: Grzegorz Smyk Wydział Odlewnictwa Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza

Bardziej szczegółowo