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

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

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

Transkrypt

1 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 Katedra Informatyki Stosowanej i Modelowania Grudzień 2015 / Lipiec 2018 Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

2 Spis treści 1 Programowanie obiektowe, a język C++ 2 Pojęcie klasy i składniki klas 3 Pola klas 4 Metody klas 5 Konstruktory i destruktory 6 Dostęp do składników klas 7 Definiowanie obiektów klas 8 Przykładowy program obiektowo zorientowany Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

3 Spis treści 1 Programowanie obiektowe, a język C++ 2 Pojęcie klasy i składniki klas 3 Pola klas 4 Metody klas 5 Konstruktory i destruktory 6 Dostęp do składników klas 7 Definiowanie obiektów klas 8 Przykładowy program obiektowo zorientowany Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

4 Standarty języka C++ Podstawową cechą programowania obiektowo zorientowanego jest możliwość definiowania własnych typów, które czerpią zasoby z typów wcześniej zdefiniowanych. W języku C++ są to tzw. klasy, które charakteryzują się obecnością zmiennych i funkcji, które te zmienne obsługują. Język C++ jest językiem zarówno proceduralnym jak i obiektowo zorientowanym i podlegał w przeszłości modyfikacjom - możemy mówić o: pierwszej wersji języka - C++98, standarcie C++03, który stanowił pierwszą jego aktualizację, standarcie C++11 obecnie chętnie stosowanym ze względu na wprowadzone udogodnienia dla programistów, standarcie C++14 będący podstawą szeregu kompilatorów, standarcie C++17 będący podstawą nielicznych jeszcze kompilatorów, C++20, który jest na razie nieformalnym następcą C++17 Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

5 Spis treści 1 Programowanie obiektowe, a język C++ 2 Pojęcie klasy i składniki klas 3 Pola klas 4 Metody klas 5 Konstruktory i destruktory 6 Dostęp do składników klas 7 Definiowanie obiektów klas 8 Przykładowy program obiektowo zorientowany Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

6 Pojęcie klasy Na początek zapoznamy się ze standartem C++03, który jest pewnym kompromisem pomiędzy złożonością języka, a jego funkcjonalnością i przetrwał bez zmian przez niemal 10 lat. Definicja nowego typu rozpoczyna się słowem kluczowym class po którym następuje nazwa klasy i blok definicji klasy {}; class punkt{ double x, y; double fun(){return x*y;} }; Kolejność składników jest w zasadzie dowolna. Klasy zawierają dwa rodzaje składników: pola - zmienne deklarowane wewnątrz klasy, metody - funkcje deklarowane wewnątrz klasy. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

7 Spis treści 1 Programowanie obiektowe, a język C++ 2 Pojęcie klasy i składniki klas 3 Pola klas 4 Metody klas 5 Konstruktory i destruktory 6 Dostęp do składników klas 7 Definiowanie obiektów klas 8 Przykładowy program obiektowo zorientowany Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

8 Pola zwykłe Pola zwykłe są składnikami klas o wartościach różnych dla poszczególnych obiektów klasy class punkt{ double x, y; int nrpunktu; int *wsk; float &ref; }; Składniki takie moga być definiowane przez: wartości, wskaźniki lub referencje W ostatnim przypadku musi nastapic inicjalizacja na liscie inicjalizacyjnej konstruktora Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

9 Pola statyczne Innym rodzajem pól klasy są pola statyczne są składnikami klas o tych samych wartosciach dla poszczególnych obiektów klasy class punkt{ static int maxliczbapunktow; static int nrkolpunktu; static int lpunktow; }; int punkt::maxliczbapunktow = 50; int punkt::nrkolpunktu = 0; int punkt::lpunktow; Składniki takie są inicjalizowane w obszarze globalnym nawet jeśli są prywatne Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

10 Pola typu const i volatile Niektóre klasy mogą być wyposażone w pola stałe lub pola typu volatile class punkt{ const double constliczbapi; volatile double volatemp; }; Specyfikacja const to obietnica niezmienności pola obiektu Słowo kluczowe volatile to konieczność każdorazowego pobierania obiektów z pamięci, nawet jeśli znajduje się jeszcze w pamięci podręcznej procesora. Metody (funkcje składowe) pracujące dla obiektów typu const i volatile muszą zadośćuczynić tym wymaganiom. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

11 Spis treści 1 Programowanie obiektowe, a język C++ 2 Pojęcie klasy i składniki klas 3 Pola klas 4 Metody klas 5 Konstruktory i destruktory 6 Dostęp do składników klas 7 Definiowanie obiektów klas 8 Przykładowy program obiektowo zorientowany Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

12 Metody Metody to funkcje deklarowane w ciele klasy, które mają za zadanie pracę na rzecz obiektów danej klasy class punkt{ double getx(); int getnrp(); }; Metody mogą być nie tylko deklarowane w ciele klasy, ale również tam definiowane double getx(){return x;} int getnrp(){return nrpunktu;} W takim przypadku są one typu inline, a więc nie podlegają ogólnej konwencji wywołań funkcji, a ich kod jest wplatany w kod programu Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

13 Metody zwykłe Innym sposobem jest definiowanie metod poza klasą - metody muszą mieć nazwy kwalifikowane nazwami klas, z których pochodzą double punkt::odl(punkt p){ double dx = p.x - x; double dy = p.y - y; return sqrt(dx*dx + dy*dy); } Metody zwykłe pracują zawsze na rzecz obiektów int main(){ punkt p1, p2(3., 4.); cout << "Odleglosc p1 i p2 " << p1.odl(p2) << endl; return 0; } Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

14 Metody zwykłe W zamieszczonym przykładzie metoda odl pracowała na rzecz obiektu p1 typu punkt mając za argument obiekt p2 również typu punkt Gwoli ścisłości, to metodę tę należałoby zdefiniować następująco: double punkt::odl(punkt p){ double dx = p.x - this->x; double dy = p.y - this->y; return sqrt(dx*dx + dy*dy); } W powyższym kodzie this jest wskaźnikiem do obiektu, na rzecz którego metoda pracuje - jest to pierwszy, niejawny parametr metody. W ciele metody sekwencję this-> można opuścić (np. zamiast this->x napisać x ), a kompilator sam ją uzupełni. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

15 Metody typu const i volatile Metody pracujące dla obiektów typu const i volatile muszą zadośćuczynić wymaganiom tych obiektów i są definiowane jako: double metord(){return x;} double metconst() const {return y;} double metvola() volatile {return z;} Metoda metconst() może pracować zarówno na rzecz obiektu stałego jak i takiego, który stałym nie jest - metoda zwykła tylko na rzecz tego drugiego W analogiczny sposób zachowuje się metoda metvola() punkt p; const punkt cp; volatile punkt vp; double d1 = p.metconst() + cp.metconst(); double d2 = p.metvola() + vp.metvola(); double d3 = p.metord() + cp.metord() + vp.metord(); Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

16 Metody statyczne Metody klasy mogą być zadeklarowane jako statyczne - można je wywołać nawet wtedy, gdy nie istnieje jeszcze żaden obiekt klasy. class punkt{ static int lpunktow; static int ilepunktow(){return lpunktow;} }; int punkt::lpunktow = 0; int main(){ int ilp = punkt::ilepunktow(); punkt p1; int ilpteraz = p1.ilepunktow() return 0; } Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

17 Metody statyczne Do nazwy metody statycznej z zewnątrz klasy odwołujemy się poprzez: nazwę klasy za pomocą operatora zasięgu :: punkt::ilepunktow(); nazwę obiektu za pomocą operatora wyboru składowej. - wtedy nie ma znaczenia, jakiego obiektu tej klasy użyjemy. punkt p1; int ilpteraz = p1.ilepunktow() Ponieważ funkcja statyczna nie jest wywoływana na rzecz obiektu, ale na rzecz klasy nie można w niej odwoływać się do wskaźnika this ani do żadnych składowych niestatycznych. Funkcje statyczne klasy należą jednak do zakresu klasy i mają zatem bezpośredni dostęp do nazw z zakresu tej klasy (również prywatnych). Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

18 Metody operatorowe Definicje tych metod, nie różnią się niczym szczególnym od definicji metod zwykłych poza szczególną nazwą. Składa się ona ze słowa kluczowego operator i nastepującego po nim symbolu operacji. class punkt{ double x, y; public: punkt operator+(punkt); }; punkt punkt::operator+(punkt p){ punkt rezultat; rezultat.x = this->x + p.x; rezultat.y = this->y + p.y; return rezultat; } Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

19 Metody operatorowe Pozwala to na szczególny sposób używania tych metod (a także operatorowych funkcji globalnych), gdzie argumenty nie są przesyłane w nawiasach lecz stoją po lewej i/lub prawej stronie symbolu operacji: int main(){ punkt p1(1., -1.); punkt p2(2., 3.); punkt p = p1 + p2; return 0; } Przedostatnia linika kodu pokazuje, że ten typ wywołań przypomina wywołania znane dla typów wbudowanych. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

20 Spis treści 1 Programowanie obiektowe, a język C++ 2 Pojęcie klasy i składniki klas 3 Pola klas 4 Metody klas 5 Konstruktory i destruktory 6 Dostęp do składników klas 7 Definiowanie obiektów klas 8 Przykładowy program obiektowo zorientowany Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

21 Konstruktory W klasie są deklarowane również szczególne metody zwane konstruktorami, które mają dwie charakterystyczne cechy: nazwę identyczną z nazwą klasy, brak specyfikacji wartości zwracanej. Wynika to z faktu, iż są one wywoływane w sposób automatyczny w momencie, kiedy powstaje nowy obiekt danej klasy. Przykład konstruktora klasy punkt przedstawia kod programu: punkt::punkt(): opis("konstruktor domyslny"){ x = 0.; y = 0.; lpunktow++; nrpunktu = ++nrkolpunktu; } Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

22 Konstruktory Klasa musi mieć konstruktor - jeśli żaden nie został zdefiniowany, to system dostarczy własny konstuktor domyślny (inaczej domniemany), który: jest publiczny, nie ma żadnych parametrów, nie wykonuje żadnych czynności. Jeśli jakikolwiek konstruktor został w klasie zdefiniowany, to konstruktor domyślny nie będzie kreowany automatycznie. Konstruktor jest konstruktorem domyślnym wtedy i tylko wtedy gdy może być wywołany bez żadnych argumentów. Konstruktora domyślny może również posiadać parametry, ale wszystkie muszą być wyposażone w wartości domyślne punkt::punkt(double x0 = 0., double y0 = 0.); Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

23 Konstruktor kopiujący W klasie będa deklarowane również konstruktory kopiujące, które charakteryzują się cechami: ich jedynym parametrem jawnym jest parametr własnego typu, parametr musi być referencją. Wynika to z faktu, iż są one wywoływane w sposób automatyczny w momencie, tworzona jest kopia obiektu danej klasy. Przykład konstruktora klasy punkt przedstawia kod programu: punkt(const punkt& wzor): opis("konstruktor kopiujacy"){ x = wzor.x; y = wzor.y; lpunktow++; nrpunktu = ++nrkolpunktu; } Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

24 Destruktory Prócz konstruktorów można również zdefiniować w klasie destruktor. Destruktora można czasem w ogóle nie definiować. Jeśli jednak destruktor definiujemy, to jego nazwą jest nazwa klasy poprzedzona znakiem tyldy. punkt::~punkt(){ lpunktow--; } Tak jak to miało miejsce w przypadku konstruktorów, definiując destruktor nie podaje się żadnego typu zwracanego, nawet void. Destruktor musi być bezparametrowy, nie może być zatem przeciążany. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

25 Destruktory Destruktor jest wywoływany na rzecz obiektu automatycznie podczas destrukcji tego obiektu przez system Sam destruktor obiektu nie niszczy! Gdy sterowanie wychodzi z bloku, stos jest 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. Obiekty lokalne funkcji main() są niszczone po wyjściu z tej funkcji - wtedy dopiero wywoływane są dla tych obiektów destruktory, w kolejności odwrotnej do tej, w jakiej były tworzone. Obiekty wykreowane za pomocą operatora new na stercie nie są niszczone automatycznie - programista musi pamiętać, aby wywołać operator delete podając jako argument wskaźnik do obiektu na stercie. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

26 Spis treści 1 Programowanie obiektowe, a język C++ 2 Pojęcie klasy i składniki klas 3 Pola klas 4 Metody klas 5 Konstruktory i destruktory 6 Dostęp do składników klas 7 Definiowanie obiektów klas 8 Przykładowy program obiektowo zorientowany Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

27 Dostęp do składników klas Wszystkie składowe klasy są widoczne wewnątrz klasy, ale mogą mieć różny poziom dostępności z zewnątrz. Poziom dostępności jest określany jednym ze słów kluczowych: public - nazwy mogą być używane we wszystkich miejscach programu, gdzie widoczna jest definicja klasy, private - nazwy mogą być używane tylko przez metody tej samej klasy, lub funkcje z daną klasą zaprzyjaźnione protected - nazwy mogą być używane przez metody klasy i jej funkcje zaprzyjaźnione, a także metody i funkcje zaprzyjaźnione klas pochodnych danej klasy. Definicję klasy dzieli się na tzw. sekcje - każda sekcja rozpoczyna się od jednego z w/w słów kluczowych z następującym po nim :. Sekcja rozciąga się do końca definicji klasy lub do rozpoczęcia innej sekcji. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

28 Dostęp do składników klas Brak specyfikatora dostępu na początku definicji klasy oznacza dostęp prywatny. class MojaKlasa{ int privint; public: int publint; double publdbl; private: double privdbl; void privfun(int, double); public: bool publbl; char publchr; }; Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

29 Funkcje zaprzyjaźnione Funkcja zaprzyjaźniona z klasą to funkcja, która: nie jest metodą klasy, ma dostęp do wszystkich - nawet prywatnych - składników klasy. Wewnątrz definicji klasy wystarczy umieścić deklarację tej funkcji poprzedzoną słowem friend. friend void mojafunkcjazaprzyjazniona(); Właśnie dzięki temu ta zwykła funkcja ma prawo dostępu do prywatnych składników klasy. Zwróćmy uwagę, że to nie funkcja się zaprzyjaźnia, tylko klasa deklaruje przyjaźń. Zatem słowo friend pojawia się tylko wewnątrz definicji klasy. Funkcja zaprzyjaźniona nie jest składnikiem klasy, dlatego też nie ma wskaźnika this. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

30 Funkcje zaprzyjaźnione Przykładowe zastosowanie funkcji zaprzyjaźnionej przedstawia następujący fragment kodu. class MojaKlasa{ friend void mojafunkcjazaprzyjazniona(); int privint; }; void mojafunkcjaglobalna(){ MojaKlasa obmojejklasy; cout << obmojejklasy.privint; // pole privint niedostepne w tej funkcji } void mojafunkcjazaprzyjazniona(){ MojaKlasa obmojejklasy; cout << obmojejklasy.privint; // OK } Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

31 Spis treści 1 Programowanie obiektowe, a język C++ 2 Pojęcie klasy i składniki klas 3 Pola klas 4 Metody klas 5 Konstruktory i destruktory 6 Dostęp do składników klas 7 Definiowanie obiektów klas 8 Przykładowy program obiektowo zorientowany Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

32 Definiowanie obiektów Definiując zmienne obiektowe klasy należy określić, jaki konstruktor ma być wywołany dla kreowanego obiektu. Robi się to podając (lub nie) argumenty dla konstruktora w nawiasach. punkt p1; punkt p2(1., 4.); punkt p3 = punkt(); punkt p4 = punkt(1., -1.); punkt p5 = p2; // konstruktor kopiajacy punkt p6(p4); punkt* wp1 = new punkt; // deklaracje dynamiczne punkt* wp2 = new punkt(); punkt* wp3 = new punkt(0.5, -7.5); Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

33 Definiowanie obiektów Jeśli tworzymy obiekty przy użyciu konstruktora domyślnego, czyli bezargumentowego, to umieszczanie nawiasów jest: czasem dozwolone, punkt* wp = new punkt; punkt* wp = new punkt(); czasem konieczne, punkt p = punkt(); punkt p = punkt; a czasem zabronione. punkt p; punkt p(); Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

34 Spis treści 1 Programowanie obiektowe, a język C++ 2 Pojęcie klasy i składniki klas 3 Pola klas 4 Metody klas 5 Konstruktory i destruktory 6 Dostęp do składników klas 7 Definiowanie obiektów klas 8 Przykładowy program obiektowo zorientowany Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

35 Przykładowy program obiektowy A oto kod przykładowego programu obiektowegow języku C++: #include <iostream> using namespace std; class punkt{ static int nrkolpunktu; static int lpunktow; double x, y; int nrpunktu; public: const string opis; punkt(): opis("konstruktor domniemany"){ x = 0.; y = 0.; lpunktow++; nrpunktu = ++nrkolpunktu; } Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

36 punkt(double xp, double yp): x(xp), y(yp), nrpunktu(++nrkolpunktu), opis("konstruktor dwuparametrowy") {lpunktow++;} punkt(const punkt& wzor): opis("konstruktor kopiujacy"){ x = wzor.x; y = wzor.y; lpunktow++; nrpunktu = ++nrkolpunktu; } ~punkt(){lpunktow--;} Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

37 double getx(){return x;} double gety(){return y;} int getnrp(){return nrpunktu;} static void ilepunktow(){ cout << "Liczba istniejacych punktow: " << lpunktow << endl; } }; int punkt::nrkolpunktu = 0; int punkt::lpunktow = 0; ostream& operator<<(ostream& str, punkt& p){ str << p.opis << " - punkt nr " << p.getnrp() << ": (" << p.getx() << ", " << p.gety() << ")"; return str; } Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

38 void fun(){ punkt p1(4., 5.); cout << p1 << endl; p1.ilepunktow(); } int main() { punkt::ilepunktow(); punkt p1, p2(1., -3.), p3 = p2; cout << p1 << endl; cout << p2 << endl; cout << p3 << endl; fun(); p3.ilepunktow(); return 0; } Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

39 Strumień wyjściowy Program ten wygeneruje strumień wyjściowy: Liczba istniejacych punktow: 0 Konstruktor domniemany - punkt nr 1: (0, 0) Konstruktor dwuparametrowy - punkt nr 2: (1, -3) Konstruktor kopiujacy - punkt nr 3: (1, -3) Konstruktor dwuparametrowy - punkt nr 4: (4, 5) Liczba istniejacych punktow: 4 Liczba istniejacych punktow: 3 Żeby zrozumieć powstały strumień wyjściowy należy po kolei zanalizować przykładowy program Mirosław Głowacki (AGH, UJK) Programowanie w języku C / / 39

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 Obiektowew języku C++ Zadania L4

Programowanie Obiektowew języku C++ Zadania L4 Programowanie Obiektowew języku C++ Zadania L4 Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki

Bardziej szczegółowo

Programowanie Obiektowew języku C++ Zadania L4

Programowanie Obiektowew języku C++ Zadania L4 Programowanie Obiektowew języku C++ Zadania L4 Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki

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

Podstawy programowania w języku C++ Zadania - dziedziczenie i polimorfizm

Podstawy programowania w języku C++ Zadania - dziedziczenie i polimorfizm Podstawy programowania w języku C++ Zadania - dziedziczenie i polimorfizm Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki

Bardziej szczegół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++ Przestrzenie nazw

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw 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

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

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

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

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

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

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

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

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

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

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

Programowanie Obiektowew języku C++ Zadania L2

Programowanie Obiektowew języku C++ Zadania L2 Programowanie Obiektowew języku C++ Zadania L2 Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki

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

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

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

Programowanie Obiektowew języku C++ Zadania L9

Programowanie Obiektowew języku C++ Zadania L9 Programowanie Obiektowew języku C++ Zadania L9 Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki

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

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

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

Bardziej szczegółowo

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

Programowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Wirtualne destruktory class A int* a; A(int _a) a = new int(_a);} virtual ~A() delete a;} class B: public A double* b;

Bardziej szczegół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

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

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

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

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

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

Podstawy programowania w języku C++ Zadania

Podstawy programowania w języku C++ Zadania Podstawy programowania w języku C++ Zadania Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki

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

Programowanie Obiektowew języku C++ Zadania L2

Programowanie Obiektowew języku C++ Zadania L2 Programowanie Obiektowew języku C++ Zadania L2 Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki

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

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

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

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

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

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

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

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

Programowanie Obiektowew języku C++ Zadania L8

Programowanie Obiektowew języku C++ Zadania L8 Programowanie Obiektowew języku C++ Zadania L8 Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki

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

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

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

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

Bardziej szczegółowo

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

KLASY cz4. Dorota Pylak. destruktory składowe statyczne przeciążanie operatorów. wskaźniki KLASY cz4. destruktory składowe statyczne przeciążanie operatorów Dorota Pylak wskaźniki 2 Klasy - podsumowanie poznanych wiadomości Deklaracja klasy może zawierać pola, konstruktory oraz metody. W deklaracji

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

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

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

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

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

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

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 i C++

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

Bardziej szczegółowo

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

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

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

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy PRAWA PRZYJACIÓŁ KLASY. Dostęp z zewnątrz: Dostęp z wewnątrz:

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy PRAWA PRZYJACIÓŁ KLASY. Dostęp z zewnątrz: Dostęp z wewnątrz: Prawa dostępu do składowych klasy PRAWA PRZYJACIÓŁ KLASY 91 Dostęp z zewnątrz: double limit; ; water_temp T; T.limit = 100; Dostęp z wewnątrz: double set_temp(double nt) { if (nt0) ; water_temp

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

Informatyka 2. Wykład nr 3 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

Informatyka 2. Wykład nr 3 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2008/2009 Wykład nr 3 (05.11.2008) Rok akademicki 2008/2009, Wykład

Bardziej szczegółowo

EGZAMIN PROGRAMOWANIE II (10 czerwca 2010) pytania i odpowiedzi

EGZAMIN PROGRAMOWANIE II (10 czerwca 2010) pytania i odpowiedzi EGZAMIN PROGRAMOWANIE II (10 czerwca 2010) pytania i odpowiedzi 1. Napisz wskaźnik do funkcji fun tak zdeklarowanej: T* fun( int, double const& ) const; definicja wskaźnika musi być precyzyjna, inaczej

Bardziej szczegółowo

Programowanie proceduralne w języku C++ Funkcje

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

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

tel Konsultacje www

tel Konsultacje www Języki Programowania Prowadząca: dr inż. Hanna Zbroszczyk e-mail: e-mail gos@if.pw.edu.pl tel: tel +48 22 234 58 51 Konsultacje: Piątek: 12.00 13.30 www: http://www.if.pw.edu.pl/~gos/students/jp Politechnika

Bardziej szczegółowo

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

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

Bardziej szczegółowo

PROGRAMOWANIE OBIEKTOWE W C++ cz. 2. Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów.

PROGRAMOWANIE OBIEKTOWE W C++ cz. 2. Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów. PROGRAMOWANIE OBIEKTOWE W C++ cz. 2 Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów. Dziedziczenie Dziedziczenie jest to technika pozwalaj c na definiowanie nowej klasy przy wykorzystaniu

Bardziej szczegół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

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy KONSTRUKTORY

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy KONSTRUKTORY Inicjalizacja obiektu KONSTRUKTORY Inicjalizacja Przyczyną wielu błędów w programach jest nieprawidłowe zainicjalizowanie zmiennych na początku działania programu. Obiekt zawiera z reguły szereg pól ich

Bardziej szczegółowo

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej. Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.

Bardziej szczegółowo

Wyliczanie wyrażenia obiekty tymczasowe

Wyliczanie wyrażenia obiekty tymczasowe Wyliczanie wyrażenia obiekty tymczasowe Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2013 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu

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

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

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

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

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 4. Karol Tarnowski A-1 p. Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 4 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Przeciążanie operatorów Funkcje zaprzyjaźnione Na

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

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

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

Podstawy Programowania Obiektowego

Podstawy Programowania Obiektowego Podstawy Programowania Obiektowego Pojęcie konstruktora i destruktora. Spotkanie 04 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Pojęcie konstruktora Konstruktor domyślny Konstruktor sparametryzowany Konstruktor

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

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

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

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

Obsługa wyjątków. Język C++ WW12

Obsługa wyjątków. Język C++ WW12 Obsługa wyjątków Pozwala zarządzać błędami wykonania w uporządkowany sposób. Umożliwia automatyczne wywołanie części kodu, funkcji, metod klas, który trzeba wykonać przy powstaniu błędów. try //blok try

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

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

Mechanizm dziedziczenia

Mechanizm dziedziczenia Mechanizm dziedziczenia Programowanie obiektowe jako realizacja koncepcji ponownego wykorzystania kodu Jak przebiega proces dziedziczenia? Weryfikacja formalna poprawności dziedziczenia Realizacja dziedziczenia

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

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

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

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

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

Programowanie obiektowe. Materiały przygotował: mgr inż. Wojciech Frohmberg

Programowanie obiektowe. Materiały przygotował: mgr inż. Wojciech Frohmberg Programowanie obiektowe Materiały przygotował: mgr inż. Wojciech Frohmberg Konstruktor Konstruktor w językach zorientowanych obiektowo pełni podwójną rolę: przydziela pamięć na obiekt, zdefiniowany klasą

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

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