Wstęp do Programowania 2

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "Wstęp do Programowania 2"

Transkrypt

1 Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak Akademia im. Jana Długosza Wykład 5

2 W programowaniu obiektowym programista koncentruje się na obiektach. Zadaje sobie pytania typu: Jak najlepiej opisać (zdefiniować) dany obiekt. Jakich danych potrzeba, aby poprawnie zdefiniować dany obiekt. Jakich operacji (metod) wymaga praca z danym obiektem.

3 W programowaniu obiektowym programista koncentruje się na obiektach. Zadaje sobie pytania typu: Jak najlepiej opisać (zdefiniować) dany obiekt. Jakich danych potrzeba, aby poprawnie zdefiniować dany obiekt. Jakich operacji (metod) wymaga praca z danym obiektem. Abstrakcja Abstrakcja w informatyce stanowi klucz do reprezentowania informacji w kategoriach interfejsu użytkownika.

4 W programowaniu obiektowym programista koncentruje się na obiektach. Zadaje sobie pytania typu: Jak najlepiej opisać (zdefiniować) dany obiekt. Jakich danych potrzeba, aby poprawnie zdefiniować dany obiekt. Jakich operacji (metod) wymaga praca z danym obiektem. Abstrakcja Abstrakcja w informatyce stanowi klucz do reprezentowania informacji w kategoriach interfejsu użytkownika. Klasa Klasa to narzędzie, za pomoca któregow C++ tłumaczy się abstrakcje na typ użytkownika. Jest opakowaniem łacz acym reprezentacje danych z metodami ich przetwarzania.

5 Specyfikacja klasy składa sie z dwóch części: Deklaracji klasy - opisuje dane (w kategoriach zmiennych składowych) oraz interface publiczny (w kategoriach funkcji składowych). Definicji metod klasy - opisuj a implementację funkcji składowych klasy.

6 Deklaracja - schemat class NazwaTypu { // ciało klasy - tu deklaruje się // składniki klasy ; // koniecznie średnik!!!

7 Deklaracja - klasa Punkt class Punkt { private: int x, y; public: void inicjalizuj(int wspx, int wspy); void przesun(int deltax, int deltay); void wypisz(); ;

8 Słowa kluczowe: public i private Słowa kluczowe public i private opisuja tryb dostępu do składowych klasy. Każdy program używajacy obiektu danej klasy ma bezpośredni dostęp do jej części publicznej. Do prywatnych składowych obiektu program może uzyskać dostęp wyłacznie za pośrednictwem publicznych funckji składowych, albo przy pomocy funkcji zaprzyjaźnionych (o nich później :)).

9 int main() { int x, y; cout << "Podaj wspolrzedne punktu (x,y): "; cin >> x >> y; Punkt A, B; A.inicjalizuj(x, y); B.inicjalizuj(3, 4); cout << "Oto punkt: A"; A.wypisz(); cout << "Oto punkt: B"; B.wypisz(); cout << "Przesuwamy punkt A o wektor [2, 4]" << endl; A.przesun(2, 4); cout << "Obecnie punkt A ma wspolrzedne: A"; A.wypisz(); cout << "O ile przesunac punkt B? "; cin >> x >> y; cout << "Punkt B przesuwamy o wektor [" << x << ", " << y << "]" << endl; B.przesun(x, y); cout << "Obecnie punkt B ma wspolrzedne: B"; B.wypisz(); return 0;

10 Publiczne funkcje składowe pośrednicz a między programem a prywatnymi składowymi obiektu. Taka ochrona danych nosi nazwę ukrywania danych.

11 Publiczne funkcje składowe pośrednicz a między programem a prywatnymi składowymi obiektu. Taka ochrona danych nosi nazwę ukrywania danych. Gromadzenie szczegółów implementacyjnych i odzielanie ich od abstrakcji (interfejsu publicznego) nosi nazwę hermetyzacji.

12 Publiczne funkcje składowe pośrednicz a między programem a prywatnymi składowymi obiektu. Taka ochrona danych nosi nazwę ukrywania danych. Gromadzenie szczegółów implementacyjnych i odzielanie ich od abstrakcji (interfejsu publicznego) nosi nazwę hermetyzacji. Składowe klasy (elementy danych, funkcje) można deklarować w publicznej lub prywatnej części klasy.

13 Publiczne funkcje składowe pośrednicza między programem a prywatnymi składowymi obiektu. Taka ochrona danych nosi nazwę ukrywania danych. Gromadzenie szczegółów implementacyjnych i odzielanie ich od abstrakcji (interfejsu publicznego) nosi nazwę hermetyzacji. Składowe klasy (elementy danych, funkcje) można deklarować w publicznej lub prywatnej części klasy. Z uwagi na podstawowe założenia programowania obiektowego (ukrywanie danych), elementy danych (pola składowe) zwykle trafiaja do części prywatnej.

14 Publiczne funkcje składowe pośrednicza między programem a prywatnymi składowymi obiektu. Taka ochrona danych nosi nazwę ukrywania danych. Gromadzenie szczegółów implementacyjnych i odzielanie ich od abstrakcji (interfejsu publicznego) nosi nazwę hermetyzacji. Składowe klasy (elementy danych, funkcje) można deklarować w publicznej lub prywatnej części klasy. Z uwagi na podstawowe założenia programowania obiektowego (ukrywanie danych), elementy danych (pola składowe) zwykle trafiaja do części prywatnej. Ponieważ funckje składowe tworza interface klasy, to powinny się znajdować w części publicznej; w przeciwnym razie program nie mógłby ich wywoływać.

15 Publiczne funkcje składowe pośrednicza między programem a prywatnymi składowymi obiektu. Taka ochrona danych nosi nazwę ukrywania danych. Gromadzenie szczegółów implementacyjnych i odzielanie ich od abstrakcji (interfejsu publicznego) nosi nazwę hermetyzacji. Składowe klasy (elementy danych, funkcje) można deklarować w publicznej lub prywatnej części klasy. Z uwagi na podstawowe założenia programowania obiektowego (ukrywanie danych), elementy danych (pola składowe) zwykle trafiaja do części prywatnej. Ponieważ funckje składowe tworza interface klasy, to powinny się znajdować w części publicznej; w przeciwnym razie program nie mógłby ich wywoływać. Domyślnym trybem dostępu jest tryb prywatny, zatem nie musimy używać słowa kluczowego private.

16 class Punkt { int x, y; public: void inicjalizuj(int wspx, int wspy); void przesun(int deltax, int deltay); void wypisz(); ;

17 Klasy i struktury Opis klasy wyglada jak deklaracja struktury z dodatkiem funkcji składowych i trybów dostępu. Ale, C++ daje te same możliwości strukturom, co klasom. Jedyna różnica to: w strukturze domyślnym trybem jest tryb publiczny, a w klasie tryb prywatny.

18 Funkcje składowe klasy Definicja funkcji składowej, to definicja zwykłej funkcji, ale posiada dwie dodatkowe cechy: Stosowany jest operator zasięgu (::), aby zdefiniować klasę, do której funkcja należy. Funkcja składowa (metoda) ma dostęp do prywanych danych klasy.

19 Klasa Punkt - definicje metod void Punkt::inicjalizuj(int wspx, int wspy) { x = wspx; y = wspy; void Punkt::przesun(int deltax, int deltay) { x += deltax; y += deltay; void Punkt::wypisz() { cout << "(" << x << ", " << y << ")\r\n";

20 Klasa Punkt3d class Punkt3d { int x, y,z; public: void inicjalizuj(int wspx, int wspy, int wspz); void przesun(int deltax, int deltay, int deltaz); void wypisz(); ;

21 Klasa Punkt3d - definicje metod void Punkt3d::inicjalizuj(int wspx, int wspy, int wspz) { x = wspx; y = wspy; z = wspz; void Punkt3d::przesun(int deltax, int deltay, int deltaz) { x += deltax; y += deltay; z += deltaz; void Punkt3d::wypisz() { cout << "(" << x << ", " << y << ", " << z << ")\r\n";

22 Metody wplatane Każda funkcja zdefiniowana w deklaracji klasy automatycznie staje się funkcja wplatana. Można też zdefiniować funkcję wplatana poza deklaracja klasy; w tym celu należy użyć kwalifikatora inline. Specjalne reguły zwiazane z funkcjami wplatanymi wymagaja zdefiniowania ich w każdym pliku, w którym sa wywoływane. Aby zatem udostępnić funkcje wplatane, najlepiej dostarczyć je wraz z interfejsem klasy.

23 Metody wplatane - przykład class Punkt3d { int x, y,z; public: void inicjalizuj(int wspx, int wspy, int wspz){ x = wspx; y = wspy; z = wspz; void przesun(int deltax, int deltay, int deltaz); void wypisz(); ;

24 class Punkt3d { int x, y,z; public: void inicjalizuj(int wspx, int wspy, int wspz); void przesun(int deltax, int deltay, int deltaz); void wypisz(); ; inline void Punkt3d::inicjalizuj(int wspx, int wspy, int wspz){ x = wspx; y = wspy; z = wspz;

25 Obiekty Każdy nowo utworzony obiekt zawiera przestrzeń na wewnetrzne zmienne - dane składowe. Wszystkie obiekty tej samej klasy współdziel a jeden zbior metod.

26 int main() { int x, y, z; cout << "Podaj wspolrzedne punktu (x,y,z): "; cin >> x >> y >> z; Punkt A, B; A.inicjalizuj(x, y, y); B.inicjalizuj(3, 4, 5); cout << "Oto punkt: A"; A.wypisz(); cout << "Oto punkt: B"; B.wypisz(); return 0;

27 Konstruktory Konstruktory klasy służa do konstruowania nowych obiektów i przypisywania wartości ich danym składowym. Nazwa konstruktora jest taka sama jak nazwa klasy. Konstruktor nie zwraca wartości i nie definiuje się jego typu. Dzięki przeci ażaniu funkcji można utworzyć kilka konstruktorów - oczywiście pod warunkiem, że każdy będzie miał inna sygnaturę.

28 Przykład definicji class Punkt { private: int x, y; public: Punkt(int wspx, int wspy); // void przesun(int deltax, int deltay); void wypisz(); ; Punkt::Punkt(int wspx, int wspy){ x = wspx; y = wspy; void Punkt::wypisz() { cout << "(" << x << ", " << y << ")\r\n";

29 Przykład użycia konstruktora int main() { int x, y; cout << "Podaj wspolrzedne punktu (x,y): \n x = "; cin >> x ; cout << "y = "; cin >> y; Punkt A = Punkt(x, y), B = Punkt(3, 4); cout << "Oto punkt: A"; A.wypisz(); cout << "Oto punkt: B"; B.wypisz(); return 0;

30 Przykład użycia konstruktora int main() { int x, y; cout << "Podaj wspolrzedne punktu (x,y): \n x = "; cin >> x ; cout << "y = "; cin >> y; Punkt A(x, y), B(3, 4); cout << "Oto punkt: A"; A.wypisz(); cout << "Oto punkt: B"; B.wypisz(); return 0;

31 Przykład użycia konstruktora int main() { int x, y; cout << "Podaj wspolrzedne punktu A: \n"; cout << "x = "; cin >> x ; cout << "y = "; cin >> y; Punkt *A = new Punkt(x, y); cout << "Oto punkt: A"; A->wypisz(); cout << "Podaj wspolrzedne punktu B: \n"; cout << "x = "; cin >> x ; cout << "y = "; cin >> y; Punkt *B = new Punkt(x, y); cout << "Oto punkt: B"; B->wypisz(); delete A; delete B; return 0;

32 Konstruktor domyślny Konstruktor domyślny jest używany do utworzenia obiektu wtedy, gdy nie podamy wartości inicjalizujacych, np. Punkt A; Kompilator tworzy konstruktor domyślny tylko wtedy, gdy nie zdefiniujemy żadnych własnych konstruktorów. Zdefiniowanie dowolnego konstruktora wymaga zdefiniowania rownież konstruktora domyślnego. Inaczej instrukcja typu: Punkt A; bedzie powodowała bład.

33 Konstruktor domyślny - przykład #include <iostream> using namespace std; class Punkt { private: int x, y; public: Punkt(); Punkt(int wspx, int wspy); void wypisz(); ; Punkt::Punkt(){x = 0; y = 0; Punkt::Punkt(int wspx, int wspy){ x = wspx; y = wspy; void Punkt::wypisz() { cout << "(" << x << ", " << y << ")\r\n";

34 Konstruktor domyślny - przykład #include <iostream> using namespace std; class Punkt { private: int x, y; public: Punkt(int wspx=0, int wspy=0); void wypisz(); ; Punkt::Punkt(int wspx, int wspy){ x = wspx; y = wspy; void Punkt::wypisz() { cout << "(" << x << ", " << y << ")\r\n";

35 Konstruktor domyślny - przykład int main() { int x, y; Punkt C; C.wypisz(); cout << "\npodaj wspolrzedne punktu A: \n"; cout << "x = "; cin >> x ; cout << "y = "; cin >> y; Punkt *A = new Punkt(x, y); cout << "Oto punkt: A"; A->wypisz(); cout << "Podaj wspolrzedne punktu B: \n"; cout << "x = "; cin >> x ; cout << "y = "; cin >> y; Punkt *B = new Punkt(x, y); cout << "Oto punkt: B"; B->wypisz(); delete A; delete B; return 0;

36 Destruktory Kiedy używamy konstruktora do utworzenia obiektu, program śledzi ten obiekt aż do momentu jego wygaśnięcia. Gdy to nastapi, wywołuje specjalna funkcje zwana destruktorem. Jeśli w konstruktorze używamy, np. operatora new, to w destruktorze powinniśmy użyć operatora delete, aby zwolnić przydzielona pamięć. Destruktor nazywa się tak jak klasa, ale dodatkowo nazwa ta poprzedzona jest znakiem tyldy ( ). Podobnie jak konstruktor nie ma wartości zwrotnej, ani deklarowanego typu. Nie posiada argumentów.

37 Destruktory - przykład #include <iostream> using namespace std; class Punkt { private: int x, y; public: // konstruktor Punkt(int wspx=0, int wspy=0); void wypisz(); //destruktor ~Punkt(){; ;

38 Rozważmy program: #include <iostream> using namespace std; class Punkt { private: int x, y; public: Punkt(int wspx=0, int wspy=0); void wypisz(); ~Punkt(){; ; Punkt::Punkt(int wspx, int wspy){ x = wspx; y = wspy; void Punkt::wypisz(){ cout << "(" << x << ", " << y << ")\r\n";

39 int main() { int x, y; cout << "\npodaj wspolrzedne punktu A: \n"; cout << "x = "; cin >> x ; cout << "y = "; cin >> y; Punkt *A = new Punkt(x, y); cout << "Oto punkt: A"; A->wypisz(); cout << "Podaj wspolrzedne punktu B: \n"; cout << "x = "; cin >> x ; cout << "y = "; cin >> y; const Punkt B(x,y) ; B.wypisz(); delete A; return 0;

40 Wynik: g++ punkt_5.cpp punkt_5.cpp: In function int main() : punkt_5.cpp:33: error: passing const Punkt as this argument of void Punkt::wypisz() discards qualifiers

41 Rozwiazanie #include <iostream> using namespace std; class Punkt { private: int x, y; public: Punkt(int wspx=0, int wspy=0); void wypisz() const; ~Punkt(){; ; Punkt::Punkt(int wspx, int wspy){ x = wspx; y = wspy; void Punkt::wypisz() const{ cout << "(" << x << ", " << y << ")\r\n";

42 Niejawny this #include <iostream> using namespace std; class Punkt { private: int x, y; public: Punkt(int wspx=0, int wspy=0); void wypisz() const; bool rowne(const Punkt& ); ~Punkt(){; ; Punkt::Punkt(int wspx, int wspy){ x = wspx; y = wspy; void Punkt::wypisz() const{ cout << "(" << x << ", " << y << ")\r\n"; bool Punkt::rowne(const Punkt& A){ if ((A.x == x) && (A.y == y)) return true; else return false;

43 Jawny this #include <iostream> using namespace std; class Punkt { private: int x, y; public: Punkt(int wspx=0, int wspy=0); void wypisz() const; bool rowne(const Punkt& ); ~Punkt(){; ; Punkt::Punkt(int wspx, int wspy){ x = wspx; y = wspy; void Punkt::wypisz() const{ cout << "(" << x << ", " << y << ")\r\n"; bool Punkt::rowne(const Punkt& A){ if ((A.x == this->x) && (A.y == this->y)) return true; else return false;

44 Użycie klasy int main() { int x, y; cout << "\npodaj wspolrzedne punktu A: \n"; cout << "x = "; cin >> x ; cout << "y = "; cin >> y; Punkt *A = new Punkt(x, y); cout << "Oto punkt: A"; A->wypisz(); cout << "Podaj wspolrzedne punktu B: \n"; cout << "x = "; cin >> x ; cout << "y = "; cin >> y; Punkt *B = new Punkt(x, y); cout << "Oto punkt: B"; B->wypisz(); if ( (A->rowne(*B)) == true) cout<< "Punkty są identyczne! \n"; else cout<< "Punkty są różne! \n"; delete A; delete B; return 0;

45 Użycie klasy Podaj wspolrzedne punktu A: x = 1 y = 1 Oto punkt: A(1, 1) Podaj wspolrzedne punktu B: x = 1 y = 1 Oto punkt: B(1, 1) Punkty są identyczne!

46 Użycie klasy Podaj wspolrzedne punktu A: x = 1 y = 1 Oto punkt: A(1, 1) Podaj wspolrzedne punktu B: x = 2 y = 2 Oto punkt: B(2, 2) Punkty są różne!

47 Użycie klasy #include <iostream> using namespace std; class Punkt { private: int x, y; public: Punkt(int wspx=0, int wspy=0); void wypisz() const; bool rowne(const Punkt& ); const Punkt& wyzej(const Punkt& ); ~Punkt(){; ; Punkt::Punkt(int wspx, int wspy){x = wspx; y = wspy; void Punkt::wypisz() const{ cout << "(" << x << ", " << y << ")\r\n"; bool Punkt::rowne(const Punkt& A){ if ((A.x == this->x) && (A.y == this->y)) return true; else return false; const Punkt& Punkt::wyzej(const Punkt& A){ if ((A.y < y)) return *this; else return A;

48 Użycie klasy int main() { int x, y; cout << "\npodaj wspolrzedne punktu A: \n"; cout << "x = "; cin >> x ; cout << "y = "; cin >> y; Punkt *A = new Punkt(x, y); cout << "Oto punkt: A"; A->wypisz(); cout << "Podaj wspolrzedne punktu B: \n"; cout << "x = "; cin >> x ; cout << "y = "; cin >> y; Punkt *B = new Punkt(x, y); cout << "Oto punkt: B"; B->wypisz(); if ( A->rowne(*B)) cout<< "Punkty są identyczne! \n"; else cout<< "Punkty są różne! \n"; //Domyślny konstruktor kopiujacy. Punkt C = A->wyzej(*B); if ( C.rowne(*A) ) cout<< "A lezy wyżej niż B! \n"; else cout<< "B lezy wyżej niż A! \n"; delete A; delete B; return 0;

49 Przyklad 1 Uwaga! Jeśli chcemy tworzyć tablice obiektów danej klasy, to musi być zdefiniowany konstruktor domyślny. int main() { Punkt Tab[4]; int x, y; for (int i=0 ; i<4 ; i++ ) { cout << "\npodaj wspolrzedne punktu: \n"; cout << "x = "; cin >> x ; cout << "y = "; cin >> y; Tab[i]=Punkt(x, y); for (int i=0 ; i<4 ; i++ ) { cout << "Oto punkt Tab["<< i << "] : "; Tab[i].wypisz(); return 0;

50 Przyklad 2 int main() { Punkt *Tab = new Punkt[4]; int x, y; for (int i=0 ; i<4 ; i++ ) { cout << "\npodaj wspolrzedne punktu: \n"; cout << "x = "; cin >> x ; cout << "y = "; cin >> y; Tab[i]=Punkt(x, y); for (int i=0 ; i<4 ; i++ ) { cout << "Oto punkt Tab["<< i << "] : "; Tab[i].wypisz(); delete []Tab; return 0;

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

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : class nazwa_klasy prywatne dane i funkcje public: publiczne dane i funkcje lista_obiektów;

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

Podstawy Programowania Obiektowego

Podstawy 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ół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 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

Programowanie obiektowe w C++ Wykład 12

Programowanie 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ółowo

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

Programowanie 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ół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

Podstawy Programowania Obiektowego

Podstawy Programowania Obiektowego Podstawy Programowania Obiektowego Pojęcie struktury i klasy. Konstruktor i destruktor. Spotkanie 08 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Spotkanie 08 Klasy: definicja a deklaracja klasy dane składowe

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

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

Języki i paradygmaty programowania

Języki i paradygmaty programowania Języki i paradygmaty programowania WYDZIAŁ ELEKTRONIKI i INFORMATYKI dr inż. Robert Arsoba Politechnika Koszalińska Wydział Elektroniki i Informatyki POLITECHNIKA KOSZALIŃSKA 2009/2010 Materiały do wykładu

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 int getmax (int a, int b) { return (a > b? a : b); float getmax (float a, float b) { return (a > b? a : b); long getmax (long a, long b)

Bardziej szczegółowo

Projektowanie klas c.d. Projektowanie klas przykład

Projektowanie klas c.d. Projektowanie klas przykład Projektowanie klas c.d. ogólne wskazówki dotyczące projektowania klas: o wyodrębnienie klasy odpowiedź na potrzeby życia (obsługa rozwiązania konkretnego problemu) o zwykle nie uda się utworzyć idealnej

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 2

PARADYGMATY 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ółowo

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18 Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18 Literatura Języki i paradygmaty programowania Wykład 2 1. C. S. Horstman, G. Cornell, core Java 2 Podstawy, Helion 2003

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

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Programowanie 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ółowo

Programowanie obiektowe i C++ dla matematyków

Programowanie obiektowe i C++ dla matematyków Programowanie obiektowe i C++ dla matematyków Bartosz Szreder szreder (at) mimuw... 22 XI 2011 Uwaga! Ponieważ już sobie powiedzieliśmy np. o wskaźnikach i referencjach, przez które nie chcemy przegrzebywać

Bardziej szczegółowo

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

Wykł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ół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

Konstruktor kopiujacy

Konstruktor kopiujacy Konstruktor kopiujacy Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego. Jest on udostępniony

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

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

Wprowadzenie 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: 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ółowo

Programowanie w języku C++

Programowanie w języku C++ Programowanie w języku C++ Część siódma Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi

Bardziej szczegółowo

ALGORYTMY I STRUKTURY DANYCH

ALGORYTMY I STRUKTURY DANYCH Akademia Rolnicza im. Augusta Cieszkowskiego w Poznaniu - Instytut Inżynierii Rolniczej - ALGORYTMY I STRUKTURY DANYCH Prowadzący: dr inż. Radosław J. Kozłowski email: rjk@au.poznan.pl www: http://www.au.poznan.pl/~rjk

Bardziej szczegółowo

Programowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.

Programowanie 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ółowo

Szablony funkcji i szablony klas

Szablony funkcji i szablony klas Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

Programowanie obiektowe i C++ dla matematyków

Programowanie obiektowe i C++ dla matematyków Programowanie obiektowe i C++ dla matematyków Bartosz Szreder szreder (at) mimuw... 8 XI 2 1 Sposoby przekazywania argumentów Powiedzmy, że chcemy napisać funkcję, która zamieni miejscami wartość dwóch

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

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np Klasy Klasa jest nowym typem danych zdefiniowanym przez użytkownika Wartości takiego typu nazywamy obiektami Najprostsza klasa jest po prostu strukturą, np struct Zespolona { Klasy jako struktury z operacjami

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

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

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

Programowanie obiektowe język C++

Programowanie obiektowe język C++ Programowanie obiektowe język C++ Dr inż. Sławomir Samolej D108A, tel: 865 1486, email: ssamolej@prz-rzeszow.pl WWW: ssamolej.prz-rzeszow.pl Podziękowanie: Chcę podziękować dr inż.. Grzegorzowi Hałdasiowi

Bardziej szczegółowo

Paradygmaty programowania

Paradygmaty programowania Paradygmaty programowania Programowanie generyczne w C++ Dr inż. Andrzej Grosser Cz estochowa, 2016 2 Spis treści 1. Zadanie 3 5 1.1. Wprowadzenie.................................. 5 1.2. Obiekty funkcyjne................................

Bardziej szczegółowo

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Zajęcia nr 2 Programowanie strukturalne dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Pętla while #include using namespace std; int main ()

Bardziej szczegółowo

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 obiektowe

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

Bardziej szczegółowo

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 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ół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

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

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji

Bardziej szczegółowo

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

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to

Bardziej szczegółowo

Programowanie obiektowe Wykład 1. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20

Programowanie obiektowe Wykład 1. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 O mnie prowadzący wykład: Dariusz Wardowski pokój: A334 dyżur: środa, godz. 10.00 12.00 e-mail: wardd@math.uni.lodz.pl

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

Programowanie 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ółowo

Rzutowanie i konwersje

Rzutowanie 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ół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

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016 Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa

Bardziej szczegółowo

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r. M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza

Bardziej szczegółowo

Techniki Programowania wskaźniki

Techniki Programowania wskaźniki Techniki Programowania wskaźniki Łukasz Madej Katedra Informatyki Stosowanej i Modelowania Wykłady opracowane we współpracy z Danutą Szeligą, Łukaszem Sztangretem Wskaźniki Dla typu T zapis T* oznacza

Bardziej szczegółowo

Listy powiązane zorientowane obiektowo

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

Bardziej szczegółowo

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

2. 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ółowo

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2 ( $%%) )'20 )*0) 1 / ) Jzyk C++ cz 3 Jarosław Gramacki Instytut Informatyki i Elektroniki # $$%%& ' ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )!" 2 # $$%%& ' ( $%%/,))3 ( %* 2 / 4 ( ( *' *''*,

Bardziej szczegółowo

Zaawansowane programowanie w języku C++ Klasy w C++

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

Bardziej szczegółowo

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

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład I - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Zaliczenie przedmiotu Do zaliczenia przedmiotu niezbędne jest

Bardziej szczegółowo

DYNAMICZNE PRZYDZIELANIE PAMIECI

DYNAMICZNE PRZYDZIELANIE PAMIECI DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Zaawansowane programowanie w C++ (PCP) Wykład 3 - polimorfizm. dr inż. Robert Nowak - p. 1/14 Powtórzenie Powtórzenie: klasy autonomiczne: konstruktor, konstruktor kopiujacy, operator przypisania, destruktor

Bardziej szczegółowo

Informacja o programowaniu w c++ Dr Maciej Bobrowski

Informacja o programowaniu w c++ Dr Maciej Bobrowski Informacja o programowaniu w c++ Dr Maciej Bobrowski mate@mif.pg.gda.pl 27 kwietnia 2016 CZEGO NAM NA POTRZEBA Napisanie programu: Edytor, na przykład: vi, vim, joe, xedit, pico, notatnik (na przykład

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

Szablony klas, zastosowanie szablonów w programach

Szablony 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ółowo

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Instytut Mechaniki i Inżynierii Obliczeniowej  Wydział Mechaniczny Technologiczny Politechnika Śląska Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny Technologiczny Politechnika Śląska Języki programowania z programowaniem obiektowym Laboratorium

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

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

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.: Program przedmiotu Programowanie (język C++) Wykład 1. Język C a C++. Definiowanie prostych klas. Typy referencyjne. Domyślne wartości argumentów. PrzeciąŜanie funkcji. Konstruktory, destruktory. Definiowanie

Bardziej szczegółowo

Programowanie, część I

Programowanie, część I 11 marca 2010 Kontakt Wstęp Informacje organizacyjne Materiał na ćwiczenia Plan wykładu http://www.fuw.edu.pl/~rwys/prog rwys@fuw.edu.pl tel. 22 55 32 263 Materiał na ćwiczenia Informacje organizacyjne

Bardziej szczegółowo

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu. Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 5 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2016/2017 Zadanie o kotach z poprzedniego wykładu # include < iostream > using namespace std ; int main (){ int rozmiar_ rodzinki,

Bardziej szczegółowo

Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać)

Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać) Języki i Paradygmaty Programowania Laboratorium 1 Obiekty i klasy C++ Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać) UWAGA! Umiejętność tworzenia

Bardziej szczegółowo

Technologie obiektowe

Technologie obiektowe WYKŁAD dr inż. Paweł Jarosz Instytut Informatyki Politechnika Krakowska mail: pjarosz@pk.edu.pl LABORATORIUM dr inż. Paweł Jarosz (3 grupy) mgr inż. Piotr Szuster (3 grupy) warunki zaliczenia Obecność

Bardziej szczegółowo

Jak Windows zarządza pamięcią?

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

Bardziej szczegółowo

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

referencje Wykład 2. Programowanie (język C++) Referencje (1) int Num = 50; zdefiniowano zmienną Num (typu int) nadając jej wartość początkową 50.

referencje Wykład 2. Programowanie (język C++) Referencje (1) int Num = 50; zdefiniowano zmienną Num (typu int) nadając jej wartość początkową 50. Programowanie (język C++) referencje Wykład 2. Referencje (1) Referencja (odnośnik) jest zmienną identyfikującą inną zmienną. Wykonanie operacji na referencji ma taki sam skutek, jak wykonanie tejŝe operacji

Bardziej szczegółowo

Język C++ zajęcia nr 2

Język C++ zajęcia nr 2 Język C++ zajęcia nr 2 Inicjalizacja Definiowanie obiektu może być połączone z nadaniem mu wartości początkowej za pomocą inicjalizatora, który umieszczany jest po deklaratorze obiektu. W języku C++ inicjalizator

Bardziej szczegółowo

Wyjątki (exceptions)

Wyjątki (exceptions) Instrukcja laboratoryjna nr 6 Programowanie w języku C 2 (C++ poziom zaawansowany) Wyjątki (exceptions) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp Wyjątki (ang.

Bardziej szczegółowo

Szablon klasy std::vector

Szablon klasy std::vector Szablon klasy std::vector Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat

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

Wprowadzenie do szablonów szablony funkcji

Wprowadzenie do szablonów szablony funkcji Wprowadzenie do szablonów szablony funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do

Bardziej szczegółowo

Zwracanie obiektu. Funkcja może zwracać obiekty: #include"stdafx.h #include <iostream> using namespace std; class samp { inti; public:

Zwracanie obiektu. Funkcja może zwracać obiekty: #includestdafx.h #include <iostream> using namespace std; class samp { inti; public: Zwracanie obiektu Funkcja może zwracać obiekty: #include"stdafx.h #include using namespace std; class samp ; inti; samp(char *title); voidset_i(intii) i = ii; intget_i() return i; ~samp(); samp::samp(char

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

Podstawy programowania obiektowego

Podstawy programowania obiektowego Podstaw programowania obiektowego wkład 5 klas i obiekt namespace ConsoleApplication1 // współrzędne punktu int, ; Jak, korzstając z dotchczasowej wiedz, zdefiniować w programie punkt? = 3; = 2; Może tak?

Bardziej szczegółowo

Zaję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 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ółowo

Wzorce funkcji (szablony)

Wzorce funkcji (szablony) Wzorce funkcji (szablony) Wzorce funkcji (ang. function template) dają możliwość wielokrotnego wykorzystywania tego samego kodu funkcji dla różnych typów danych. Załóżmy, że chcemy zdefiniować funkcję

Bardziej szczegółowo

Język C++ Programowanie obiektowe

Ję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ółowo

Laboratorium 1 - Programowanie proceduralne i obiektowe

Laboratorium 1 - Programowanie proceduralne i obiektowe Laboratorium 1 - Programowanie proceduralne i obiektowe mgr inż. Kajetan Kurus 4 marca 2014 1 Podstawy teoretyczne 1. Programowanie proceduralne (powtórzenie z poprzedniego semestru) (a) Czym się charakteryzuje?

Bardziej szczegółowo

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Java - tablice, konstruktory, dziedziczenie i hermetyzacja Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja

Bardziej szczegółowo

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

Bardziej szczegółowo

Definiowanie własnych klas

Definiowanie własnych klas Programowanie obiektowe Definiowanie własnych klas Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Definiowanie własnych klas Autor:

Bardziej szczegółowo

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class

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

Hermetyzacja oraz pola i metody statyczne

Hermetyzacja oraz pola i metody statyczne Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2010 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

C-struktury wykład. Dorota Pylak

C-struktury wykład. Dorota Pylak C-struktury wykład Dorota Pylak C-struktury W języku C++, jak w każdym języku obiektowym, mamy możliwość definiowania własnych typów danych, wraz z określeniem operacji, jakie na tych danych można wykonywać.

Bardziej szczegółowo

Przeciążenie operatorów

Przeciążenie operatorów Przeciążenie operatorów W C++ można przeciążyć większość operatory tak, żeby wykonywali zadania, charakterystyczne dla danej klasy Po przeciążeniu odpowiednich operatorów można posługiwać się obiektami

Bardziej szczegółowo

Język C++ umożliwia przeciążanie operatora, tzn. zmianę jego znaczenia na potrzeby danej klasy. W tym celu definiujemy funkcję o nazwie:

Język C++ umożliwia przeciążanie operatora, tzn. zmianę jego znaczenia na potrzeby danej klasy. W tym celu definiujemy funkcję o nazwie: Rozdział 10 Przeciążanie operatorów 10.1 Definicje Język C++ umożliwia przeciążanie operatora, tzn. zmianę jego znaczenia na potrzeby danej klasy. W tym celu definiujemy funkcję o nazwie: operator op gdzie

Bardziej szczegółowo

Pola i metody statyczne

Pola i metody statyczne Pola i metody statyczne Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2009 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania

Bardziej szczegółowo