Programowanie w języku C++
|
|
- Przybysław Kozak
- 7 lat temu
- Przeglądów:
Transkrypt
1 Katedra Informatyki Stosowanej Politechniki Łódzkiej mgr inż. Tomasz Jaworski Programowanie w języku C++ Al. Politechniki 11, Łódź ul. Stefanowskiego 18/22, Łódź tjaworski@kis.p.lodz.pl
2 Programowanie w języku C Od programowania proceduralnego do obiektowego Konstruując program zawsze napotkamy problem definiowania przedmiotów, których opisem program się ten zajmuje. Przez przedmiot należy tu rozumieć zarówno zjawiska, jak i przedmioty rzeczywiste opisywane przez program oraz struktury danych wykorzystywane do tego opisu. W odniesieniu do sposobu definiowania przedmiotów wykształciły się dwa zasadnicze podejścia: proceduralne: Tworzymy strukturę zawierającą parametry definiujące przedmiot i jego stan, a odseparowane funkcje określają jego właściwości. Rozpatrzmy prosty przykład: w celu zdefiniowania punktu na ekranie wystarczy utworzyć następującą strukturę: struct punkt int x, y; ; Wyświetlenie punktu na ekranie umożliwi następująca funkcja: void Narysuj(struct punkt P) //ciało funkcji obiektowe: Dane definiujące przedmiot i metody określające jego właściwości umieszczamy we wspólnym miejscu klasie. W ten sposób następuje integracja danych i metod uprawnionych do ich wykorzystania. Rozpatrzmy ten sam problem, co w przypadku podejścia proceduralnego. class PUNKT int x, y; void Narysuj(void); ; Zdefiniowana powyżej klasa PUNKT zawiera zarówno dane definiujące punkt na ekranie, jak I funkcję pozwalającą na jego wyświetlenie. Definicja przedmiotu i jego właściwości znalazła się w ten sposób w jednym miejscu. Programowanie obiektowe umożliwia: tworzenie programowych modeli przedmiotów poprzez łączenie danych i metod uprawnionych do ich wykorzystania, wspólny opis całych klas przedmiotów, zjawisk i problemów.
3 Programowanie w języku C Definiowanie przedmiotów klasy i obiekty Podstawowym pojęciem języka C++ jest klasa. Dla jej opisu konieczne są dwa zasadnicze elementy: dane charakteryzujące przedmiot, funkcje określające jego właściwości. Jak łatwo się domyśleć elementy te muszą znaleźć się w definicji klasy. Definicja klasy rozpoczyna się od tak zwanego słowa kluczowego klasy, którym może być jedno ze słów class, struct, union. Najczęściej wykorzystywane jest słowo kluczowe class. W ciele definicji klasy mogą znaleźć się: deklaracje danych składowych deklaracje i definicje funkcji składowych Wymienione powyżej elementy rozmieszcza się wekcjach definicji klasy, co ilustruje poniższy schemat: class Klasa protected: private:... //funkcje i dane składowe publiczne... //funkcje i dane składowe zabezpieczone... //funkce i dane składowe prywatne ; Specyfikatory atrybutów dostępu mogą być używane wielokrotnie w obrębie definicji klasy. Umieszczając poszczególne elementy definicji klasy w sekcjach określamy, które funkcje programu mają prawo się do nich odwołać. Reguły dostępności mają się następująco: Sekcja prywatna (private) Składowe prywatne widoczne są tylko w obrębie funkcji składowych danej klasy. Jeśli klasa jest definiowana ze słowem kluczowym class, składowe są domyślnie prywatne. Dane składowe definiujemy jako prywatne zwykle w jednej z następujących sytuacji: zmiana wartości składowej przez niepowołaną do tego funkcję zewnętrzną jest ryzykowna lub zmianie tej powinno towarzyszyć wykonanie ściśle określonych czynności. W takiej sytuacji powinna istnieć specjalna funkcja umożliwiająca takie przypisanie, realizująca jednocześnie te operacje, składowa jest przeznaczona tylko do wewnętrznego wykorzystania przez funkcje składowe klasy. Funkcje definiujemy jako prywatne, gdy: ich wywołanie przez funkcje zewnętrzne jest niewskazane, gdy realizują pewien fragment algorytmu i ich wywołanie z zewnątrz nie ma sensu. Sekcja zabezpieczona (protected) Składowe zabezpieczone są widoczne tylko w obrębie funkcji składowych danej klasy i klas wyprowadzonych. Składowe definiujemy jako zabezpieczone, gdy ich użycie nie jest obarczone tak silnymi restrykcjami, jak ma to miejsce w przypadku składowych prywatnych. Funkcje określamy jako zabezpieczone, jeśli dostęp do nich z zewnątrz nie jest wymagany, zaś konieczny jest dostęp do analogicznych funkcji składowych odziedziczonych po przodkach. Sekcja publiczna (public)
4 Programowanie w języku C++ 4 Składowe publiczne widoczne są w obszarze całego pliku. Publiczne funkcje składowe służą zwykle do sterowania, zmiany parametrów i komunikacji z obiektem. Dane składowe definiuje się jako publiczne w przypadku prostych klas, gdy zmiana wartości pola nie musi być związana z wykonaniem jakichś dodatkowych czynności.!!! DEFINICJA KLASY POWINNA KOŃCZYĆ SIĘ ŚREDNIKIEM!!! Sposób definiowania funkcji zadeklarowanych, lecz nie zdefiniowanych w ciele klasy rozpatrzymy na przykładzie funkcji Rysuj klasy PUNKT. void PUNKT::Rysuj(void) //ciało funkcji Jako nazwę funkcji podajemy nazwę klasy, po której następuje tzw. kwalifikator zakresu (::), a następnie nazwę definiowanej funkcji składowej. 3. Konstruktory i destruktory Idea i budowa konstruktorów Okazuje się, że oprócz deklarowanych funkcji składowych istnieją jeszcze dwie specjalne funkcji, które są albo definiowane przez programistę, albo generowane przez kompilator (jeśli nie zostały wcześniej zdefiniowane). Są to konstruktory i destruktory. Konstruktor jest specjalną, najczęściej przeciążoną funkcją składową wywoływaną niejawnie zawsze wtedy, gdy zachodzi konieczność utworzenia obiektu danej klasy. Deklarowanie i definiowanie konstruktorów podlega niemal tym samym zasadom, co każda zwyczajna funkcja składowa z tym, że: W deklaracji konstruktora nie wolno określać typu zwracanej wartości. Niedozwolony jest nawet specyfikator void, Konstruktory nie mogą być wywoływane tak jak inne funkcje, gdyż są wywoływane niejawnie w czasie tworzenia obiektu, a wybór odpowiedniego konstruktora jest dokonywany na podstawie typów parametrów przekazanych w czasie tworzenia obiektu, Konstruktory nie są dziedziczone, Identyfikator konstruktora musi być identyczny z identyfikatorem klasy, Nie można pobrać adresu konstruktora, Konstruktor nie może być wirtualny. Dwa typy konstruktorów pełnią szczególną rolę: tzw. konstruktor domyślny, czyli bezparametrowy i konstruktor kopiujący. Jeżeli w klasie nie zdefiniowano żadnego konstruktora, to kompilator utworzy własny konstruktor bezparametrowy i kopiujący. Konstruktor służy przede wszystkim do inicjacji danych składowych obiektu. Inicjacji tej można dokonać w dwojaki sposób: dokonując bezpośrednich przypisań w ciele definicji konstruktora, bezpieczniejsze i zgodniejsze z duchem języka C++ jest jednak posłużenie się tzw. listą inicjacyjną. Elementy listy inicjacyjnej przypominają sposób, w jaki inicjowane są obiekty.
5 Programowanie w języku C++ 5 Przykład: Definicje konstruktorów class PUNKT private: int x, y; unsigned kolor; ciele funkcji PUNKT(void) x=0; y=0; kolor=0; //bezpośrednie przypisania w PUNKT(int _x, int _y, unsigned _kolor = 0); PUNKT(unsigned _kolor); void UstalWsp(int _x, int _y); void UstalKol(unsigned _kolor); void Rysuj(void); ; PUNKT::PUNKT(int _x, int _y, unsigned _kolor): x(_x), y(_y), kolor(_kolor) //lista inicjacyjna PINKT::PUNKT(unsigned _kolor): x(0), y(0), kolor(_kolor) Definicję klasy PUNKT uzupełniono o następujące konstruktory: PUNKT(void); konstruktor domyślny, bezparametrowy, PUNKT(int _x, int _y, unsigned _kolor=0); - konstruktor o trzech parametrach całkowitych, z możliwością przyjęcia domyślnej wartości (zero) ostatniego, PUNKT(unsigned _kolor); - konstruktor z jednym parametrem całkowitym oznaczającym kolor punktu. Konstruktor, zgodnie z nazwą, jest wywoływany podczas tworzenia obiektu danej klasy. Definicja obiektu klasy zawierającej konstruktory może być połączona z jego inicjacją. PUNKT P1, //konstruktor bezparametrowy P2(1, 1), //konstruktor trójparametrowy, trzeci parametr domyślny P3(10, 10, 5), //konstruktor trójparametrowy P4(1), tab[10]; //konstruktor jednoparametrowy //konstruktor bezparametrowy (10x) Jeżeli klasa zawiera jakikolwiek konstruktor zdefiniowany przez programistę, wówczas kompilator nie wygeneruje automatycznie nawet konstruktora domyślnego. Dobrą zasadą zatem jest, że gdy klasa zawiera jakiś konstruktor, należy również zdefiniować ten bezparametrowy. Należy unikać niejednoznaczności, np.:
6 Programowanie w języku C++ 6 class X X(void); X(int j=2); ; X obj; Jeśli spróbujemy utworzyć obiekt obj klasy X w powyższy sposób, kompilator nie będzie wiedział, który z konstruktorów klasy X ma zostać użyty. Konstruktory kopiujące. Powielanie obiektów Konstruktorem kopiującym klasy X nazywamy konstruktor o jednym parametrze typu referencja klasy X np.: X(const &X); X(const &X, int I = 0); Konstruktor kopiujący jest wywoływany zawsze, gdy zachodzi konieczność skopiowania obiektu danej klasy do innego obiektu tejże klasy choćby podczas inicjacji obiektu innym obiektem, np.: X x = y; Jeśli konstruktor kopiujący nie został zdefiniowany jawnie, kompilator wygeneruje własny. Konstruktor kopiujący definiujemy samodzielnie wówczas, gdy podczas kopiowania obiektów zachodzi konieczność wykonania jakiejś dodatkowej operacji, np. skopiowania związanych z danym obiektem dynamicznych struktur danych. W tym przypadku brak kopiowania danych mogło by spowodować, że dynamiczne obiekty, o których mowa, operowały by na tym samym obszarze pamięci, co nie zawsze jest wymagane. Destruktory Zawsze przed usunięciem obiektu z pamięci wywoływana jest niejawnie specjalna funkcja składowa zwana destruktorem. Jeśli nie została ona zadeklarowana jawnie w obrębie definicji klasy, kompilator wygeneruje własny destruktor. Destruktor jest funkcją o następujących własnościach: nazwą destruktora jest nazwa klasy poprzedzona znakiem tyldy (~), nie wolno określać typu zwracanego przez destruktor, nie jest dozwolony nawet specyfikator void, destruktor może być wywoływany przy użyciu pełnej kwalifikowanej jego nazwy. W celu wywołania destruktora klasy X należy użyć formuły: X::~X(); Destruktor służy do wykonania niezbędnych operacji przed usunięciem obiektu z pamięci. Operacje te mogą być różnorodne: usunięcie z ekranu figury, zwolnienie pamięci dla dynamicznych struktur danych itp.
7 Programowanie w języku C Zmienna this Weźmy pod uwagę definicję klasy PUNKT (nieco uproszczoną): class PUNKT int x, y; void UstalWsp(int i, int j) x = I; y = j; P, Q; oraz obiekty P i Q. Zwróćmy uwagę, że wywołania P.UstalWsp(1, 10); Q.UstalWsp(2, 13); nadają wartości składowym odpowiednio obiektom P i Q. Jak widać ta sama funkcja nadaje wartości składowym różnych obiektów. Rodzi się więc pytanie, w jaki sposób odwołania do składowych są wiązane z konkretnymi obiektami. Okazuje się, że wszystkie niestatyczne funkcje składowe otrzymują niejawny parametr this, który wskazuje obiekt, na rzecz którego zostały wywołane. W zwiąsku z tym ciało funkcji UstalWsp w zasadzie wygląda nastepujaco: void PUNKT::UstalWsp(int i, int j) this->x = i; this->y = j; Normalnie operacja this-> jest wykonywana niejawnie. Wskaźnik this ma różne zastosowania. Można go wykorzystywać do zwracania referencji obiektu, dla którego została wywołana dana funkcja składowa, np.: class PUNKT PUNKT& UstalWsp(int i, int j); ; PUNKT& PUNKT::UstalWsp(int i, int j) x = i; y = j; return *this; //zwróć referencję do danego obiektu
8 Programowanie w języku C Funkcje i klasy zaprzyjaźnione W niektórych sytuacjach może zachodzić konieczność postępowania niezgodnego z regułami określonymi atrybutami dostępu lub postępowanie takie może znacznie uprościć zapis algorytmu, powodując wygenerowanie bardziej efektywnego kodu wynikowego. Aby zezwolić funkcji zdefiniowanej poza klasą na dostęp do jej składowych prywatnych i zabezpieczonych, trzeba określić relacją przyjaźni między funkcją a tą klasą. Funkcja zaprzyjaźniona (ang. friend) z klasą, mimo że nie jest składową tej klasy, posiada pełne prawa dostępu do wszystkich składowych tej klasy. Relację przyjaźni między funkcją a klasą ustanawia się poprzez umieszczenie deklaracji tej funkcji poprzedzonej słowem kluczowym friend w ciele definicji klasy. class STRING private: char *Str; friend void Drukuj(STRING &); //definicje konstruktorów i destruktora ; void Drukuj(STRING &S) cout << \n << S.Str; main() STRING Imie( Radosław ); Drukuj(Imie); return 0; Dzięki ustaleniu relacji przyjaźni pomiędzy klasą STRING a funkcją Drukuj dozwolony jest w jej ciele dostęp do składowych prywatnych tej klasy. Relację przyjaźni można ustalić również pomiędzy dwiema klasami. Wszystkie funkcje składowe klasy zaprzyjaźnionej z daną mają prawo dostępu do wszystkich komponentów tej klasy, z którą są zaprzyjaźnione. Należy pamiętać, że relacja przyjaźni nie ma odwrotności.
9 Programowanie w języku C++ 9 class STRING private: char *Str; //definicje konstruktorów i destruktora friend class STR_STREAM; ; class STR_STREAM void Out(STRING &S) cout << \n << S.Str; ; main() STRING S( Ala ma kota ); STR_STREAM Str; Str.out(S); return 0; Deklaracje klas i funkcji zaprzyjaźnionych mogą znaleźć się w dowolnej sekcji definicji klasy nie ma to żadnego wpływu na relację przyjaźni.
10 Programowanie w języku C Funkcje operatorowe Język C++ oprócz możliwości tworzenia różnych obiektów pozwala na definiowanie operatorów wykonujących działania na tych obiektach (klasach). Dzięki temu dodawanie wektorów czy łączenie łańcuchów znakowych może zyskać naturalny wygląd (np. jak każda inna operacja matematyczna). Załóżmy, że obiekty klasy WEKTOR reprezentują wektory na płaszczyźnie. Przedstawiona poniżej funkcja main wykonuje działania na obiektach tej klasy. liczbę int main(void) WEKTOR U(1,5), V(2,3), X(-2,1), Z(10,-3); X = U + V; Z = X 5 * V; return 0; //dodawanie wektorów //odejmowanie wektorów i mnożenie wektora przez Normalnie próba wykonania takich operacji na obiektach zakończyła by się komunikatem o błędzie. Aby tego uniknąć, należy zdefiniować takie operatory. Operatory standardowe i przeciążone Język C++ zawiera pewien, dość obszerny zasób operatorów umożliwiających wykonanie operacji na danych typów całkowitych, rzeczywistych oraz operatory indeksowania, wywołania funkcji, dostępu do składowych oraz dynamicznego przydziału pamięci i in. Większość wymienionych operatorów może zostać zdefiniowana dla operandów innych typów. Operację taką nazywamy przeciążaniem operatorów, podobnie jak zdefiniowanie funkcji o tej samym identyfikatorze, ale innych parametrach wejściowych. Spośród całego zbioru operatorów tylko cztery, podobnie jak symbole preprocesora (#, ##), nie podlegają przeciążaniu:..* ::?: Przeciążanie operatorów polega na zdefiniowaniu tzw. funkcji operatorowej. Identyfikatorem funkcji operatorowej jest zawsze słowo kluczowe operator, bezpośrednio po którym wymieniony jest symbol operatora, np.: operator+, operator-, operator<< Funkcja operatora może być: - niestatyczną funkcją składową klasy, na obiektach których działa operator, - funkcją nie będącą składową klasy najczęściej zaprzyjaźnioną, - statyczną funkcją składową klasy. O tym, z którym z wymienionych powyżej przypadków mamy do czynienia, decyduje rodzaj przeciążanego operatora. Operatory jednoargumentowe Operator jednoargumentowy (binarny) można zdefiniować jako: - niestatyczną, bezparametrową funkcję składową klasy, - funkcję o jednym argumencie, nie będącą składową klasy. Stąd wynika, że poniższe wywołanie operatora jednoargumentowego ++: ++X; lub X++;
11 Programowanie w języku C++ 11 może być traktowane jako: X.operator++() lub operator++(x);, gdzie X to klasa, której funkcją składową jest operator++ lub na której on działa. Jak widać istnieje możliwość zdefiniowania rodzaju operatora jako przed- lub przyrostkowy. Operator przedrostkowy definiujemy tak, jak to przedstawiono dotychczas, przyrostkowy zaś, deklarując go, jako niestatyczną funkcję składową o jednym parametrze o jednym parametrze typu int lub jako funkcję o jednym parametrze danej klasy i dodatkowym parametrze typu int. Parametr ten stanowi dodatkową informację, pozwalającą kompilatorowi na rozróżnienie wersji przed- i przyrostkowej operatora. Zmianie podlega również fakt, iż w przypadku standardowych przyrostkowych operatorów in- i dekrementacji, kiedy to żądana operacja stosowana była dopiero po obliczeniach, dla operatorów przeciążanych jest ona stosowana natychmiast. Przykład. class INTEGER ; int val; INTEGER(int v=0): val(v) INTEGER &operator++() val++; return *this; //przedrostkowy friend INTEGER &operator++(integer &, int); //przyrostkowy void Out(void) cout << \n << val; INTEGER &operator++(integer &a, int) a.val+=2; return a; main() INTEGER a(1), b(2); ++a; b++; a.out(); b.out(); //użycie operatora przedrostkowego //użycie operatora przyrostkowego Operatory dwuargumentowe Operatory dwuargumentowe należą do najczęściej przeciążanych i można je definiować jako: - niestatyczną funkcję składową wówczas działanie Y, - operator dwuargumentowy traktujemy jako: X.operator@(Y), - dwuparametrową funkcję nie będącą składową klasy, na której operacje będą wykonywane działanie Y interpretujemy wówczas jako operator@(x, Y).
12 Programowanie w języku C++ 12 Obie metody definiowania operatorów dwuargumentowych są tożsamościowe pod warunkiem odpowiedniego ich użycia, co pokazano w poniższym przykładzie. Przykład. class WEKTOR WEKTOR(void): X(0), Y(0) ; WEKTOR(double X, double Y): X(_X), Y(_Y) WEKTOR operator+(wektor&); friend WEKTOR operator-(wektor&, WEKTOR&); friend WEKTOR operator*(double, WEKTOR&); friend ostream &operator<<(ostream&, WEKTOR&); private: double X, Y; ; WEKTOR WEKTOR::operator+(WEKTOR &U) return WEKTOR(this->X + U.X, this->y + U.Y); WEKTOR operator-(wektor &U, WEKTOR &V) return WEKTOR(U.X + V.X, U.Y + V.Y); WEKTOR operator*(double k, WEKTOR &U) return WEKTOR(k * U.X, k * U.Y); ostream &operator<<(ostream &St, WEKTOR &U) St << [ << U.X <<, << U.Y << ] ; return St; main() WEKTOR A(1, 1), B(5, 5), C(-3, 3);
13 Programowanie w języku C++ 13 return 0; cout << \n << A + B << \n << A B << \n << 2*C + A; W powyższym przykładzie zdefiniowano klasę WEKTOR, reprezentującą wektor o współrzędnych rzeczywistych (double), a następnie zdefiniowano operatory dwuargumentowe umożliwiające dodawanie, odejmowanie oraz mnożenie wektora przez liczbę. Operator dodawania + zdefiniowano jako niestatyczną funkcję składową, zaś operatory odejmowania i mnożenia jako funkcje zaprzyjaźnione z klasą WEKTOR. Przedstawiony sposób definiowania operatorów dwuargumentowych może być traktowany jako wzorzec postępowania przy takiej okazji. Zdefiniowanie operatora << umożliwia zapis wektora w strumieniu wyjściowym (tu ekran). W wyniku wykonania programu zostaną wyprowadzone następujące napisy: [6, 6] [-4 4] [-5, 7] Istnieje możliwość definiowania operatorów dwuargumentowych na dwa sposoby tak jak to przedstawiono powyżej. Wszelkie niejednoznaczności są rozstrzygane przez standardowe dopasowanie argumentów. Operatory dwuargumentowe zdefiniowane jako niestatyczne funkcje składowe klasy podlegają dziedziczeniu przy wyprowadzaniu klas potomnych z danej. Operatory przypisania Każdy z operatorów przypisania: = *= /= %= += -= <<= >>= &= ^= = może zostać zdefiniowany wyłącznie jako niestatyczna funkcja składowa. Operatory przypisania nie są dziedziczone przez klasy wyprowadzone z tej, dla której zostały zdefiniowane. W poniższej definicji klasy wykorzystano funkcje składowe z przykładu poprzedniego. Dodano definicję operatorów przypisania: +=, -=, *=; class WEKTOR WEKTOR(void): X(0), Y(0) ; WEKTOR(double X, double Y): X(_X), Y(_Y) WEKTOR operator+(wektor&); friend WEKTOR operator-(wektor&, WEKTOR&); friend WEKTOR operator*(double, WEKTOR&); friend ostream &operator<<(ostream&, WEKTOR&); WEKTOR &operator+=(wektor&); WEKTOR &operator-=(wektor&); WEKTOR &operator*=(double); private: double X, Y; ;
14 Programowanie w języku C++ 14 WEKTOR &WEKTOR::operator+=(WEKTOR &U) this->x += U.X; this->y += U.Y; return *this; WEKTOR &WEKTOR::operator-=(WEKTOR &U) this->x -= U.X; this->y -= U.Y; return *this; WEKTOR &WEKTOR::operator*=(double s) this->x *= s; this->y *= s; return *this; main() C += A + B; WEKTOR A(10, 10), B(-5, 4), C(0, 0); cout << C << \n ; cout << C << \n ; C *= -2; cout << C << \n ; C -= A; cout << C << \n ; return 0; W efekcie wykonania programu zostaną wyprowadzona następujące rezultaty: [0, 0] [5, 14] [-10, -28] [-20, -38]
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ółowoC++ - 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ółowo1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?
1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie
Bardziej szczegółowoC++ - 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ółowoJęzyk C++ Programowanie obiektowe
Język C++ Programowanie obiektowe Cechy programowania obiektowego abstrakcyjne typy danych hermetyczność obiektów (kapsułkowanie) dziedziczenie polimorfizm Programowanie proceduralne vs. programowanie
Bardziej szczegółowoPrzeciąż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ółowoWykł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ółowoWykład 8: klasy cz. 4
Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD
Bardziej szczegółowoRozdział 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ółowoStrona 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ółowoObszar 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ółowoProgramowanie Obiektowo Zorientowane w języku C++ Klasy, pola, metody
Programowanie Obiektowo Zorientowane w języku C++ Klasy, pola, metody Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej
Bardziej szczegółowoInformatyka 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ółowoInformacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;
Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze
Bardziej szczegółowoKonstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.
Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class
Bardziej szczegółowoWstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this
Wstęp do programowania obiektowego WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this 1 Nazwa typu Rozmiar Zakres Uwagi bool 1 bit wartości true albo false stdbool.h TYPY ZNAKOWE
Bardziej szczegółowoPARADYGMATY 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ółowoIMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji
Bardziej szczegółowoPodstawy Programowania Obiektowego
Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja
Bardziej szczegółowoC++ Przeładowanie operatorów i wzorce w klasach
C++ i wzorce w klasach Andrzej Przybyszewski numer albumu: 89810 14 listopada 2009 Ogólnie Przeładowanie (przeciążanie) operatorów polega na nadaniu im nowych funkcji. Przeładowanie operatora dokonuje
Bardziej szczegółowoObiekt 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ółowoProgramowanie Obiektowe i C++
Programowanie Obiektowe i C++ Marcin Benke Instytut Informatyki UW 30.10.2006 Marcin Benke (IIUW) Programowanie Obiektowe i C++ 30.10.2006 85 / 112 Zgodność typów Rozważmy klasy class A { //... }; class
Bardziej szczegółowoTechniki 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ółowoTechniki 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ółowoDo czego służą klasy?
KLASY Dorota Pylak 2 Do czego służą klasy? W programowaniu obiektowym posługujemy się obiektami. Obiekty charakteryzują się: cechami (inaczej - atrybutami lub stanami) operacjami, które na nich można wykonywać
Bardziej szczegółowoProgramowanie obiektowe, wykład nr 6. Klasy i obiekty
Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 6 Klasy i obiekty W programowaniu strukturalnym rozwój oprogramowania oparto
Bardziej szczegółowoDziedziczenie jednobazowe, poliformizm
Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie jednobazowe 2. Polimorfizm część pierwsza 3. Polimorfizm część druga Zofia Kruczkiewicz, ETE8305_6 1 Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie
Bardziej szczegółowoDo czego służą klasy?
KLASY Dorota Pylak 2 Do czego służą klasy? W programowaniu obiektowym posługujemy się obiektami. Obiekty charakteryzują się: cechami (inaczej - atrybutami lub stanami) operacjami, które na nich można wykonywać
Bardziej szczegółowoKlasa 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ółowoProgramowanie, 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ółowoProgramowanie obiektowe Wykład 3. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21
Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Przydzielanie pamięci Poniżej przedstawiono w C++ dwie klasy obrazujące sposób rezerwacji pamięci. class Osoba char imie[30];
Bardziej szczegółowo2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne
Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie
Bardziej szczegółowoW2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :
Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : class nazwa_klasy prywatne dane i funkcje public: publiczne dane i funkcje lista_obiektów;
Bardziej szczegółowoKLASY cz.1. Dorota Pylak
KLASY cz.1 Dorota Pylak Do czego służą klasy? 2 W programowaniu obiektowym posługujemy się obiektami. Obiekty charakteryzują się: cechami (inaczej - atrybutami lub stanami) operacjami, które na nich można
Bardziej szczegółowoDziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.
Dziedziczenie Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasy Student oraz Pracownik: class Student class Pracownik
Bardziej szczegółowoJava - tablice, konstruktory, dziedziczenie i hermetyzacja
Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja
Bardziej szczegółowo1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float
Bardziej szczegółowoPodstawy 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ółowoWstęp do Programowania 2
Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 5 W programowaniu obiektowym programista koncentruje się na obiektach. Zadaje sobie pytania typu:
Bardziej szczegółowoProgramowanie 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ółowoProgramowanie 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ółowoJęzyk C++ umożliwia przeciążanie operatora, tzn. zmianę jego znaczenia na potrzeby danej klasy. W tym celu definiujemy funkcję o nazwie:
Rozdział 10 Przeciążanie operatorów 10.1 Definicje Język C++ umożliwia przeciążanie operatora, tzn. zmianę jego znaczenia na potrzeby danej klasy. W tym celu definiujemy funkcję o nazwie: operator op gdzie
Bardziej szczegółowoProgramowanie II. Lista 3. Modyfikatory dostępu plik TKLientBanku.h
Programowanie II Lista 3 Modyfikatory dostępu plik TKLientBanku.h plik z funkcją main Przyjaźń Dziedziczenie Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące. Jest to
Bardziej szczegółowoProgramowanie w C++ Wykład 13. Katarzyna Grzelak. 4 czerwca K.Grzelak (Wykład 13) Programowanie w C++ 1 / 26
Programowanie w C++ Wykład 13 Katarzyna Grzelak 4 czerwca 2018 K.Grzelak (Wykład 13) Programowanie w C++ 1 / 26 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe
Bardziej szczegółowoLaboratorium 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ółowoPARADYGMATY PROGRAMOWANIA Wykład 4
PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej
Bardziej szczegółowoPodstawy 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ółowoSzablony klas, zastosowanie szablonów w programach
Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do
Bardziej szczegółowoProgramowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30
Programowanie w C++ Wykład 11 Katarzyna Grzelak 13 maja 2019 K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30 Klasy cd K.Grzelak (Wykład 11) Programowanie w C++ 2 / 30 Klasy - powtórzenie Klasy typy definiowane
Bardziej szczegółowoProgramowanie 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ółowoProgramowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 12 Katarzyna Grzelak 28 maja 2018 K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27 Klasy cd K.Grzelak (Wykład 12) Programowanie w C++ 2 / 27 Klasy - powtórzenie Klasy typy definiowane
Bardziej szczegółowoProgramowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 14 Katarzyna Grzelak 3 czerwca 2019 K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27 Na ostatnim wykładzie: Konstruktor standardowy (domyślny) to taki, który nie ma żadnych argumentów
Bardziej szczegółowoProgramowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska
Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska Programowanie Obiektowe Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,
Bardziej szczegółowoProgramowanie obiektowe w C++ Wykład 12
Programowanie obiektowe w C++ Wykład 12 dr Lidia Stępień Akademia im. Jana Długosza w Częstochowie L. Stępień (AJD) 1 / 22 Zakresowe pętle for double tab[5] {1.12,2.23,3.33,4.12,5.22 for(double x: tab)
Bardziej szczegółowoMateriał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ółowoProgramowanie obiektowe w języku C++ dr inż. Jarosław Forenc
Rok akademicki 2016/2017, Wykład nr 4 2/45 Plan wykładu nr 4 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2016/2017
Bardziej szczegółowoPROGRAMOWANIE OBIEKTOWE W 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ółowoC++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU
Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale
Bardziej szczegółowoZaawansowane 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ółowoMETODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Bardziej szczegółowoJęzyk C++ Różnice między C a C++
Język C++ Różnice między C a C++ Plan wykładu C a C++ Różnice ogólne Typy Deklaracje zmiennych C++ jako rozszerzenie C Domyślne argumenty funkcji Przeciążanie funkcji Referencje Dynamiczny przydział pamięci
Bardziej szczegółowoOperator przypisania. Jest czym innym niż konstruktor kopiujący!
Operator przypisania Jest czym innym niż konstruktor kopiujący! Domyślnie jest zdefiniowany jako przypisanie składowa po składowej (zatem niekoniecznie bajt po bajcie). Dla klasy X definiuje się jako X&
Bardziej szczegółowoNowe słowa kluczowe. Komentarze. Wskaźniki typu void. class, delete, new, friend,... /* Komentarz w C i C++ */ // Komentarz w C++ (do końca wiersza)
Różnice między C i C++ (Rozszerzenia C++) Nowe słowa kluczowe class, delete, new, friend,... Komentarze /* Komentarz w C i C++ */ // Komentarz w C++ (do końca wiersza) Wskaźniki typu void W C wskaźniki
Bardziej szczegółowoJĘ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ółowoAutomatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { zdefiniuje. Integer::operator=(ri);
Przeciążanie operatorów [] Przykład: klasa reprezentująca typ tablicowy. Obiekt ma reprezentować tablicę, do której można się odwoływać intuicyjnie, np. Tab[i] Ma być też dostępnych kilka innych metod
Bardziej szczegółowoDefiniowanie 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ółowoProgramowanie 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ółowoWstę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ółowoProgramowanie 2. Język C++. Wykład 3.
3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane
Bardziej szczegółowoEGZAMIN 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ółowoProgramowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.
Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 7 Przegląd typów strukturalnych - klasy i obiekty - c.d. Klasa - powtórzenie
Bardziej szczegółowoRóżne właściwości. Różne właściwości. Różne właściwości. C++ - klasy. C++ - klasy C++ - KLASY
Różne właściwości Funkcje tak samo jak zmienne mają swoje miejsce w pamięci, gdzie są zapisane. Można więc uzyskać ich adres. Podobnie jak adres tablicy jest zwracany przez jej nazwę, podaną bez nawiasu
Bardziej szczegółowoC++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.
C++ - DZIEDZICZENIE Do najważniejszych cech języka C++ należy możliwość wielokrotnego wykorzystywania kodu Prymitywnym, ale skutecznym sposobem jest kompozycja: deklarowanie obiektów wewnątrz innych klas,
Bardziej szczegółowoProgramowanie strukturalne i obiektowe. Funkcje
Funkcje Często w programach spotykamy się z sytuacją, kiedy chcemy wykonać określoną czynność kilka razy np. dodać dwie liczby w trzech miejscach w programie. Oczywiście moglibyśmy to zrobić pisząc trzy
Bardziej szczegółowoTypy metod: konstruktory, destruktory, selektory, zapytania, iteratory.
Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory. Konstruktory Konstruktory w językach obiektowych są to specjalne metody wywoływane podczas tworzenia nowego obiektu i służące do
Bardziej szczegółowoPodstawy Programowania Obiektowego
Podstawy Programowania Obiektowego. Spotkanie 07 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Pojęcie funkcji operatorowej Definicja funkcji operatorowej w klasie Definicja funkcji operatorowej poza klasą
Bardziej szczegółowoSzablony funkcji i klas (templates)
Instrukcja laboratoryjna nr 3 Programowanie w języku C 2 (C++ poziom zaawansowany) Szablony funkcji i klas (templates) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp
Bardziej szczegółowoPROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec
PROE wykład 3 klasa string, przeciążanie funkcji, operatory dr inż. Jacek Naruniec Przypomnienie z ostatnich wykładów Konstruktory/destruktory i kolejność ich wywołania w złożonej klasie. Referencja Obiekty
Bardziej szczegółowoWyliczanie 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ółowoJęzyki i metody programowania Java. Wykład 2 (część 2)
Języki i metody programowania Java INF302W Wykład 2 (część 2) Autor Dr inż. Zofia Kruczkiewicz 1 Struktura wykładu 1. Identyfikacja danych reprezentowanych przez klasy podczas opracowania koncepcji prostego
Bardziej szczegółowoProgramowanie 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ółowoZaawansowane programowanie w języku C++ Programowanie obiektowe
Zaawansowane programowanie w języku C++ Programowanie obiektowe Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
Bardziej szczegółowoProgramowanie obiektowe - 1.
Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która
Bardziej szczegółowoZmienne, 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ółowoProgramowanie Obiektowe i C++
Programowanie Obiektowe i C++ Marcin Benke Instytut Informatyki UW 6.11.2006 Marcin Benke (IIUW) Programowanie Obiektowe i C++ 6.11.2006 1 / 138 Operator przypisania Jest czym innym niż konstruktor kopiujacy!
Bardziej szczegółowoSkładnia C++ Programowanie Obiektowe Mateusz Cicheński
Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Konstruktory i destruktory
Bardziej szczegółowoInstytut 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ółowoProgramowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006)
Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006) Część 1. Teoria Wyjaśnij pojęcia, podaj przykład: klasa obiekt konstruktor destruktor kapsułkowanie (hermetyzacja) wskaźnik this
Bardziej szczegółowoDefinicje klas i obiektów. Tomasz Borzyszkowski
Definicje klas i obiektów Tomasz Borzyszkowski Podstawy Do tej pory używaliśmy klas jedynie po to, by zdefiniować metodę main(). Klasy mają znacznie szersze zastosowanie w Java. W OOP (także w Java) klasy
Bardziej szczegółowoInstrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji
Politechnika Białostocka Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej Instrukcja do pracowni specjalistycznej z przedmiotu Obiektowe programowanie aplikacji Kod przedmiotu: TS1C410201
Bardziej szczegółowoPola 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ółowoISO/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ółowoWprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class).
Wprowadzenie w dziedziczenie Klasa D dziedziczy klasę B: B klasa bazowa D klasa pochodna Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class). Najpierw jest tworzona klasa bazowa,
Bardziej szczegółowoAutomatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {
Przeciążanie a dziedziczenie class Integer2: public Integer Operatory, z wyjątkiem operatora przypisania są automatycznie dziedziczone w klasach pochodnych. Integer2(int i): Integer(i) Automatyczne tworzenie
Bardziej szczegółowoMechanizm dziedziczenia
Mechanizm dziedziczenia Programowanie obiektowe jako realizacja koncepcji ponownego wykorzystania kodu Jak przebiega proces dziedziczenia? Weryfikacja formalna poprawności dziedziczenia Realizacja dziedziczenia
Bardziej szczegółowo> C++ dziedziczenie. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki
> C++ dziedziczenie Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 1432108800 > Dziedziczenie Dziedziczenie C++ dziedziczenie 2 / 13 > Dziedziczenie Dziedziczenie * to
Bardziej szczegółowoInformatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki
Informatyka I Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Dziedziczenie klas
Bardziej szczegółowoAutomatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {
Przeciążanie operatorów [] Przykład: klasa reprezentująca typ tablicowy. Obiekt ma reprezentować tablicę, do której można się odwoływać intuicyjnie, np. Tab[i] Ma być też dostępnych kilka innych metod
Bardziej szczegółowoC++ - 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ółowodr inż. Jarosław Forenc
Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013 Wykład nr 6 (07.12.2012) dr inż. Jarosław Forenc Rok
Bardziej szczegółowo