FUNKCJE WZORCOWE. Wykład 10. Programowanie Obiektowe (język C++) Funkcje wzorcowe wprowadzenie (2) Funkcje wzorcowe wprowadzenie (1)
|
|
- Łukasz Kaczmarczyk
- 8 lat temu
- Przeglądów:
Transkrypt
1 Programowanie Obiektowe (język C++) Wykład 10. FUNKCJE WZORCOWE Funkcje wzorcowe wprowadzenie (1) Funkcje wzorcowe wprowadzenie (2) int max ( int a, int b ) return a>b? a : b; Aby mieć analogiczną funkcję działającą na danych typu double w jęz. C musimy wprowadzić dla niej odrębny identyfikator: double d_max ( double a, double b ) return a>b? a : b; W jęz. C++ mamy moŝliwość przeciąŝania identyfikatorów funkcji, więc moŝemy uŝyć tej samej nazwy: double max ( double a, double b ) return a>b? a : b; W obu językach C i C++ moŝemy się posłuŝyć w tej sytuacji, jako pewnego rodzaju alternatywą, tzw. makrodefinicją: #define MAX(a,b) (((a)>(b))? (a) : (b)) co daje nam moŝliwość posługiwania się wyraŝeniami przypominającymi wywołania 2-argumentowej funkcji o tej samej nazwie dla argumentów róŝnych typów: int i, j, k; double A, B, C;. k = MAX(2*i+5, j+i); C = MAX(3.4+A, 7*B); Ale wiąŝe się to z szeregiem niedogodności i pułapek
2 Funkcje wzorcowe (1) W języku C++ moŝemy się posłuŝyć konstrukcją wzorca (szablonu) funkcji: template < class TYPE > TYPE max (TYPE a, TYPE b ) return a>b? a : b; gdzie TYPE moŝe być typem wbudowanym lub definiowanym w programie. <class TYPE> nazywa się tu opisem parametru wzorca. Mając tak zdefiniowany szablon, moŝe go wykorzystać do konkretyzacji funkcji przyjmujących argumenty potrzebnych typów, n.p.: int main ( ) int i, j, k; double A, B, C; k = max( i, j + 5 ); // skonkretyzuje int max ( int, int ); C = max( A, B ); // skonkretyzuje double max ( double, double ); A = max ( B, 10 ); // BŁĄD! konieczna ścisła zgodność typów Funkcje wzorcowe (2) 1. Wzorzec funkcji moŝe mieć więcej parametrów (ale nie mniej niŝ jeden!). 2. KaŜdy opis parametru wzorca składa się ze słowa kluczowego class ( lub typename ) oraz wybranego identyfikatora ( nazwy parametru ). 3. Na liście parametrów wzorca kaŝdy identyfikator moŝe wystąpić tylko raz. 4. Parametr wzorca staje się specyfikatorem typu, którego moŝna uŝywać w pozostałej części definicji funkcji wzorcowej ( n.p. w deklaracjach zmiennych lokalnych, operacjach rzutowania e.t.c. ) 5. KaŜdy parametr wzorca musi wystąpić co najmniej jeden raz w sygnaturze funkcji wzorcowej. Wychodząc od definicji funkcji: Funkcje wzorcowe (3) double Summa ( double tab[ ], int size ) double sum = 0; for ( int i = 0; i < size; i++ ) sum += tab[ i ]; return sum; MoŜemy łatwo utworzyć jednoparametrowy wzorzec: template < class T > T Summa ( T tab[ ], int size ) T sum = 0; for ( int i = 0; i < size; i++ ) sum += tab[ i ]; return sum; Funkcje wzorcowe (4) Wychodząc od definicji tej samej funkcji: double Summa ( double tab[ ], int size ) double sum = 0; for ( int i = 0; i < size; i++ ) sum += tab[ i ]; return sum; MoŜemy równie łatwo utworzyć wzorzec dwuparametrowy: template < class T, class S > T Summa ( T tab[ ], S size ) T sum = 0; for ( S i = 0; i < size; i++ ) sum += tab[ i ]; return sum;
3 Funkcje wzorcowe (5) RozróŜnianie przeciąŝonych funkcji wzorca i innych funkcji o tej samej nazwie jest realizowane wg schematu: 1. JeŜeli istnieje funkcja o deskryptorze dokładnie pasującym do wywołania, to ją wywołaj. 2. JeŜeli istnieje wzorzec pozwalający zrealizować (skonkretyzować) funkcję o dokładnie pasującym deskryptorze, to uŝyj tego wzorca. 3. JeŜeli istnieje funkcja przeciąŝona, którą moŝna dopasować wg zwykłych reguł (tzn. z zastosowaniem konwersji), to jej uŝyj. 4. JeŜeli Ŝadnego z punktów 1., 2., 3. nie dało się zastosować, to wywołanie zostanie uznane za błędne. Rozpatrzmy przykład: template < class T > T max ( T a, T b ) return a>b? a : b; void test ( ) int a, b; char c, d; Funkcje wzorcowe (6) //int A = max( a, c ); // BŁĄD! nie moŝna wygenerować int max(int,char); int B = max( a, b ); // int max(int, int); - niejawne utworzenie egzemplarza char C = max( c, d ); // char max(char,char); niejawne utworzenie egz. int D = max( c, d ); // char max(char, char); typ zwracanej wartości nie // nie naleŝy do deskryptora Funkcje wzorcowe (7) Funkcje wzorcowe (8) Ale: template < class T > T max ( T a, T b ) return a>b? a : b; int max ( int, int ); void test ( ) int a, b; char c, d; // deklaracja funkcji (być moŝe zewnętrznej) int A = max( a, c ); // O.K.! uŝyte będzie int max(int,int); // zgodnie z regułą 3. Inne moŝliwości: template < class T > T max ( T a, T b ) return a>b? a : b; template int max ( int, int ); template< > char max ( char a, char b ) return a>b? a : 0; // wymuszone (jawne) utworzenie egzemplarza // (tylko w zasięgu definicji szablonu) // dostarczenie szczególnej definicji egzemplarza! // (tylko w zasięgu definicji szablonu)
4 Klasy wzorcowe - wprowadzenie (1) W język C++ moŝemy się posłuŝyć równieŝ konstrukcją wzorca (szablonu) klasy. Podobnie jak w przypadku wzorców funkcji najprościej jest przyjąć za punkt wyjścia jakąś konkretną klasę (dobrze wcześniej sprawdzoną w praktyce). #define CSTACKSIZE 100 WZORCE KLAS ( SZABLONY KLAS ) class CharStack char tab [ CSTACKSIZE ]; int size, top; CharStack ( ) size = CSTACKSIZE; top = 0; void Push ( char e ) tab [ top++ ] = e; char Pop ( ) return tab [ --top ]; char Top ( ) return tab [ top - 1 ]; int Size ( ) const return size; int Used ( ) const return top; int Place ( ) const return size - top; void Display ( ) const cout << endl; for ( int i = 0; i < top; ++i ) cout << tab [ i ] << " "; Przy okazji (1) ZauwaŜmy, Ŝe dotychczas w definicji klasy podawaliśmy zwykle jedynie deklaracje metod. Ich definicje umieszczaliśmy na zewnątrz, najczęściej w tzw. pliku implementacyjnym. Tym razem definicje metod zostały podane od razu w definicji klasy. Jaka róŝnica? 1. Metoda definiowana w ciele definicji klasy otrzymuje domyślnie atrybut inline. Metody (i zwykłe funcje) z takim atrybutem nie mają jednokrotnie wygenerowanego kodu o określonym adresie, który jest uruchamiany przy kaŝdym odwołaniu do metody (funkcji). Zamiast tego kompilator moŝe (ale nie musi!) generować kod metody (funkcji) w kaŝdym miejscu jej wywołania. MoŜe to dać zysk na czasie wykonania programu, chociaŝ zwykle zwiększa jego objętość. UWAGA: Funkcja z atrybutem inline nazywa się teŝ funkcją rozwijalną albo funkcją otwartą Przy okazji (2) 2. Atrybut inline moŝe być podany jawnie a treść metody na zewnątrz definicji klasy, ale wtedy naleŝy ją podać w pliku header'owym (.h) klasy, a nie w pliku implementacyjnym. Wynika to z faktu, Ŝe treść takiej metody potrzebna jest kompilatorowi w kaŝdym miejscu jej wywołania. 3. UŜycie odrębnego (niezaleŝnie kompilowanego) pliku zawierającego definicje metod ( posiadających atrybut extern ) pozwala ukryć szczegóły implementacyjne. UŜytkownik naszej klasy będzie korzystał tylko z pliku nagłówkowego w postaci źródłowej (.h) i skompilowanego pliku zawierającego kod metod (.obj). A więc np. wcale nie musi wiedzieć, jaki algorytm zastosowaliśmy do realizacji konkretnych obliczeń numerycznych
5 Przy okazji (3) // charstack.h class CharStack void Push ( char e ) tab [ top++ ] = e; inline char Pop ( ); char Top ( ) const; inline char CharStack :: Pop ( ) return tab [ --top ];..... end of charstack.h // charstack.cpp char CharStack :: Top ( ) const return tab [ top - 1 ]; W powyŝszym przykładzie metody: Push i Pop mają atybut inline ( Push domyślnie, Pop jawnie ) metoda Top ma atrybut extern. Klasy wzorcowe - wprowadzenie (2) Poszukajmy 'kandydatów' na parametry. Zaznaczyłem je na kolorowo. Oczywiście nie wszystkie moŝliwości musimy wykorzystać. #define CSTACKSIZE 100 class CharStack char tab [ CSTACKSIZE ]; int size, top; CharStack ( ) size = CSTACKSIZE; top = 0; void Push ( char e ) tab [ top++ ] = e; char Pop ( ) return tab [ --top ]; char Top ( ) return tab [ top - 1 ]; int Size ( ) const return size; int Used ( ) const return top; int Place ( ) const return size top; void Display ( ) const cout << endl; for ( int i = 0; i < top; ++i ) cout << tab [ i ] << " "; A tak moŝe wyglądać nasz szablon: #define STACKSIZE 100 Klasy wzorcowe (1) T tab [ S ]; int size, top; Stack ( ) size = S; top = 0; void Push ( T e ) tab [ top++ ] = e; T Pop ( ) return tab [ --top ]; T Top ( ) return tab [ top - 1 ]; int Size ( ) const return size; int Used ( ) const return top; int Place ( ) const return size - top; void Display ( ) const cout << endl; for ( int i = 0; i < top; ++i ) cout << tab [ i ] << " "; #undef STACKSIZE I funkcja main: Klasy wzorcowe (2) int main ( ) const int k = 10; Stack<> S0; Stack<int> S1, S2; Stack<int,10> S3; Stack<double> S4; Stack<double,55> S5; Stack<double,k+5> S6; Stack<double,k+45> S7; cout << endl << S0.Size() << endl << S1.Size() << endl << S3.Size(); cout << endl << S4.Size() << endl << S5.Size() << endl << S6.Size(); S1.Push(10); S1.Push(11); S1.Push(12); S1.Push(13); S1.Push(14); S1.Display(); S2 = S1; S1.Pop(); S1.Pop(); S1.Display(); S2.Display(); //S3 = S1; // BŁĄD! //S4 = S1; // BŁĄD! ale S7 = S5; O.K. while ( S1.Place() && S2.Used() ) S1.Push( S2.Pop() ); S1.Display();
6 Klasy wzorcowe (3) Program wyświetli (po zakomentowaniu wierszy z błędami): Klasy wzorcowe (4) CharStack St; // obiekt St jest typu CharStack Stack<> S0; // obiekt S0 jest typu Stack<char, 100> Stack<int> S1, S2; // obiekty S1 i S2 są typu Stack<int, 100> Stack<int,10> S3; // obiekt S3 jest typu Stack<int, 10> Stack<double> S4; // obiekt S4 jest typu Stack<double, 100> Stack<double,k+5> S6; // obiekt S6 jest typu Stack<double, 15> Stack<CMPLX> SC; // obiekt SC jest typu Stack<CMPLX, 100> Kusząca (niebezpieczna) alternatywa: Klasy wzorcowe (1a) T tab [ S ]; T *p; int size; Stack ( ) p = tab; size = S; void Push ( T e ) *p++ = e; T Pop ( ) return *--p; T Top ( ) return *(p 1); int Size ( ) const return size; int Used ( ) const return p tab; int Place ( ) const return size (p tab); void Display ( ) const T *r = tab; while ( r < p ) cout << *r++ << " "; Na czym polega niebezpieczeństwo i jak mu zaradzić? Klasy wzorcowe (5) 1. Wzorzec klasy moŝe mieć więcej parametrów (ale nie mniej niŝ jeden!). 2. Opis parametru wzorca składa się ze słowa kluczowego class (ew. typename) lub nazwy typu wbudowanego oraz wybranego identyfikatora (nazwy parametru). Dla parametrów moŝna określać wartości domyślne. 3. Na liście parametrów wzorca kaŝdy parametr moŝe wystąpić tylko raz. 4. Parametr wzorca poprzedzony słowem kluczowym class (ew. typename) staje się specyfikatorem typu, którego moŝna uŝywać w pozostałej części definicji klasy wzorcowej (n.p. w deklaracjach pól, specyfikacjach parametrów metod et c.). 5. Parametr wzorca poprzedzony nazwą typu wbudowanego staje się stałą, której moŝna uŝywać np. do zapisu rozmiarów tablic, inicjowania wartości zmiennych et c
7 Klasy wzorcowe (6) Zobaczmy inny wariant zapisu szablonu. // stack.h #include <iostream> using namespace std; #define STACKSIZE 1000 void Display ( ) const; Klasy wzorcowe (7) W dalszym ciągu pliku stack.h podajemy szablony metod: Stack< T, S > :: Stack ( ) p = q = tab; size = S; Stack< T, S >& Stack< T, S > :: operator= ( const Stack& rhs ) p = q; for ( T* r = rhs.q; r < rhs.p; *p++ = *r++ ); return *this; void Stack< T, S > :: Push ( T e ) *p++ = e; T Stack< T,S > :: Pop ( ) return *--p; T Stack< T, S > :: Top ( ) const return *(p - 1); int Stack< T, S > :: Size ( ) const return size; i dalej w pliku stack.h: Klasy wzorcowe (8) int Stack< T, S > :: Used ( ) const return p - q; int Stack< T, S > :: Place ( ) const return size - (p - q); void Stack< T, S > :: Display ( ) const T* r = q; while ( r < p ) cout << *r++ << " "; funkcje zaprzyjaźnione we wzorcach klas #undef STACKSIZE UWAGA! UWAGA! To wszystko powinno być podane w pliku stack.h. Dla klas wzorcowych nie tworzymy odrębnych plików implementacyjnych *.cpp
8 Klasy wzorcowe (6) W rozpatrywanym wcześniej wzorcu klasy void Display ( ) const; chcemy zastąpić metodę Display zaprzyjaźnionym operatorem <<. Wzorce i friend (1) Próba zrealizowania tego zadania w następujący sposób: friend ostream& operator << (ostream&, const Stack<T,S>&); template < class T, int S> ostream& operator << (ostream& out, const Stack<T,S>& st) T* r = st.q; while ( r < st.p ) cout << *r++ << " "; return out; nie da oczekiwanego efektu. Operator << nie zostanie wygenerowany. Poprawny efekt otrzymamy pisząc: Wzorce i friend (2) template < class Q, int R> friend ostream& operator << (ostream&, const Stack<Q,R>&); template < class T, int S> ostream& operator << (ostream& out, const Stack<T,S>& st) T* r = st.q; while ( r < st.p ) out << *r++ << " "; return out; a nawet: Wzorce i friend (3) template < class Q, int R> friend ostream& operator << (ostream&, const Stack&); template < class T, int S> ostream& operator << (ostream& out, const Stack<T,S>& st) T* r = st.q; while ( r < st.p ) out << *r++ << " "; return out;
9 Jeszcze innym rozwiązaniem jest: Wzorce i friend (4) friend ostream& operator << (ostream& out, const Stack& st) T* r = st.q; while ( r < st.p ) out << *r++ << " "; return out; Koniec wykładu
Szablony funkcji i szablony klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument
Bardziej szczegółoworeferencje 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ółowoPrzekazywanie argumentów wskaźniki
Przekazywanie argumentów wskaźniki klasyczne wywołanie wyliczenie i zwrotne przekazanie tylko jednej wielkości moŝliwość uŝycia zmiennych globalnych niebezpieczeństwa z tym związane wyjście wywołanie funkcji
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 4 Funkcje przeciażone - Idea Przeciażanie funkcji (polimorfizm funkcji), to kolejna nowość w języku
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ółowoWprowadzenie do szablonów szablony funkcji
Wprowadzenie do szablonów szablony funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do
Bardziej szczegółowoWprowadzenie do szablonów szablony funkcji
Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
Bardziej szczegółowoAbstrakcyjny typ danych
Abstrakcyjny typ danych Abstrakcyjny Typ Danych (abstract data type-adt): zbiór wartości wraz z powiązanymi z nimi operacjami; operacje są zdefiniowane w sposób niezależny od implementacji; operacje są
Bardziej szczegółowoStos liczb całkowitych
Stos liczb całkowitych class StosInt int* tab; unsigned size ; StosInt(unsigned s=10) tab=new int[size=s];top=0; ~StosInt()delete[] tab; void push(int i)tab[top++]=i; int pop(void) return tab[--top]; int
Bardziej szczegółowoWstęp do programowania
wykład 10 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Przesyłanie argumentów - cd Przesyłanie argumentów do funkcji - tablice wielowymiarowe Przekazywanie tablic wielowymiarowych
Bardziej szczegół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ół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 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ółowoWykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:
Program przedmiotu Programowanie Obiektowe (język C++) Wykład 1. Definiowanie prostych klas. Przykłady. Przypomnienie: typy referencyjne, domyślne wartości argumentów, przeciąŝanie funkcji. Konstruktory,
Bardziej szczegółowoDariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki int getmax (int a, int b) { return (a > b? a : b); float getmax (float a, float b) { return (a > b? a : b); long getmax (long a, long b)
Bardziej szczegółowoSzablony. Szablony funkcji
Szablony Szablony sa mechanizmem ponownego wykorzystania kodu (reuse) W przypadku funkcji ponownie wykorzystany jest algorytm W przypadku klas ponownie wykorzystane sa wszystkie skladowe Deklaracja szablonu
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ół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ółowoProgramowanie - wykład 4
Programowanie - wykład 4 Filip Sośnicki Wydział Fizyki Uniwersytet Warszawski 20.03.2019 Przypomnienie Prosty program liczący i wyświeltający wartość silni dla wprowadzonej z klawiatury liczby: 1 # include
Bardziej szczegółowoKurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016
Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa
Bardziej szczegółowoProgramowanie i struktury danych
Programowanie i struktury danych 1 / 30 STL Standard Template Library, STL (ang. = Standardowa Biblioteka Wzorców) biblioteka C++ zawierająca szablony (wzorce), które umożliwiają wielokrotne użycie. Główne
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ółowoTEMAT : KLASY DZIEDZICZENIE
TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą
Bardziej szczegółowoWzorce funkcji (szablony)
Wzorce funkcji (szablony) Wzorce funkcji (ang. function template) dają możliwość wielokrotnego wykorzystywania tego samego kodu funkcji dla różnych typów danych. Załóżmy, że chcemy zdefiniować funkcję
Bardziej szczegół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ółowoJęzyk C++ wykład VIII
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,
Bardziej szczegół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ółowoSzablon klasy std::vector
Szablon klasy std::vector Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat
Bardziej szczegółowoProgramowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 5 Katarzyna Grzelak 16 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły
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 5. C++: szablony
Programowanie obiektowe Wykład 5. C++: szablony Szablony Szablony to technika realizacji polimorfizmu na innym poziomie niż za pomocą funkcji wirtualnych i dziedziczenia. Mechanizm ten można rozumieć jako
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ół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ółowoCo nie powinno być umieszczane w plikach nagłówkowych:
Zawartość plików nagłówkowych (*.h) : #include #define ESC 27 dyrektywy dołączenia definicje stałych #define MAX(x,y) ((x)>(y)?(x):(y)) definicje makr int menu(char* tab[], int ilosc); struct
Bardziej szczegółowoInformatyka 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ółowoGlobalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)
Podstawy programowania (język C) Globalne / Lokalne Wykład 15. Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Zmienne globalne / lokalne (1) int A, *Q; // definicja zmiennych globalnych
Bardziej szczegółowoProgramowanie 2. Język C++. Wykład 2.
2.1 Definicja, deklaracja, wywołanie funkcji.... 1 2.2 Funkcje inline... 4 2.3 Przekazanie do argumentu funkcji wartości, adresu zmiennej.... 5 2.4 Wskaźniki do funkcji... 8 2.5 Przeładowanie funkcji...
Bardziej szczegółowoProgram 6. Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje:
Program 6 Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje: Funkcja pobierz_osobe wczytuje dane osoby podanej jako argument. Funkcja wypisz_osobe
Bardziej szczegółowoZaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce
Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
Bardziej szczegółowoJęzyk C++ część 9 szablony klas. Jarosław Gramacki Instytut Informatyki i Elektroniki. szablony funkcji
Język C++ część 9 szablony klas Jarosław Gramacki Instytut Informatyki i Elektroniki szablony funkcji były omawiane na wcześniejszym wykładzie nazewnictwo: szablon funkcji wzorzec funkcji 2 szablony
Bardziej szczegółowoPodczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.
Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.
Bardziej szczegółowoPodstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Bardziej szczegółowoWstę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ółowoJzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )
Jzyk C++ cz 3 Jarosław Gramacki Instytut Informatyki i Elektroniki # $$%%& ' ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )!" 2 # $$%%& ' ( $%%/,))3 ( %* 2 / 4 ( ( *' *''*,
Bardziej szczegółowoTechniki Programowania wskaźniki
Techniki Programowania wskaźniki Łukasz Madej Katedra Informatyki Stosowanej i Modelowania Wykłady opracowane we współpracy z Danutą Szeligą, Łukaszem Sztangretem Wskaźniki Dla typu T zapis T* oznacza
Bardziej szczegół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ółowoProgramowanie w języku C++
Programowanie w języku C++ Część dziewiąta Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi
Bardziej szczegół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ółowoProgramowanie 2. Język C++. Wykład 9.
9.1 Ukrywanie metod, metody nadpisane... 1 9.2 Metody wirtualne, wirtualny destruktor... 2 9.3 Metody czysto wirtualne... 6 9.4 Klasy abstrakcyjne... 7 9.5 Wielodziedziczenie... 9 9.1 Ukrywanie metod,
Bardziej szczegółowoKurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016
Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac
Bardziej szczegół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ółowoPola i metody statyczne
Pola i metody statyczne Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2009 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania
Bardziej szczegółowoXVII. Funkcje w C++ 17.1. Ogólna budowa funkcji. 17.2. Definicja funkcji. 17.2.1. Co waŝnego powinniśmy wiedzieć o funkcjach
XVII. Funkcje w C++ 17.1. Ogólna budowa funkcji Do tej pory miałeś okazję niejednokrotnie wykorzystywać istniejące funkcje we własnych programach. Jak zapewne zauwaŝyłeś, wykorzystywanie funkcji jest bardzo
Bardziej szczegółowoWprowadzenie do szablonów klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2008-2010 Bogdan Kreczmer Niniejszy
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ół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ół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ół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ółowoZaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 6 - szablony. dr inż. Robert Nowak - p. 1/15 Kolekcje i algorytmy» Deklaracja szablonu y Pojęcia niezależne od typu: kolekcje (np. listy) algorytmy (np. znajdowania
Bardziej szczegółowoOperacje wejścia/wyjścia odsłona pierwsza
Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
Bardziej szczegółowoWskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:
Wskaźniki są nieodłącznym elementem języka C. W języku C++ także są przydatne i korzystanie z nich ułatwia pracę, jednak w odróżnieniu do C wiele rzeczy da się osiągnąć bez ich użycia. Poprawne operowanie
Bardziej szczegółowoParadygmaty programowania. Paradygmaty programowania
Paradygmaty programowania Paradygmaty programowania Dr inż. Andrzej Grosser Cz estochowa, 2013 2 Spis treści 1. Zadanie 2 5 1.1. Wprowadzenie.................................. 5 1.2. Wskazówki do zadania..............................
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ółowoProgram 14. #include <iostream> #include <ctime> using namespace std;
Program 14 Napisać: * funkcję słuŝącą do losowego wypełniania tablicy liczbami całkowitymi z podanego zakresu (*). Parametrami funkcji mają być tablica, jej długość oraz dwie liczby stanowiące krańce przedziału
Bardziej szczegółowoModelowanie numeryczne w fizyce atmosfery Ćwiczenia 3
Modelowanie numeryczne w fizyce atmosfery Sylwester Arabas (ćwiczenia do wykładu dr. hab. inż. Lecha Łobockiego) Instytut Geofizyki, Wydział Fizyki Uniwersytetu Warszawskiego 3. listopada 2011 r. Schemat
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ółowoWykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:
Program przedmiotu Programowanie (język C++) Wykład 1. Język C a C++. Definiowanie prostych klas. Typy referencyjne. Domyślne wartości argumentów. PrzeciąŜanie funkcji. Konstruktory, destruktory. Definiowanie
Bardziej szczegółowoXII. Warunek wielokrotnego wyboru switch... case
XII. Warunek wielokrotnego wyboru switch... case 12.1. Gdy mamy więcej niŝ dwie moŝliwości Do tej pory poznaliśmy warunek if... else... Po co nam kolejny? Trudno powiedzieć, ale na pewno nie po to, Ŝeby
Bardziej szczegółowo#include <iostream> using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; }
#include using namespace std; Prototypy funkcji Funkcja 1 void ela(int); double info (double); int main( ); return 0; Funkcja 2 void ela(int); Funkcja 3 double info(double); return 4*t; jeszcze
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ółowoKlasa, metody, rozwijanie w linii
Klasa, metody, rozwijanie w linii Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu
Bardziej szczegółowoATD. Wykład 8. Programowanie (język C++) abstrakcyjny typ danych. Abstrakcyjne typy danych (ATD) Metody czysto wirtualne. Definicje i uwagi:
Programowanie (język C++) Wykład 8. ATD abstrakcyjny typ danych Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Metody czysto wirtualne Metody czysto wirtualne otrzymujemy inicjalizując
Bardziej szczegółowofunkcje rekurencyjne Wykład 12. Podstawy programowania (język C) Funkcje rekurencyjne (1) Funkcje rekurencyjne (2)
Podstawy programowania (język C) funkcje rekurencyjne Wykład 12. Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Funkcje rekurencyjne (1) W języku C funkcja moŝe wywoływać samą siebie.
Bardziej szczegółowoKlasa, metody, rozwijanie w linii
Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
Bardziej szczegółowoKLASY cz.1. Dorota Pylak
KLASY cz.1 Dorota Pylak Do czego służą klasy? 2 W programowaniu obiektowym posługujemy się obiektami. Obiekty charakteryzują się: cechami (inaczej - atrybutami lub stanami) operacjami, które na nich można
Bardziej szczegółowoProgramowanie w języku C++
Programowanie w języku C++ Część siódma Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi
Bardziej szczegółowoProgramowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33
Programowanie w C++ Wykład 8 Katarzyna Grzelak 15 kwietnia 2019 K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe
Bardziej szczegółowoJęzyk C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,
Bardziej szczegół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
Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Krzysztof Lemay, Naughton Barteczko R. Cadenhead JAVA, Java Podręcznik 2 wykłady dla kaŝdego Języka i ćwiczenia Programowania
Bardziej szczegółowo1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami
1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami Celem tych zajęć jest zrozumienie i oswojenie z technikami programowania przy pomocy wskaźników w języku C++. Proszę przeczytać rozdział 8.
Bardziej szczegółowoPodstawy programowania w języku C++
Podstawy programowania w języku C++ Część siódma Przetwarzanie tablic znaków Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,
Bardziej szczegółowowykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i
Bardziej szczegół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ółowoPodstawy 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ół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ółowoProgramowanie w C++ - wybrane przykłady szablonów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ
programowanie w C++ dla OWK Programowanie w C++ - wybrane przykłady szablonów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ 1 Streszczenie W tym rozdziale podamy kilka najprostszych przykładów programów
Bardziej szczegółowoPODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne
Przykład 1 metody i atrybuty statyczne public class Napis1 { static String wynik; public static void Inicjuj() {wynik = ""; PODEJŚCIE OBIEKTOWE public static void Dopisz_do_wyniku(char ch) { wynik+="\nkod
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ółowoObsł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ółowoProgramowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31
Programowanie w C++ Wykład 8 Katarzyna Grzelak 7 maja 2018 K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31 STL - powtórzenie STL Standard Template Libarary standardowa biblioteka szablonów Składowe biblioteki:
Bardziej szczegółowo1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.
1. Pierwszy program // mój pierwszy program w C++ #include using namespace std; cout
Bardziej szczegółowoC-struktury wykład. Dorota Pylak
C-struktury wykład Dorota Pylak C-struktury W języku C++, jak w każdym języku obiektowym, mamy możliwość definiowania własnych typów danych, wraz z określeniem operacji, jakie na tych danych można wykonywać.
Bardziej szczegół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ółowoProgramowanie obiektowe i C++ dla matematyków
Programowanie obiektowe i C++ dla matematyków Bartosz Szreder szreder (at) mimuw... 10 I 2012 1 Zabronienie kopiowania Czasami nie ma sensu, żeby obiekty pewnego typu były kopiowane z innych obiektów.
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ół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ółowoJęzyki programowania obiektowego Nieobiektowe elementy języka C++
Języki programowania obiektowego Nieobiektowe elementy języka C++ Roman Simiński roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Przetwarzanie tablic znaków Łańcuchy znakowe jako tablice znaków
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ół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ółowo