KLASY cz4. Dorota Pylak. destruktory składowe statyczne przeciążanie operatorów. wskaźniki

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

Download "KLASY cz4. Dorota Pylak. destruktory składowe statyczne przeciążanie operatorów. wskaźniki"

Transkrypt

1 KLASY cz4. destruktory składowe statyczne przeciążanie operatorów Dorota Pylak wskaźniki

2 2 Klasy - podsumowanie poznanych wiadomości Deklaracja klasy może zawierać pola, konstruktory oraz metody. W deklaracji klasy znajdują się sekcje prywatne oraz publiczne. Zazwyczaj sekcja prywatna zawiera dane obiektu, a publiczna metody tworzące interfejs. Typowa deklaracja klasy ma postać: class NazwaKlasy{ ; private: public: deklaracje składowych (pól - danych) prototypy metod lub definicje metod

3 3 Klasy - podsumowanie poznanych wiadomości Definicje metod mogą: a) występować w obrębie deklaracji klasy, b) lub deklaracja klasy zawiera jedynie prototypy, a właściwe definicje podaje się poza klasą kwalifikując nazwę metody operatorem zasięgu i nazwą klasy Klasa może być zapisana w osobnym pliku File->New->Class dodajemy do projektu plik w którym zapisywana będzie klasa. W oknie edycyjnym nadajemy mu nazwę taką jak klasa która ma być w nim zapisana np. Wektor. Otrzymujemy 2 pliki : Wektor.h plik nagłówkowy w którym zapisujemy deklaracje klasy tj. pola i nagłówki metod Wektor.cpp plik implementacyjny w którym definiujemy metody klasy Wektor, poprzedzając je nazwą klasy z operatorem zasięgu Wektor:: Zarówno w piku Wektor.cpp jak i pliku zawierającym f-cję main musimy dołączyć naszą klasę poprzez #include Wektor.h

4 Destruktory 4 Destruktor jest funkcją, którą wykonuje się w celu zwolnienia pamięci przydzielonej dodatkowym obiektom lub innych zasobów. Jest on wywoływany automatycznie przez system podczas usuwania obiektu. Destruktora można czasem w ogóle nie definiować. Jeśli go jednak definiujemy, to jego nazwą jest nazwa klasy poprzedzona znakiem tyldy: MojaKlasa: class MojaKlasa { ; MojaKlasa();//to jest konstruktor ~MojaKlasa();//a to - destruktor Destruktor nie posiada argumentów. Jedna klasa może mieć tylko jeden destruktor.

5 Destruktory 5 Najczęstszą funkcją destruktora jest zwolnienie pamięci (zwykle poprzez zniszczenie wszystkich pól używanych przez ten obiekt). Destruktor zachowuje się jak zwykła metoda, tyle tylko, że jest wywoływany automatycznie podczas usuwania obiektu z pamięci. Samo wywołanie destruktora obiektu nie niszczy: wykonuje on to i tylko to, co zapisane jest w jego kodzie. Możemy jawnie wywołać destruktor na rzecz istniejącego obiektu. Niszczenie obiektów lokalnych, utworzonych na stosie zachodzi, gdy sterowanie wychodzi z bloku, w którym były zdefiniowane. Stos jest wtedy zwijany do stanu, w jakim był przy wejściu do danego bloku (funkcji). Usunięte zatem zostaną wszystkie zmienne utworzone na stosie w tym bloku, wśród nich również zmienne obiektowe. Usuwanie obiektów na stosie odbywa się w kolejności odwrotnej do ich kreowania jako pierwsze zostaną zatem zniszczone te, które utworzone były jako ostatnie.

6 Destruktory 6 class Klasa { int a; public: Klasa() {a=0; cout<<"konstruktor bezparam, a="<<a<<endl; Klasa(int aa) {a=aa; cout<<"konstruktor z param, a="<<a<<endl; int geta()const {return a; void seta(int aa) {a=aa; ~Klasa() {cout<<"destruktor a="<<a<<endl; ;

7 Destruktory 7 int main() { Klasa k1; Klasa k2 = Klasa(); k2.seta(1); Klasa k3(2); Klasa k4 = Klasa(3); konstruktor bezparam, a=0 konstruktor bezparam, a=0 konstruktor z param, a=2 konstruktor z param, a=3 destruktor a=3 destruktor a=2 destruktor a=1 destruktor a=0

8 Pola statyczne 8 Szczególny rodzaj pól to pola statyczne. Deklaruje się je ze specyfikatorem static. Oznacza on, że będzie utworzona tylko jedna zmienna o tej nazwie i że nazwa ta będzie leżeć w zasięgu klasy. Zmienna ta jest niezależna od obiektów (zmiennych) klasy, można z niej korzystać nawet, jeśli żaden obiekt tej klasy nie został utworzony. Sama deklaracja pola statycznego w klasie nie tworzy tej zmiennej (bo jest tylko deklaracją, a nie definicją). Zmienne odpowiadające polom niestatycznym (instancyjnym) są tworzone podczas tworzenia obiektów klasy. Zmienne statyczne trzeba utworzyć, czyli zdefiniować na zewnątrz klasy. Ponieważ jej nazwa należy do zasięgu klasy, poza klasą trzeba się do tej zmiennej odnieść poprzez jej nazwę kwalifikowaną, za pomocą operatora zasięgu klasy, ' ::'. W definicji poza klasą nie powtarzamy już specyfikatora static.

9 9 Pola statyczne Definiując zmienną statyczną klasy można (choć nie trzeba) ją zainicjować. Na przykład: class D { ; static int k1; // deklarujemy statyczne składowe klasy static int k2; int D::k1; // definicja; domyślne inicjowanie zerem int D::k2 = 7; // definicja z inicjowaniem

10 Pola statyczne 10 Wyjątkowo, składowe statyczne mogą być definiowane i inicjalizowane bezpośrednio w punkcie deklaracji, wewnątrz klasy, ale tylko jeśli są stałymi(const) i typu całkowitego class D { ; static const int k1, k2 = 2; //... const int D::k1 = 1; Tu k2 jest tworzone i inicjalizowane wewnątrz definicji klasy D, natomiast k1 tylko deklarowane, dlatego definicja z ostatniej linii jest konieczna, i to wraz z inicjalizacją, bo stałe muszą być inicjalizowane w momencie ich definiowania. Zmienne statyczne są tworzone (i inicjowane) po załadowaniu programu do pamięci, ale przed rozpoczęciem wykonywania funkcji main (jak zmienne globalne).

11 Pola statyczne 11 Do zmiennych statycznych klasy można się odwoływać w programie: poprzez ich pełną nazwę kwalifikowaną (D::k1) lub tak jak do normalnej składowej, czyli poprzez nazwę dowolnego obiektu tej klasy i operator wyboru składowej (kropka lub strzałka, w zależności od tego, czy nazwa była nazwą obiektu czy wskaźnika do niego). Oczywiście, ponieważ istnieje tylko jeden egzemplarz zmiennej statycznej, nie ma wtedy znaczenia, którego obiektu użyjemy. PODSUMOWANIE Składowe (pola i metody) niestatyczne (instancyjne) zawsze wiążą się z istnieniem obiektu danej klasy. Składowe statyczne (klasowe) tzn. ze specyfikatorem static nie dotyczą obiektów, ale całej klasy są wspólne dla wszystkich obiektów tej klasy mogą być używane nawet wtedy, gdy nie istnieje żaden obiekt klasy

12 12 Pola statyczne przykład licznik obiektów class Wektor { private: double x, y, z; //prywatne pola klasy static int ile; //licznik obiektów (instancji) klasy Wektor public: //sekcja publiczna Wektor();//bezparametrowy, zeruje pola Wektor(double xx, double yy, double zz); ~Wektor();//destruktor static int ilewektorow(); //metoda która istnieje dla klasy // a nie obiektu ; //pozostałe metody jak poprzednio //... int Wektor::ile =0; // definicja zmiennej statycznej z inicjowaniem

13 Pola statyczne przykład licznik obiektów 13 int Wektor:: ilewektorow() { return ile; Wektor:: Wektor(){ x = 0; y = 0; z = 0;//zerujemy pola klasy ile++; cout<<"***konstruktor bezparametrowy***, obiekt" << ilewektorow()<<endl; Wektor:: Wektor(double xx, double yy, double zz){ x = xx; y = yy; z = zz; ile++; cout<<"***konstruktor zwykly z bezparametrami***, obiekt" <<ilewektorow()<<endl; Wektor:: ~Wektor(){ cout<<"***destruktor ***, obiekt"<<ilewektorow()<<endl; ile--;

14 14 Pola statyczne przykład licznik obiektów int main(){ cout<<"liczba obiektow: "<< Wektor::ileWektorow() <<endl; //liczba obiektow: 0 //deklarujemy obiekt (instancje) klasy Wektor Wektor w1; //***konstruktor bezparametrowy***, obiekt 1 w1.wyswietl();//[ 0.0, 0.0, 0.0 ] //kolejny obiekt klasy Wektor Wektor w2(2,4,5); //***konstruktor zwykly z parametrami***, obiekt 2 w2.wyswietl(); //[ 2.0, 4.0, 5.0 ] Wektor w3 = w1.suma(w2); //***konstruktor zwykly z parametrami***, obiekt 3 w3.wyswietl();//[ 2.0, 4.0, 5.0 ] return 0; ***destruktor ***, obiekt 3 ***destruktor ***, obiekt 2 ***destruktor ***, obiekt 1

15 15 Wskaźnik this W C++ this jest nazwą ustalonego wskaźnika do obiektu na rzecz którego wykonywana jest metoda. Nazwą tego obiektu jest zatem *this. (* -operator dereferencji) Słowo kluczowe this może być użyte wyłącznie w metodach (niestatycznych funkcjach składowych), konstruktorach i destruktorze klasy. Do składowej sklad obiektu metoda (konstruktor, destruktor) może odwoływać się poprzez pełną nazwę tego obiektu, czyli używając notacji this->sklad lub (*this).sklad. Taka forma jest konieczna, jeśli wewnątrz funkcji zadeklarowaliśmy zmienną o tej samej nazwie, co któraś ze składowych klasy. Nazwa niekwalifikowana odnosi się wtedy do tej zmiennej lokalnej, a nie do składowej (zmiennymi lokalnymi są też zmienne skojarzone z parametrami funkcji).

16 Wskaźnik this 16 class MojaKlasa { double x; //składowa domyślnie prywatna public: void set(double); ; void MojaKlasa::set(double x) { this->x = x; //lub (*this).x = x;

17 17 Przeciążenia operatorów za pomocą metod klasy Operatory dwuargumentowe Aby przeciążyć w klasie Klasa definiujemy metodę o prototypie lub Typ operator@(typarg); Typ operator@(typarg&); Przykład 1. W klasie Wektor zadeklarować przeciążony operator == porównujący współrzędne wektora dla którego wykonujemy porównanie (lewa strona operatora) ze współrzędnymi wektora przekazanego jako parametr: bool operator==(const Wektor &w) const; Implementacja: bool Wektor ::operator==(const Wektor &w) const { return x==w.x && y==w.y && z==w.z;

18 18 Przeciążenia operatorów za pomocą metod klasy- przykład Przykład 2. Zadeklarować przeciążony operator + : Wektor operator+(const Wektor &w) const; która zwraca w wyniku wektor będący sumą wektora dla którego jest wykonywana metoda oraz wektora przekazanego przez parametr: Wektor Wektor ::operator+(const Wektor &w) const{ return Wektor(x+w.x, y+w.y, z+w.z); Przykład 3. Zdefiniuj przeciążenie operatora zwracającego wektor przeciwny do wektora na rzecz którego wykonywany jest operator: Wektor operator-()const; //deklaracja Wektor Wektor::operator-() const{ //definicja return Wektor(-x,-y,-z);

19 19 Przeciążenia operatorów za pomocą metod klasy- przykład Wówczas w funkcji main() np.: int main(){ Wektor a(1,1,1); Wektor b(2,2,2); if(a==b)//przeciążony operator== zamiast a.rowne(b) cout<<"a==b"<<endl; else cout<<"a!=b"<<endl; Wektor s1 = a.suma(b); s1.wyswietl(); //suma z wykorzystaniem operatora przeciążonego Wektor s = a+b; s.wyswietl(); //[3.0, 3.0, 3.0] Wektor pd = -b;

20 20 #include <string> using namespace std; class Kot { private: string imie; int wiek; double waga; public: Klasa Kot plik nagłówkowy Kot.h Kot();//konstruktor pusty tworzący obiekt kot //o imieniu wadze 0kg i wieku 0 lat Kot(const Kot &k); //konstruktor kopiujacy Kot(string i, int w, double wa); //konstruktor z //parametrami tworzący kota o zadanym imieniu, wadze i // wieku

21 ; Klasa Kot plik nagłówkowy Kot.h //fcja ustawia pola na dane parametrami void Ustaw( string i, int w, double wa); //fcje zwracające wartości poszczególnych pól string zwrocimie()const; int zwrocwiek()const; double zwrocwage()const; //kot miauczy void dajglos() const; //f-cja logiczna sprawdzająca czy kot jest starszy //od kota danego parametrem bool starszyod(const Kot &k) const; //przeciążony operator > true jeśli kot jest starszy //od kota danego parametrem bool operator >(const Kot & k)const; 21

22 22 Klasa Kot plik implementacyjny Kot.cpp #include <iostream> #include "Kot.h" using namespace std; Kot::Kot() { imie = ""; wiek = 0; waga = 0; Kot::Kot(const Kot &k) { imie = k.imie; wiek = k.wiek; waga = k.waga; Kot::Kot(string i, int w, double wa) { imie = i; wiek = w; waga = wa; void Kot::Ustaw(string i, int w, double wa) { imie = i; wiek = w; waga = wa;

23 23 Klasa Kot plik implementacyjny Kot.cpp string Kot::zwrocImie()const { return imie; int Kot::zwrocWiek()const { return wiek; double Kot::zwrocWage()const { return waga; void Kot::dajGlos() const { cout << "Miau";

24 Klasa Kot plik implementacyjny Kot.cpp 24 bool Kot::starszyOd(const Kot &k) const { return wiek > k.wiek; bool Kot:: operator>(const Kot & k)const { return wiek > k.wiek;

25 25 #include <iostream> #include "Kot.h" using namespace std; Klasa Kot main() int main() { Kot f; f.ustaw("filus", 2, 2); Kot k("mruczek", 5, 4); if (f.starszyod(k))//lub if (f > k) cout << "starszy jest " << f.zwrocimie()<<endl; else cout << "starszy jest " << k.zwrocimie()<<endl; Kot t = f;//przypisanie obiektów cout << t.zwrocimie(); starszy jest Mruczek Filus

26 26 Wskaźniki do zmiennych Wartością zmiennej wskaźnikowej (ang. pointers) jest adres innej zmiennej. Zazwyczaj, określając typ zmiennej wskaźnikowej musimy określić też typ tych zmiennych, których adresy dana zmienna wskaźnikowa może przechowywać (związane jest między innymi z tym, że musi być znana długość (w bajtach) tego typu zmiennych). Deklaracja wskaźnika ma postać lub lub Typ *nazwa; Typ* nazwa; Typ * nazwa; Zmienna o nazwie nazwa będzie zmienną wskaźnikową przystosowaną do przechowywania adresów innych zmiennych, ale koniecznie typu Typ.

27 27 Przykład 1: Wskaźniki do zmiennych /*Deklarujemy i definiujemy (przydzielamy pamięć na) trzy zmienne typu double*/ double x, y = 1.5, u; /*Wprowadzamy zmienną wskaźnikową przystosowaną do przechowywania adresów zmiennych typu double:*/ double *px; /*px jest wskaźnikiem do zmiennej typu double. Natomiast zmienną, której adres jest wartością zmiennej wskaźnikowej, nazywamy zmienną wskazywaną przez ten wskaźnik. Wartość utworzonego wskaźnika px jest nieokreślona, to znaczy nie został tam wpisany adres żadnej istniejącej zmiennej typu double*/

28 28 Wskaźniki do zmiennych /*Jak przypisać zmiennym wskaźnikowym wartości(wpisać do nich adresy istniejących zmiennych typu double): */ px = &x; /*Do px wpisaliśmy adres zmiennej x typu double(zmienna x już istnieje, ma więc ma adres, mimo że jej wartość jest wciąż nieokreślona. Znak ' &' pełni rolę operatora wyłuskania adresu i działa na wyrażenie po swojej prawej stronie (musi to być wyrażenie identyfikujące daną, która ma określony, dostępny w programie adres w pamięci). Jeśli var jest identyfikatorem zmiennej, to wartością wyrażenia &var jest adres tej zmiennej.*/ double* py = &y /*Wskaźnik py deklarujemy i od razu inicjujemy adresem istniejącej y (wartością zmiennej wskazywanej przez py, czyli zmiennej y, jest 1.5)*/

29 29 double *pz, *pu = &u, v; Wskaźniki do zmiennych /*Deklarując w jednej instrukcji dwa lub więcej wskaźników, należy identyfikator każdego z tych wskaźników poprzedzić gwiazdką. Zmienna v jest typu double, a nie wskaźnikowego. Jak poprzez wskaźnik do zmiennej można dostać się do samej zmiennej? Robi się to poprzez operator dereferencji, zwany też operatorem wyłuskania wartości, oznaczany przez gwiazdkę. Jeśli pvar jest identyfikatorem wskaźnika, to wyrażenie *pvar jest nazwą zmiennej wskazywanej przez pvar. Zatem, ponieważ *py jest nazwą zmiennej wskazywanej przez py, więc jest w tej chwili inną nazwą zmiennej y */ cout << "*py = " << *py << " y = " << y << endl; /*to drukując wartość *py drukujemy 1.5 aktualną wartość y *py = 1.5 y = 1.5 */

30 Wskaźniki do zmiennych /*Analogicznie, przypiszmy zmiennej x wartość 0.5. Drukując teraz wartość *px drukujemy wartość zmiennej wskazywanej przez px, czyli w tej chwili zmiennej x, czyli 0.5 */ x = 0.5; cout << "*px = " << *px << " x = " << x << endl; //*px = 0.5 x = 0.5 /* Zauważmy, że *px, będąc nazwą zmiennej typu double wskazywanej przez px, może być użyte po lewej stronie przypisania. */ *px = 5*x; /*Ponieważ w tej chwili px wskazuje na x, jest to równoważne przypisaniu x = 5*x zatem drukując wartości x i *px otrzymujemy to samo */ cout << "*px = " << *px << " x = " << x << endl; //*px = 2.5 x =

31 Wskaźniki do zmiennych /*Wskaźnikowi pz przypiszmy wartość wskaźnika px, czyli adres zmiennej x */ pz = px; //Zatem w tej chwili x, *px i *pz oznaczają to samo cout << *pz = " << *pz << endl; //*pz = 2.5 cout << "py = " << py << endl; //Zmienna ta jest zmienną wskaźnikową, więc jej wartością jest adres zmiennej y. Zatem wstawienie py do strumienia wyjściowego spowoduje wypisanie adresu zmiennej y np. py = 0xbffffa30 A jaki adres ma sama zmienna py? Żeby to sprawdzić, możemy wydrukować wartość wyrażenia &py: wartością tą jest właśnie adres zmiennej py (a nie adres będący wartością py): */ cout << "&py = " << &py << endl; //np. &py = 0xbffffa18 31

32 Wskaźniki do zmiennych Przykład 2.Deklarujemy dwie zmienne x i y typu double i dwa wskaźniki pmin i pmax typu double*. Następnie wczytujemy dwie liczby do zmiennych x i y, po czym ustawiamy wskaźniki pmin i pmax w ten sposób, aby pmin wskazywało ma mniejszą z liczb x i y, a pmax na większą z nich. Używając następnie operatora dereferencji drukujemy najpierw mniejszą, potem większą z liczb. #include <iostream> using namespace std; int main() { double x, y, *pmin, *pmax; cout << "Podaj dwie liczby: "; cin >> x >> y; if (x < y) { pmin = &x; pmax = &y; else { pmin = &y; pmax = &x; cout << "Min = " << *pmin << endl; cout << "Max = " << *pmax << endl; 32

33 Przykład klasy- Ulamek Napisz w pliku Ulamek.h deklarację klasy Ulamek, w której przechowujemy następujące informacje o ułamku: licznik i mianownik(>0) oraz metody pomocnicza metoda prywatna obliczająca NWD dwóch liczb całkowitych konstruktor bezparametrowy (ustawia ułamek 0/1) konstruktor ustalający wartość ułamka na podstawie parametru całkowitego konstruktor ustalający wartość ułamka na podstawie przekazanych przez parametry wartości licznika i mianownika metoda Ustaw ustalająca wartość ułamka na podstawie przekazanych przez parametry wartości licznika i mianownika metoda Skroc skracająca ułamek metoda tostring zwracająca reprezentację tekstową ułamka w formie l/m metody PodajMianownik i PodajLicznik zwracające wartości odpowiednich pól klasy metodę Suma zwracającą w wyniku ułamek będący sumą ułamka na rzecz którego wykonywana jest metoda i ułamka przekazanego przez parametr metodę Iloczyn zwracającą w wyniku ułamek będący iloczynem ułamka na rzecz którego wykonywana jest metoda i ułamka przekazanego przez parametr oraz operatory dwuargumentowe + (suma),* (iloczyn) i == (równe). Napisz implementację powyższych metod w pliku Ulamek.cpp. Zadbaj, aby zawsze mianownik był >0. 33

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

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie

Bardziej szczegółowo

Do czego służą klasy?

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

KLASY cz.1. Dorota Pylak

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

Do czego służą klasy?

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

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

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie

Bardziej szczegółowo

Wykład 8: klasy cz. 4

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

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

Programowanie Obiektowo Zorientowane w języku C++ Klasy, pola, metody

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

Wstęp do Programowania 2

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

Bardziej szczegółowo

Wykład 5: Klasy cz. 3

Wykład 5: Klasy cz. 3 Programowanie obiektowe Wykład 5: cz. 3 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD - podstawy Konstruktor i destruktor (część I) 2 Konstruktor i destruktor KONSTRUKTOR Dla przykładu

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

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

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 Wykład 3. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21

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

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

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

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW

ZASADY PROGRAMOWANIA KOMPUTERÓW POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.

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

Algorytmy i język C++

Algorytmy i język C++ Wykład 6 Wskaźniki Wskaźnik nie przechowuje wartości zmiennej ale, podobnie jak tablica, wskazuje miejsce w pamięci, w którym znajduje się zmienna danego typu. W poniższym przykładzie symbol * pomiędzy

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 10 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Przesyłanie argumentów - cd Przesyłanie argumentów do funkcji - tablice wielowymiarowe Przekazywanie tablic wielowymiarowych

Bardziej szczegółowo

1. 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? 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ół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

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

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną) 1 Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną) Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion,

Bardziej szczegółowo

Pola i metody statyczne. Klasy zawierające pola i metody statyczne

Pola i metody statyczne. Klasy zawierające pola i metody statyczne Instrukcja laboratoryjna nr 1 Programowanie w języku C 2 (C++ poziom zaawansowany) Pola i metody statyczne. Klasy zawierające pola i metody statyczne dr inż. Kaczmarek Tomasz mgr inż. Lasota Maciej dr

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

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

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static), Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których

Bardziej szczegółowo

Zmienne, stałe i operatory

Zmienne, stałe i operatory Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe

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

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

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

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

Zadania z podstaw programowania obiektowego

Zadania z podstaw programowania obiektowego Zadania z podstaw programowania obiektowego 1. Napisać klasę Lista, której zadaniem będzie przechowywanie listy liczb całkowitych. Klasa ta ma mieć następujące pola prywatne: int* liczby; tablica, w której

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

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

Składnia C++ Programowanie Obiektowe Mateusz Cicheński Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Konstruktory i destruktory

Bardziej szczegółowo

Programowanie Obiektowe i C++

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

Bardziej szczegółowo

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i

Bardziej szczegółowo

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Podstawy algorytmiki i programowania - wykład 4 C-struktury 1 Podstawy algorytmiki i programowania - wykład 4 C-struktury Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Struktury Struktura polami struct struct struct struct

Struktury Struktura polami struct struct struct struct Struktury Struktura jest zbiorem zmiennych występujących pod wspólna nazwą. Zmienne wchodzące w skład struktury nazywane są polami lub elementami, a czasem członkami struktury. Struktury używamy, jeśli

Bardziej szczegółowo

2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy

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

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

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

Ję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.

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

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

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

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

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

C++ - 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ółowo

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

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

Bardziej szczegółowo

Przeciążanie operatorów

Przeciążanie operatorów Instrukcja laboratoryjna nr 4 Programowanie w języku C 2 (C++ poziom zaawansowany) Przeciążanie operatorów dr inż. Wilk-Jakubowski Jacek mgr inż. Lasota Maciej dr inż. Kaczmarek Tomasz Wprowadzenie Oprócz

Bardziej szczegółowo

Materiały do zajęć VII

Materiały do zajęć VII Spis treści I. Klasy Materiały do zajęć VII II. III. Konstruktor Właściwości i indeksatory Klasy Programowanie obiektowe wiadomości wstępne Paradygmat programowania obiektowego Abstrakcja Hermetyzacja

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki Wykład 2 - podstawy języka C++ Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu. Zmienne i ich nazwy, podstawowe typy: całkowite, rzeczywiste, znakowe i napisowe. Instrukcje:

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Wykład 2 28 lutego 2019 Plan wykładu 1 2 3 4 5 Plan wykładu 1 2 3 4 5 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie; standardy ISO i ECMA; podobny składniowo do C++; Język C Krótka

Bardziej szczegółowo

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU Konstrukcja obiektów Niszczenie obiektów i zwalnianie zasobów

Bardziej szczegółowo

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6 JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona

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

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów Operatory są elementami języka C++. Istnieje zasada, że z elementami języka, takimi jak np. słowa kluczowe, nie można dokonywać żadnych zmian, przeciążeń, itp. PRZECIĄŻANIE OPERATORÓW Ale dla operatorów

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

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

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

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy WSKAŹNIKI KLASOWE

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy WSKAŹNIKI KLASOWE WSKAŹNIKI KLASOWE Wskaźniki klasowe Każdy obiekt zajmuje fragment pamięci i wszystkie obiekty tego samego typu zajmują fragmenty pamięci tej samej długości początek miejsca w pamięci zajmowanego przez

Bardziej szczegółowo

Co to jest klasa? Z programistycznego punktu widzenia klasa stanowi typ danych, który odwzorowuje wspólne cechy jakiegoś obiektu.

Co to jest klasa? Z programistycznego punktu widzenia klasa stanowi typ danych, który odwzorowuje wspólne cechy jakiegoś obiektu. .NET Klasy, obiekty Klasa i obiekt Każdy obiektowy język programowania daje programiście możliwość tworzenia nowych typów danych. Nowy typ danych definiuje się poprzez zdefiniowanie klasy. Co to jest klasa?

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 8 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Podprogramy Czasami wygodnie jest wyodrębnić jakiś fragment programu jako pewną odrębną całość umożliwiają to podprogramy.

Bardziej szczegółowo

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec PROE wykład 2 operacje na wskaźnikach dr inż. Jacek Naruniec Zmienne automatyczne i dynamiczne Zmienne automatyczne: dotyczą kontekstu, po jego opuszczeniu są usuwane, łatwiejsze w zarządzaniu od zmiennych

Bardziej szczegółowo

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium: Zakres laboratorium: definiowanie struktur terminologia obiektowa definiowanie klas funkcje składowe klas programy złożone z wielu plików zadania laboratoryjne Laboratorium nr 12 Temat: Struktury, klasy.

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

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

Dziedziczenie jednobazowe, poliformizm

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

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

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16 M. Trzebiński C++ 1/16 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IFJ PAN 6lipca2015 Uruchomienie maszyny w CC1 M. Trzebiński C++ 2/16

Bardziej szczegółowo

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami: Wskaźniki są nieodłącznym elementem języka C. W języku C++ także są przydatne i korzystanie z nich ułatwia pracę, jednak w odróżnieniu do C wiele rzeczy da się osiągnąć bez ich użycia. Poprawne operowanie

Bardziej szczegółowo

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5 JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 5 1 SPECYFIKATOR const Specyfikator (przydomek) const: Umieszczenie przed nazwą zmiennej specyfikatora const w jej definicji informuje kompilator,

Bardziej szczegółowo

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

Składnia C++ Programowanie Obiektowe Mateusz Cicheński Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Przeciążanie operatorów Słowo

Bardziej szczegółowo

Programowanie Obiektowo Zorientowane w języku c++ Konstruktory

Programowanie Obiektowo Zorientowane w języku c++ Konstruktory Programowanie Obiektowo Zorientowane w języku c++ Konstruktory Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra

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

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

Programowanie komputerowe. Zajęcia 7

Programowanie komputerowe. Zajęcia 7 Programowanie komputerowe Zajęcia 7 Klasy Klasy to typy danych, które pozwalają na zgromadzenie w jednej zmiennej (obiekcie) zarówno danych jak i operacji związanych z tymi danymi. Obiekt danej klasy może

Bardziej szczegółowo

Lab 9 Podstawy Programowania

Lab 9 Podstawy Programowania Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany

Bardziej szczegółowo

Wstęp do programowania obiektowego. Wykład 2

Wstęp do programowania obiektowego. Wykład 2 Wstęp do programowania obiektowego Wykład 2 1 CECHY I KONCEPCJA PROGRAMOWANIA OBIEKTOWEGO 2 Cechy programowania obiektowego Dla wielu problemów podejście obiektowe jest zgodne z rzeczywistością (łatwe

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

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia Podstawy informatyki Elektrotechnika I rok Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia Katedra Energoelektroniki i Automatyki Systemów Przetwarzania Energii AGH Kraków 2017 Tematyka

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 3 i 4 - przypomnienie wiadomości o OOP na przykładzie Javy mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 8 marca 2017 1 / 20 mgr inż. Krzysztof Szwarc

Bardziej szczegółowo

Dziedziczenie. Ogólna postać dziedziczenia klas:

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