Wstęp do programowania obiektowego
|
|
- Kazimiera Zielińska
- 8 lat temu
- Przeglądów:
Transkrypt
1 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 1
2 KLASA ISTREAM 2
3 Obiekty klasy istream mogą czytać i interpretować sekwencję znaków. Z tej klasy dziedziczą: iostream (strumień uniwersalny), ifstream (wejście z pliku) istringstream (wejście z napisu). 3
4 Wybrane metody klasy istream int get(); // czyta pojedynczy znak int peek(); // podgląd następnego znaku istream& putback(char c); // zwraca znak do strum. istream& ignore(int n=1); // opuszcza n znaków istream& getline (char* s, streamsize n ); istream& getline (char* s, streamsize n, char delim ); // czyta znaki ze strumienia (maksymalnie n) dopóki nie napotka na delimiter (domyślnie '\n') 4
5 Przykład użycia get, peek, ignore int kod; if (cin.peek() ) // jeżeli następny znak cin.ignore(); // opuść go, else kod = cin.get(); // wczytaj znak 5
6 Przykład z putback i getline cout << "Please, enter a number or a word: "; char c = cin.get(); if ( (c >= '0') && (c <= '9') ) { int n; cin.putback (c); cin >> n; cout << "You entered a number: " << n << '\n'; } else { string str; cin.putback (c); getline (cin,str); cout << "You entered a word: " << str << '\n'; } 6
7 KLASA OSTREAM 7
8 Obiekty klasy ostream mogą pisać sekwencję znaków. Z tej klasy dziedziczą: iostream (strumień uniwersalny), ofstream (wyjście do pliku) ostringstream (wyjście do napisu). 8
9 Wybrane metody klasy ostream int put(); //wyprowadza znak ostream& write ( const char* s, streamsize n ); //wyprowadza n znaków z s (tablica char[]) 9
10 Przykład: maszyna do pisania #include <iostream> #include <fstream> // std::cin, std::cout // std::ofstream int main () { std::ofstream outfile ("test.txt"); char ch; } std::cout << "Type some text (type a dot to finish):\n"; do { ch = std::cin.get(); outfile.put(ch); } while (ch!='.'); return 0; // wszystko co pisze użytkownik zapisuje do pliku test.txt 10
11 PRZYKŁAD: KOPIOWANIE PLIKU ZNAK PO ZNAKU main() { ifstream we( TEST1.TXT ); ofstream wy( TEST2.TXT ); if (!we!wy) { cerr << Błąd otwarcia pliku ; return 1; } char zn; while (we.get(zn) && wy.put(zn)); } 11
12 MANIPULATORY STRUMIENIOWE 12
13 MANIPULATORY STRUMIENIOWE Manipulatory, to funkcje zmieniające stan strumienia Większość zdefiniowana jest w pliku nagłówkowym <iomanip.h>. Można również definiować własne manipulatory. Częściej używane to: endl - przejście do nowego wiersza ends - dodanie znaku \0 do strumienia dec - postać dziesiętna liczby hex - postać szesnastkowa liczby oct - postać ósemkowa liczby flush - opróżnienie bufora strumienia setw(int w) - ustawienie szerokości pola setprecision(int p) - ustawienie liczby miejsc po przecinku setfill(int c) - określenie znaku wypełniającego 13
14 Przykłady użycia manipulatorów int n= 255; cout << hex << n << endl; // wypisuje liczbę szesnastkową double a=1.2355, b=2.5, c=3.14; cout << setprecision(2) << fixed << a << '\t' << b << '\t' << c << endl; // wypisuje liczby 2 znakami po przecinku, rozdzielone tabulacją cout << scientific << a << '\t' << b << '\t' << c << endl; // wypisuje liczby w formacie wykładniczym, precyzja jak przedtem 14
15 STRUKTURY W C++ 15
16 Struktury w C++ są deklarowane tak jak w C, jednak oprócz pól mogą zawierać także funkcje (tzw. metody) i mogą dziedziczyć z innych klas i struktur. Struktura różni się w C++ od klasy wyłącznie domyślnym zakresem widoczności jej pól i metod - dla klasy jest to private a dla struktur public. Używanie struktur zamiast klas nie jest dobrą praktyką programowania, gdyż utrudnia czytanie programu. 16
17 Przykład struktury w C++ struct miasto { long ludnosc; char* rzeka; miasto(long ll,char *rz): ludnosc(ll), rzeka(strdup(rz)) {}; inline char* get_rzeka() {return rzeka}; ~miasto() { free((void*)rzeka); } }; 17
18 DOMYŚLNE WARTOŚCI PARAMETRÓW 18
19 Domyślne wartości parametrów W C++ można zdefiniować domyślne wartości parametru/ów. W tym celu w nagłówku funkcji/metody/konstruktora na parametrze formalnym wykonujemy podstawienie. Parametry domyślne muszą występować na końcu listy argumentów. W wywołaniu możemy opuścić jedną lub więcej wartość parametru aktualnego, dla której zdefiniowano domyślną wartość 19
20 Przykład domyślnych wartości parametrów class Punkt { float x,y; public: Punkt(float xx = 5, float yy=7):x(xx), y(yy) { } }; Punkt p1(1,3), p2(8), p3; 20
21 KONSTRUKTORY I DESTRUKTORY KLAS POCHODNYCH 21
22 Konstruktory i destruktory klas pochodnych Konstruktory nie są dziedziczone. Jeśli w klasie nie zdefiniowaliśmy konstruktora, to zostanie użyty konstruktor domyślny. Aby powstał obiekt klasy pochodnej, musi być najpierw utworzony podobiekt klasy nadrzędnej wchodzący w jego skład. 22
23 Standardowo wywoływany jest konstruktor bezparametrowy (lub domyślny) klasy nadrzędnej. Aby do konstrukcji podobiektu klasy bazowej użyć konstruktora innego niż bezparametrowy musimy w klasie pochodnej zdefiniować konstruktor, który wywoła odpowiedni konstruktor klasy bazowej poprzez listę inicjalizacyjną 23
24 Przykład takiego wywołania class Point { protected: int x; int y; Point(int x, int y) : x(x), y(y) { } }; class Pixel: public Point { public: int color; Pixel(int x, int y, int color) : Punkt(x,y), color(color) { } }; 24
25 Składowe odziedziczone są tu inicjowane w swojej bazowej klasie (przekazywane jako parametr), składowe nowe w klasie pochodnej. Konstruktory wywoływane są od góry struktury dziedziczenia. Takie łańcuchy wywołań konstruktorów są tworzone dla każdego nowo tworzonego obiektu. Jeśli klasa dziedziczy z kilku klas, to konstruktory klas bazowych są wywoływane w kolejności ich wystąpienia na liście dziedziczenia (problematyczne). 25
26 Destruktory wywoływane są w kolejności odwrotnej do konstruktorów ( od dołu struktury dziedziczenia). 26
27 KONSTRUKTOR KOPIUJĄCY 27
28 Definiowanie własnego konstruktora kopiującego jest niezbędne, gdy klasa zawiera jakieś dane dynamiczne (tworzy obiekty dynamiczne, a nawet zwykłego c-stringa) Podobnie niezbędny jest wtedy destruktor Konstruktor kopiujący przyjmuje jako parametr stały obiekt aktualnej klasy (przekazywany przez stałą referencję) 28
29 Przykład danych dynamicznych class Osoba { char* imie; public: Osoba() : imie(strcpy(new char[9], "nieznane")) { } Osoba(const char* n) : imie(strcpy(new char[strlen(n)+1], n)) { } Osoba(const Osoba& os) : imie(strcpy(new char[strlen(os. imie)+1], os. imie)) { } ~Osoba() { delete [ ] imie; } }; 29
30 POLIMORFIZM 30
31 Polimorfizm Polimorfizm - wskaźniki i referencje mogą dotyczyć obiektów różnego typu, a wywołanie metody dla referencji spowoduje zachowanie odpowiednie dla rzeczywistego typu obiektu wywoływanego. Jeśli dzieje się to w czasie działania programu, to nazywa się to późnym wiązaniem lub wiązaniem dynamicznym. Niektóre języki udostępniają bardziej statyczne (w trakcie kompilacji) rozwiązania polimorfizmu - na przykład przeciążanie operatorów i szablony w C++. 31
32 Typy statyczne i dynamiczne class A { public: void fun() { cout << "Metoda z klasy A"<< endl; } }; class B : public A { void fun() { cout << "Metoda z klasy B"<< endl; } }; A a, *wska = new A, *wskb = new B; A jest obiektem statycznym klasy A. wska jest wskaźnikiem typu A* do obiektu klasy A. Typem statycznym obiektu wskazywanego przez pa jest A i typem dynamicznym również A wskb jest wskaźnikiem typu A* do obiektu klasy B. Typem statycznym obiektu wskazywanego przez wskb jest A, ale typem dynamicznym jego typ prawdziwy, czyli B; 32
33 Wywołując zwykłą metodę fun() dla obiektów a, *wska, *wskb, decydować będzie typ statyczny obiektu, czyli wywoła się treść z klasy A. Aby wywoływać metodę fun() odpowiednią dla dynamicznego typu obiektu należy w klasie bazowej dodać słówko virtual. Metodę nazywamy wirtualną, a wywołanie polimorficznym. 33
34 Metoda wirtualna i wywołanie polimorficzne class A { public: virtual void fun() { cout << "Metoda z klasy A"<< endl; } }; class B : public A { void fun() { cout << "Metoda z klasy B"<< endl; } };... A *wskb->fun(); //wypisze "Metoda z klasy B" 34
35 Warunki wystąpienia polimorfizmu (późnego wiązania) w C++ 1. wywołanie jest poprzez wskaźnik lub referencję typu bazowego (tutaj A*); 2. prawdziwym typem obiektu, na rzecz którego następuje wywołanie, jest typ pochodny (tutaj B); 3. metoda jest wirtualna (virtual); 4. metoda została przedefiniowana w klasie B (ta sama nazwa i sygnatura!). 35
36 Jawne wywołanie niepolimorficzne funkcji wirtualnej Wywołujemy metodę z klasy bazowej przez nazwę kwalifikowaną: wskb>a::fun(); Nie można jawnie wywoływać polimorficznie: a.b::fun() // błąd! wskb>b::fun(); // błąd! 36
37 Cena polimorfizmu Ceną za polimorfizm jest pewna utrata wydajności wykonania oraz narzut pamięci. Dla wywołań na rzecz obiektów klas niepolimorficznych odpowiednia metoda jest wybierana (i włączana do kodu wykonywalnego) już w czasie kompilacji na podstawie typu statycznego, jest to tzw. wczesne wiązanie. Późne wiązanie oznacza konieczność sprawdzenia rzeczywistego typu obiektu podczas wykonania programu i wybranie odpowiedniej metody. 37
38 Inne języki obiektowe W większości języków obiektowych (np. Java, Python) wszystkie wywołania metod są polimorficzne (wirtualne). W C++ mamy możliwość stosowania szybszego i lżejszego pamięciowo statycznego wiązania (kiedy niepotrzebny jest polimorfizm). 38
39 Polimorfizm i referencje W wywołaniach polimorficznych C++ można używać referencji (analogicznie do wskaźników). A a, *wska = new A, *wskb = new B; A &ref_a = a, &ref_aa = wska, &ref_b = wskb; ref_a.fun(); ref_aa.fun(); ref_b.fun(); //potencjalnie wirtualne 39
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ółowoProgramowanie 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ółowoWstę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ółowoDziedziczenie & 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ółowoProgramowanie 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ółowoJę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ółowoOperacje 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ółowoPARADYGMATY 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ółowoDziedziczenie jednobazowe, poliformizm
Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie jednobazowe 2. Polimorfizm część pierwsza 3. Polimorfizm część druga Zofia Kruczkiewicz, ETE8305_6 1 Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie
Bardziej szczegółowoSkł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ółowoWykł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ółowoProgramowanie 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ółowoProgramowanie 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ółowoWejś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ółowoReferencje. 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ółowoPROE 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ółowoProgramowanie obiektowe w języku C++ dr inż. Jarosław Forenc
Rok akademicki 2016/2017, Wykład nr 4 2/45 Plan wykładu nr 4 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2016/2017
Bardziej szczegółowoProgramowanie obiektowe w języku
Programowanie obiektowe w języku C++ Stanisław Gepner sgepner@meil.pw.edu.pl Dziedziczenie Wstęp Zacznijmy od przykładu Przykład rolniczy Każde zwierzątko wydaje dźwięk Każde się tak samo porusza Musimy
Bardziej szczegółowodr 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ółowoProgramowanie 2. Język C++. Wykład 9.
9.1 Ukrywanie metod, metody nadpisane... 1 9.2 Metody wirtualne, wirtualny destruktor... 2 9.3 Metody czysto wirtualne... 6 9.4 Klasy abstrakcyjne... 7 9.5 Wielodziedziczenie... 9 9.1 Ukrywanie metod,
Bardziej szczegółowoJę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ółowoSkł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ółowoKurs 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ółowoProgramowanie 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ółowoProgramowanie 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ółowoProgramowanie 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ółowoWykład V. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej
Wykład V - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Programowanie obiektowe Dziedziczenie (inheritance) - mechanizm
Bardziej szczegółowoPliki 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ółowoProgramowanie 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ółowoWykł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ółowoPodstawy Programowania Obiektowego
Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja
Bardziej szczegółowoProgramowanie 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ółowoTEMAT : 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ółowoJęzyk C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.
- - uzupełnienie notatek: dr Jerzy Białkowski - - 1-2 - - - 1 #include 2 #include 3 # include 4 using namespace std ; 5 6 class Punkt { 7 8 private : 9 double
Bardziej szczegółowoProgramowanie 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ółowoPliki 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ółowoProgramowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14
Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Wirtualne destruktory class A int* a; A(int _a) a = new int(_a);} virtual ~A() delete a;} class B: public A double* b;
Bardziej szczegółowoIMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji
Bardziej szczegółowoDziedziczenie. Ogólna postać dziedziczenia klas:
Dziedziczenie Ogólna postać dziedziczenia klas: class nazwa_clasy_pochodnej : specyfikator_dostępu nazwa_clasy_bazowej specyfikator_dostępu : public private protected Specyfikator dostępu definiuje, w
Bardziej szczegółowoKurs 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ółowoProgramowanie 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ółowoProgramowanie 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ółowoProgramowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska
Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska Programowanie Obiektowe Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,
Bardziej szczegółowoWstę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ółowoPliki 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ółowoZaawansowane 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ółowojest 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ółowoWprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class).
Wprowadzenie w dziedziczenie Klasa D dziedziczy klasę B: B klasa bazowa D klasa pochodna Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class). Najpierw jest tworzona klasa bazowa,
Bardziej szczegółowoWykł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ółowoPARADYGMATY PROGRAMOWANIA Wykład 2
PARADYGMATY PROGRAMOWANIA Wykład 2 Definiowanie klas w C++ - ciąg dalszy Lista inicjalizująca konstruktora Przeznaczenie - do inicjalizacji pól klasy z kwalifikatorem const i inicjalizacji obiektów składowych
Bardziej szczegółowoNowe 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ółowoC++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU
Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale
Bardziej szczegółowoInformacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;
Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze
Bardziej szczegółowo1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float
Bardziej szczegółowoWykł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ółowoWykład 8: klasy cz. 4
Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD
Bardziej szczegółowoProgramowanie 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ółowo1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?
1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie
Bardziej szczegółowoW2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :
Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : class nazwa_klasy prywatne dane i funkcje public: publiczne dane i funkcje lista_obiektów;
Bardziej szczegółowoRzutowanie i konwersje
Rzutowanie i konwersje Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2013 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania
Bardziej szczegółowoKLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
Bardziej szczegółowoJę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ółowo2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne
Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie
Bardziej szczegółowoPodstawy programowania w języku C++ Zadania - dziedziczenie i polimorfizm
Podstawy programowania w języku C++ Zadania - dziedziczenie i polimorfizm Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki
Bardziej szczegółowoProgramowanie obiektowe Wykład 3. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21
Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Przydzielanie pamięci Poniżej przedstawiono w C++ dwie klasy obrazujące sposób rezerwacji pamięci. class Osoba char imie[30];
Bardziej szczegółowoPROGRAMOWANIE OBIEKTOWE W C++ cz. 2. Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów.
PROGRAMOWANIE OBIEKTOWE W C++ cz. 2 Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów. Dziedziczenie Dziedziczenie jest to technika pozwalaj c na definiowanie nowej klasy przy wykorzystaniu
Bardziej szczegółowowykł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ółowoTechnologie cyfrowe semestr letni 2018/2019
Technologie cyfrowe semestr letni 2018/2019 Tomasz Kazimierczuk Wykład 8 (15.04.2019) Kompilacja Kompilacja programu (kodu): proces tłumaczenia kodu napisanego w wybranym języku na kod maszynowy, zrozumiały
Bardziej szczegółowo2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy
2.4 Dziedziczenie Poprzednie dwa rozdziały które dotyczyły zagadnienia automatów komórkowych na przykładach programów w C++. Mogłyby one sugerować że niekoniecznie trzeba programować obiektowo aby napisać
Bardziej szczegółowoMechanizm dziedziczenia
Mechanizm dziedziczenia Programowanie obiektowe jako realizacja koncepcji ponownego wykorzystania kodu Jak przebiega proces dziedziczenia? Weryfikacja formalna poprawności dziedziczenia Realizacja dziedziczenia
Bardziej szczegółowoProgramowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.
Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 7 Przegląd typów strukturalnych - klasy i obiekty - c.d. Klasa - powtórzenie
Bardziej szczegółowoFunkcje przeciążone, konstruktory kopiujące, argumenty domyślne
Funkcje przeciążone, konstruktory kopiujące, argumenty domyślne Przeciążenie funkcji polega na użyciu funkcji z tą samą nazwą, które mają różne listy argumentów(różne typy, różna ilość lub to i inne).
Bardziej szczegółowoProgramowanie obiektowe, wykład nr 6. Klasy i obiekty
Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 6 Klasy i obiekty W programowaniu strukturalnym rozwój oprogramowania oparto
Bardziej szczegółowoJęzyk C++ zajęcia nr 1
I. Programowanie obiektowe Język C++ zajęcia nr 1 Zasadniczą cechą programowania obiektowego jest łączne rozpatrywanie zagadnień dotyczących algorytmów i struktur danych. Wyrazem tego jest zmiana w sposobie
Bardziej szczegółowoJęzyk C++ Programowanie obiektowe
Język C++ Programowanie obiektowe Cechy programowania obiektowego abstrakcyjne typy danych hermetyczność obiektów (kapsułkowanie) dziedziczenie polimorfizm Programowanie proceduralne vs. programowanie
Bardziej szczegółowoOperator 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ółowoC++ - [4-7] Polimorfizm
Slajd 1 z 14 C++ - [4-7] Polimorfizm Nysa 2004-2013. Autor: Wojciech Galiński. wersja dnia 20 maja 2013 r. Slajd 2 z 14 Polimorfizm i klasa polimorficzna POLIMORFIZM (cytat z Wikipedii) (wielopostaciowość)
Bardziej szczegółowoDariusz 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ółowoCzęść 4 życie programu
1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część
Bardziej szczegółowoProgramowanie obiektowe w C++ Wykład 12
Programowanie obiektowe w C++ Wykład 12 dr Lidia Stępień Akademia im. Jana Długosza w Częstochowie L. Stępień (AJD) 1 / 22 Zakresowe pętle for double tab[5] {1.12,2.23,3.33,4.12,5.22 for(double x: tab)
Bardziej szczegółowoKLASY cz.1. Dorota Pylak
KLASY cz.1 Dorota Pylak Do czego służą klasy? 2 W programowaniu obiektowym posługujemy się obiektami. Obiekty charakteryzują się: cechami (inaczej - atrybutami lub stanami) operacjami, które na nich można
Bardziej szczegółowoProgramowanie obiektowe w C++ Wykład 1
Programowanie obiektowe w C++ Wykład 1 dr Lidia Stępień Akademia im. Jana Długosza w Częstochowie L. Stępień (AJD) POwCPP 1 / 24 Literatura Prata Stephen, Szkoła programowania. Język C++. Wydawnictwo Helion,
Bardziej szczegółowoPodczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.
Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.
Bardziej szczegółowoProf. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com
Programowanie wykład dla I roku bioinformatyki semestr letni 2013 Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel. 58 523 2466 e-mail: danuta.makowiec at gmail.com Cel bloku
Bardziej szczegółowoDo czego służą klasy?
KLASY Dorota Pylak 2 Do czego służą klasy? W programowaniu obiektowym posługujemy się obiektami. Obiekty charakteryzują się: cechami (inaczej - atrybutami lub stanami) operacjami, które na nich można wykonywać
Bardziej szczegółowoSpis 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ółowoDo czego służą klasy?
KLASY Dorota Pylak 2 Do czego służą klasy? W programowaniu obiektowym posługujemy się obiektami. Obiekty charakteryzują się: cechami (inaczej - atrybutami lub stanami) operacjami, które na nich można wykonywać
Bardziej szczegółowoZajęcia nr 4 Programowanie obiektowe konstruktory. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej
Zajęcia nr 4 Programowanie obiektowe konstruktory dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Plan Klasy przypomnienie Konstruktory Destruktor Przeciążanie
Bardziej szczegółowoEGZAMIN 2 (14 WRZEŚNIA 2015) JĘZYK C++
IMIĘ i NAZWISKO: przykładowe odpowiedzi NR: 0 EGZAMIN 2 (14 WRZEŚNIA 2015) JĘZYK C++ 1. Napisz precyzyjnie co to jest ptr jeśli: const * const Foo ptr; ptr to stały wskaźnik do stałego obiektu typu Foo
Bardziej szczegółowoPROE wykład 4 pozostałe operatory, forward declaration, dziedziczenie. dr inż. Jacek Naruniec
PROE wykład 4 pozostałe operatory, forward declaration, dziedziczenie dr inż. Jacek Naruniec Kolokwium wykładowe Pierwsze kolokwium 6 kwietnia Drugie kolokwium 1 czerwca Kolokwium poprawkowe 8 czerwca
Bardziej szczegółowoOperacje 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ółowoWstę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ółowoPliki 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ółowoProgramowanie Obiektowo Zorientowane w języku C++ Klasy, pola, metody
Programowanie Obiektowo Zorientowane w języku C++ Klasy, pola, metody Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej
Bardziej szczegółowoWykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:
Program przedmiotu Programowanie (język C++) Wykład 1. Język C a C++. Definiowanie prostych klas. Typy referencyjne. Domyślne wartości argumentów. PrzeciąŜanie funkcji. Konstruktory, destruktory. Definiowanie
Bardziej szczegółowoProgramowanie 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ółowoTypy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura
Programowanie komputerów Programowanie obiektowe. Typy zmiennych proste i złożone Typy zmiennych "wbudowane", tj. identyfikowane przez słowa kluczowe, są określane jako proste: int short long float double
Bardziej szczegółowoProgramowanie 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ółowoSzablony klas, zastosowanie szablonów w programach
Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do
Bardziej szczegółowoProgramowanie, część I
Programowanie, część I Rafał J. Wysocki Instytut Fizyki Teoretycznej, Wydział Fizyki UW 22 lutego 2011 Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część I 22 lutego 2011 1 / 80 Wstęp Informacje organizacyjne
Bardziej szczegółowo