Ściąga z JTP. (Ja Tjeba Pierd...) Uwagi, nowe pytania, poprawki itd. zgłaszać na forum mambo.
|
|
- Wojciech Tomczak
- 8 lat temu
- Przeglądów:
Transkrypt
1 Spis treści Ściąga z JTP (Ja Tjeba Pierd...) Uwagi, nowe pytania, poprawki itd. zgłaszać na forum mambo. Rzutowanie typów...1 Obiektówka i polimorfizm...2 Szablony...6 Wyjątki...8 STL i biblioteka standardowa...10 Modyfikatory...11 Kompilacja...12 Duperszmity...13 Rzutowanie typów Rodzaje rzutowań 1. Rzutowanie niejawne dokonuje się automatycznie, gdy próbujemy jakiejś zmiennej przypisać wartość innego typu: int foo = 5; float bar = foo; 2. Rzutowanie jawne wykonujemy samodzielnie za pomocą odpowiednich operatorów rzutowania i ręcznie określając typ. Rodzaje rzutowań jawnych 1. dynamic_cast Operuje wyłącznie na wskaźnikach i referencjach. W przypadku obiektów polimorficznych wykorzystuje RTTI do określenia ich typu i zdecydowania, czy mogą być one zrzutowane na wybrany typ. Jeśli nie, zwracany jest wskaźnik pusty NULL. Dla obiektów niepolimorficznych dynamic_cast zezwala na konwersję z klasy pochodnej do bazowej, ale nie na odwrót (błąd kompilacji). 2. static_cast Operuje na wskaźnikach, pozwala na rzutowanie między typami klas powiązanymi ze sobą, zarówno z klasy potomnej do bazowej, jak i na odwrót. Nie jest jednak wykonywane żadne dynamiczne sprawdzenie, czy rezultat takiego działania będzie mieć sens. static_cast może także pracować na zwykłych wartościach, udostępniając konwersję między typami podstawowymi (np. int i double). 3. reinterpret_cast Rzutuje dowolny typ wskaźnikowy na dowolny inny bez żadnego sprawdzania typów oraz poprawności. Nowy obiekt jest binarną kopią źródłowego. 4. const_cast pozwala zdjąć lub nałożyć parametr const na wybraną zmienną. Co oznacza skrót RTTI? Run-Time Type Information. Jest to technika polegająca na przechowywaniu w pamięci informacji o typach danych. Pozwala to sprawdzać typy podczas wykonywania programu. W C++ RTII jest niezbędne do działania operatora typeid oraz dynamic_cast. 1 z 13
2 Co robi typeid? Operator ten zwraca referencję do obiektu identyfikującego typ podanego za parametr wyrażenia. Można dzięki temu porównywać typy lub pobierać ich nazwę. Obiekt typeinfo zawarty jest w nagłówku typeinfo. #include <typeinfo> #include <iostream> int main() int *a, b; a = 0; b = 0; if(typeid(a)!= typeid(b)) cout << typeid(a).name() << ", " << typeid(b).name(); } } // end main(); Obiektówka i polimorfizm Funkcje/pola publiczne, prywatne i chronione... Różnią się w zależności od tego, skąd można się do nich odwołać: 1. Element publiczny dowolne miejsce kodu. 2. Element chroniony wyłącznie obiekty tej samej klasy oraz klas potomnych. 3. Element prywatny wyłącznie obiekty tej samej klasy. Dziedziczenie publiczne, prywatne i chronione... Zmienia widoczność elementów klasy bazowej według następujących zasad: 1. publiczne wszystkie elementy klasy bazowej zachowują oryginalną widoczność. 2. chronione elementy publiczne w klasie bazowej stają się chronionymi w pochodnej, reszta pozostaje bez zmian. 3. prywatne elementy publiczne i chronione w klasie bazowej stają się prywatne w klasie pochodnej, zatem nie są widoczne dla kolejnych klas, które dziedziczą po klasie pochodnej. Co to jest polimorfizm? Polimorfizm umożliwia zapamiętanie w obiektach informacji o tym, czym tak naprawdę są, dzięki czemu zachowują swoje oryginalne zachowania nawet po zrzutowaniu do klasy bazowej. Załóżmy, że klasa bazowa base posiada metodę foo(), a klasa pochodna derive przeciąża foo(). Tworzymy obiekt klasy derive, przypisujemy go do wskaźnika x typu base i wywołujemy spod niego metodę foo(). Co się stanie: 1. Bez polimorfizmu wywołana zostanie metoda foo() z klasy bazowej pomimo tego, że obiekt tak naprawdę jest klasy derive. Metoda została określona w momencie kompilacji na podstawie typu wskaźnika. 2 z 13
3 2. Z polimorfizmem wywołany zostanie wskaźnik do odpowiedniej metody przechowywany w tablicy metod wirtualnych obiektu. Jeżeli do x przypisaliśmy obiekt klasy derive, wywoła się przeciążona metoda. Jeżeli zaś obiekt klasy base, wtedy podstawowa. Czym są metody (funkcje) wirtualne? Są to metody poprzedzone słowem kluczowym virtual. Są realizacją polimorfizmu. Zadeklarowanie metody jako wirtualnej powoduje, że jej adres zostaje zapamiętany w tablicy metod wirtualnych, do której wskaźnik trafia do każdego obiektu tej klasy. Wywołując taką metodę nawet po zrzutowaniu obiektu do klasy nadrzędnej, zostanie wywołana "ta właściwa" wybór konkretnej metody następuje w momencie wykonania programu, a nie kompilacji, na podstawie tablicy metod wirtualnych. Czym się różni dziedziczenie zwykłe od wirtualnego? Różnice dotyczą dziedziczenia wielokrotnego. Załóżmy następującą sytuację: klasa D dziedziczy z B i C, a obie te klasy dziedziczą z klasy A. A B C Teraz: D 1. Przy dziedziczeniu zwykłym wszystkie elementy klasy A zostaną powielone dwukrotnie w klasie D, co prowadzi do niejednoznaczności. 2. Przy dziedziczeniu wirtualnym wszystkie elementy klasy A wystąpią w klasie D dokładnie jeden raz. Kiedy klasa powinna mieć destruktor wirtualny? Klasa powinna mieć destruktor wirtualny zawsze, gdy mamy w niej choć jedną metodę wirtualną. Czy i ew. kiedy można jawnie wywołać destruktor klasy? W sytuacji gdy korzystamy z "placement new" (umieszczanie obiektów w ściśle określonym miejscu pamięci), bierzemy całkowitą odpowiedzialność za zniszczenie stworzonych tak obiektów. Wtedy można, a nawet trzeba jawnie wywołać destruktor. W jakiej kolejności niszczone są obiekty? Obiekty są niszczone w odwrotnej kolejności do tej, jak były tworzone (tj. pierwszy utworzony = ostatni zniszczony). Analogiczna sytuacja dotyczy obiektów umieszczonych w tablicach. W jakiej kolejności wywoływane są destruktory obiektu? Kolejno od najwyżej położonej klasy pochodnej do klasy bazowej. Jeżeli jakaś klasa dziedziczy po kilku innych, ich destruktory wywoływane są w odwrotnej kolejności, niż zostały wymienione na liście dziedziczonych klas. 3 z 13
4 Jakie są własności funkcji/klas zaprzyjaźnionych? 1. Przyjaźń nie jest dziedziczona. 2. Przyjaźń nie jest przechodnia. Jeśli A jest przyjacielem B oraz B jest przyjacielem C, to A nie jest przyjacielem C, o ile nie zadeklarowaliśmy jawnie inaczej. 3. Przyjaźń nie jest zwrotna. To, że klasa A ma dostęp do prywatnych składowych B nie znaczy, że B ma dostęp do prywatnych składowych A. Jakich operatorów nie można przeciążać? Nieprzeciążalnymi operatorami są: 1.. (kropka) 2..* 3.?: 4. :: (operator zakresu) 5. sizeof Na czym polega const correctness? Polega na ochronie przed celową lub przypadkową zmianą obiektu przy pomocy słowa kluczowego "const". Argumenty typu const mogą być używane wyłącznie do odczytu kompilator zablokuje próbę wykonania na nich jakichkolwiek operacji modyfikujących wartość, w tym próbę wywołania metod obiektu, które taką zmianę powodują. Kiedy wskaźnik do obiektu klasy potomnej nie może być rzutowany do wskaźnika obiektu klasy bazowej? Gdy mamy wielokrotne dziedziczenie i ścieżka rzutowania jest niejednoznaczna: A A B C D Rozwiązanie (rzutujemy wskaźnik do d na wskaźnik do a): d obj; a *p = static_cast<d::b*>(&obj); Co to jest ADL, OL i czym się różnią? 1. OL Ordinary Lookup szukanie operatora w aktualnym kontekście. 2. ADL Argument Depending Lookup, Koeing Lookup poszukiwanie operatora w przestrzeni nazw, w której zadeklarowane są typy obu jego argumentów. 4 z 13
5 Rozwiń skrót VMTP. Virtual Method Table Pointer wskaźnik do tablicy metod wirtualnych używanej przy polimorfiźmie. Zawiera go każdy obiekt, w którym korzystamy z metod wirtualnych. Jak utworzyć klasę, z której nie można dziedziczyć? class Finalizer friend class A; private: Finalizer()} class A: public virtual Finalizer Jaki typ powinien zwracać przeciążony operator ->? Operator ten musi zwrócić wskaźnik lub obiekt klasy, który także ma przeciążony ten sam operator. Czy klasa zagnieżdżona ma dostęp do prywatnych składowych klasy zewn.? Tak. Poniższy kod nie powoduje żadnego błędu kompilacji: class foo public: class bar public: int xyz(foo &x) return x.foobar; } void setfoobar(int a) foobar = a; } private: int foobar; Czym się różni struktura (struct) od klasy (class)? W C++ jedyna różnica (oprócz słowa kluczowego) polega na tym, że jeżeli określiliśmy jakiś element składowy poza modyfikatorem dostępu (public, private, protected), to: 1. W klasie będzie on prywatny. 2. W strukturze będzie on publiczny. Poza tym struktury mogą posiadać metody, podlegają dziedziczeniu, możliwe jest także, 5 z 13
6 żeby struktura dziedziczyła po klasie i na odwrót. Jakie elementy klasy nie podlegają dziedziczeniu? 1. Konstruktory 2. Destruktory 3. Operator przypisania (=) Jak wygląda algorytm wyboru funkcji przeciążonej? 1. Dopasowanie dokładne: brak lub trywialne konwersje (T -> const T) 2. Dopasowanie z promocjami (całkowitymi lub zmiennoprzecinkowymi), np. bool -> int czy float -> double. 3. Dopasowanie ze standardowymi konwersjami (double -> int) 4. Dopasowanie z konwersjami zdefiniowanymi przez użytkownika (operatory konwersji, konstruktory konwertujące) 5. Dopasowanie do funkcji z dowolną ilością parametrów. Szablony Co to jest metaprogramowanie? Technika programowania umożliwiająca programom tworzenie/modyfikację kodu źródłowego innych programów lub ich samych. Jedną z implementacji jest metaprogramowanie z użyciem szablonów w C++. Co to jest programowanie uogólnione (generic programming)? Pozwala na pisanie kodu bez wcześniejszej znajomości typów danych, na których ten kod będzie pracować. W C++ realizowane przy pomocy szablonów. Opisz pojęcie klasy wytycznych (policy class). Klasa wytycznych mówi, w jaki sposób ma być realizowana obsługa elementarnego zadania w większej klasie X. Do klasy X przekazywana jest jako parametr szablonu. Przykład klasy parametryzowanej wytycznymi: template <class T, class Foo> class Bar: public Foo Możemy teraz sami decydować, po jakiej klasie ma dziedziczyć klasa Bar. Klasa, po której dziedziczymy, jest właśnie klasą wytycznych. Przykłady: alokatory w STL-u. Konkretyzacja na żądanie i konkretyzacja jawna. 1. Konkretyzacja jawna kompilator konkretyzuje od razu całą klasę w momencie, gdy będziemy chcieli jej użyć. 2. Konkretyzacja na żądanie kompilator konkretyzuje wyłącznie metody klasy, które 6 z 13
7 wykorzystujemy. W ten sposób można konkretyzować klasę typem, który nie spełnia wszystkich ograniczeń. Wszystko będzie w porządku, dopóki nie będziemy próbowali wykonać operacji odwołujących się do niespełnianych założeń. Aby poinformować kompilator, że chcemy mieć konkretyzację na żądanie, należy poprzedzić deklarację zmiennej słowem template: template foo<int> variable; Co to jest CRTP? Curiously Recurring Template Pattern idiom programowania uogólnionego. Dziedziczymy z klasy bazowej, której parametrem jest aktualnie definiowana klasa: template <class T> class Base class Derived: public Base<Derived> Co to jest polimorfizm statyczny? Jest to imitacja polimorfizmu wykonywana z użyciem szablonów. Polega na odpowiednim zrzutowaniu typów jeszcze w momencie kompilacji za pomocą schematu CRTP. Przykład: template <class Derived> struct base void interface() static_cast<derived*>(this)->implementation(); } struct derived : base<derived> void implementation(); Do czego służy słowo kluczowe typename? Służy do podpowiadania przy deklarowaniu pól klasy, że odwołujemy się do typu składowego innej klasy, a nie np. jej zmiennej statycznej. template <class T> class foo typename T::id x; public: void func() x.g(); } 7 z 13
8 class bar public: class id public: void g() } foo<bar> variable; variable.func(); W powyższym przypadku dzięki typename zaznaczyliśmy, że potrzebujemy klasy składowej id z typu przekazanego parametrem T. Bez tego słowa powstałby w tamtym miejscu błąd kompilacji. typename może być też używany w obrębie deklaracji szablonu zamiast słowa kluczowego class: template <typename T> Opisz pojęcie klasy cech (traits). Klasa cech dostarcza dodatkowych informacji o używanym typie: typy stowarzyszone, ograniczenia, dostępne operacje. Przekazywujemy ją przez parametry szablonu. Co to jest koncept? Odpowiednik interfejsu z programowania obiektowego dla programowania uogólnionego. Koncept określa podstawowe warunki jakie musi spełniać typ, aby mógł być zaliczonym do odpowiedniej kategorii. Jak wygląda algorytm rozstrzygania przeciążenia szablonów funkcji? 1. Tworzenie zbiorów specjalizacji. 2. Do dalszych rozważań wybierane są funkcje bardziej specjalizowane (lepiej pasujące do wywołania). 3. Rozstrzyganie przeciążenia na zbiorze specjalizacji i funkcji przeciążonych. 4. Jeśli funkcja i specjalizacja są jednakowo dobre, wybierana jest funkcja. Wyjątki Kiedy wyjątek będzie złapany? try throw Thrown; } catch(caught) } 1. Gdy Thrown I Caught są tego samego typu. 8 z 13
9 2. Gdy Caught jest jednoznaczną klasą bazową Thrown. 3. Gdy Caught i Thrown są wskaźnikami do typów spełniających warunek 1 albo Gdy Caught i Thrown są referencjami do typów spełniających warunek 1 albo 2. Jakiej konstrukcji używamy do łapania wszystkich wyjątków? try } catch(...) // wszystko idzie tutaj. } Kiedy wołana jest funkcja unexpected()? Gdy funkcja rzuci wyjątek, którego nie złapiemy i którego nie miała wyszczególnionego na liście wyjątków. Jakie są standardowe wyjątki C++? 1. exception podstawowa klasa wyjątku 2. bad_alloc rzucany przez operator new w przypadku niepowodzenia. 3. bad_cast rzucany przez dynamic_cast. 4. bad_exception rzucany, gdy wyjątek nie pasuje do żadnego bloku catch. 5. bad_typeid rzucany przez typeid. 6. ios_base::failure rzucany przez bibliotekę iostream. Jak powiadomić kompilator o tym, jakie wyjątki może wygenerować funkcja? Po liście parametrów podajemy słowo kluczowe throw i wymieniamy w nawiasie dozwolone typy wyjątków: void foo(char bar) throw(int); Jak powiadomić kompilator, że funkcja nie może rzucać żadnych wyjątków? Po liście parametrów podajemy słowo kluczowe throw z pustymi nawiasami: void foo(char bar) throw(); Jak przekazać wyjątek do obsługi nadrzędnemu blokowi try...catch? W bloku catch umieszczamy słowo kluczowe throw bez żadnych parametrów: try } catch(foo &x) throw; 9 z 13
10 } STL i biblioteka standardowa Co to jest kontener? Kontener służy do przechowywania w pewien uporządkowany sposób kolekcji obiektów tego samego typu. Rodzaje kontenerów: 1. Sekwencyjne (vector, list, deque) nie mogą być zaimplementowane za pomocą innych kontenerów bez straty efektywności. 2. Asocjacyjne (map, multimap) implementacje bazujące na drzewach. 3. Uporządkowane (set, multiset) odmiana kontenerów asocjacyjnych. 4. Adaptery (stack, queue, priority_queue) - bazują na innych kontenerach, wprowadzając ograniczenia dostępowe 5. Specjalne (string, bitset, valarray) Co to jest alokator? Alokator to klasa wytycznych zajmująca się zarządzaniem pamięcią w kontenerach. Co to jest funktor? Inaczej obiekt funkcyjny z przeciążonym operatorem funkcji (). Używany jest do parametryzowania algorytmów i przycinania ich do naszych potrzeb. Przykładowe funktory: plus, minus, negate Co to jest iterator? Iterator jest jest uogólnieniem wskaźnika; jest to obiekt służący do wskazywania na inny obiekt, a także do przemieszczania się po sekwencji obiektów. Wymień koncepty iteratorów. 1. TrivialIterator wskaźnik bez iteracji. 2. OutputIterator taśma wyjściowa: inkrementacja i dereferencjacja do l-wartości. Porównywalny. 3. InputIterator taśma wejściowa: inkrementacja i dereferencjacja do r-wartości. Porównywalny. 4. ForwardIterator połączenie InputIterator oraz OutputIterator. 5. BidirectionalIterator ForwardIterator z dekrementacją. 6. RandomAccessIterator BidirectionalIterator z operacjami dodawania/odejmowania. Porównywalny, także za pomocą operatorów relacji (mniejszy, większy). Wymień adaptery iteratorów. 1. front_insert_iterator 2. back_insert_iterator 10 z 13
11 3. insert_iterator Jakie są założenia algorytmów w STL? Algorytmy te mają charakter ogólny nie są pisane z myślą o konkretnej strukturze danych. Operują na sekwencjach elementów wyznaczonych przez parę iteratorów, z których pierwszy wskazuje na początkowy element, a drugi za ostatnim elementem. Dlaczego sort() z STL jest szybszy, niż qsort() z C? 1. Mechanizm porównywania przekazujemy do qsort() za pośrednictwem wskaźnika do funkcji. Jej wywoływanie przez to zajmuje trochę czasu. W STL-u operacja porównania jest rozwijana na miejscu już w momencie kompilacji. 2. W STL-u nie mamy w tym miejscu żadnego rzutowania typów z void*. Was steht für ein Manipulator? Element sterujący strumieni. Rodzaje manipulatorów: 1. Włączanie flag 2. Wyłączanie flag 3. Podstawa systemu liczbowego 4. Rodzaj formatu zmiennopozycyjnego 5. Wyrównywanie 6. Sterowanie wyjściem 7. Parametryzowane Modyfikatory Do czego służy volatile? Informuje kompilator, że wykorzystanie tej zmiennej nie może być optymalizowane np. przez czasowe przeniesienie jej do rejestru procesora bądź cache, gdyż istnieje prawdopodobieństwo, że może być ona w tym samym czasie zmodyfikowana przez inny wątek, co prowadziłoby oczywiście do nieścisłości w wykonywanym programie. Do czego służy mutable? Informuje, że dane pole obiektu może być zmieniane nawet przez metody const lub gdy obiekt przekazywany jest jako parametr typu const. Do czego służy register? Informacja dla kompilatora, że zmienna powinna być optymalizowana poprzez przeniesienie jej do rejestru. Obecnie ignorowana w zasadzie przez każdy kompilator. Do czego służy auto? Deklaruje zmienną lokalną, dodatkowo automatycznie wybiera typ na podstawie podanej wartości. Dzisiaj w zasadzie nieużywany. 11 z 13
12 Kompilacja Wymień etapy kompilacji. 1. Analiza leksykalna rozdzielenie kodu na elementarne jednostki języka zwane tokenami. 2. Analiza składniowa sprawdzenie, czy ułożenie tokenów nie łamie żadnej z reguł gramatycznych języka. 3. Analiza semantyczna określenie znaczenia poszczególnych tokenów. Na koniec tego etapu otrzymujemy reprezentację pośrednią kodu źródłowego. 4. Optymalizacja wiadomo. 5. Generacja kodu wynikowego. Wymień etapy budowania programu wynikowego. 1. Preprocessing preprocesor (kod źródłowy -> jednostka translacji) 2. Kompilacja kompilator (jednostka translacji -> plik obiektowy) 3. Łączenie linker (pliki obiektowe + biblioteki -> program) Czym się różni łączenie zewnętrzne od wewnętrznego? 1. Elementy łączone wewnętrznie są dostępne wyłącznie w obrębie kodu stanowiącego jedną jednostkę translacji. 2. Elementy łączone zewnętrznie są dostępne ze wszystkich plików obiektowych tworzących program. Jak wymusić łączenie wewnętrzne? Poprzez zastosowanie nienazwanych przestrzeni nazw. W jaki sposób zapewnić, aby zmienna globalna była łączona zewnętrznie? Poprzez użycie słowa kluczowego extern: extern int foo; Co to jest ODR? One Definition Rule. Mówi ona, że jedna nazwa (klasa, szablon, funkcja inline) może być zdefiniowana kilkakrotnie, jeżeli: 1. Każda definicja znajduje się w innej jednostce translacji. 2. Definicje są identyczne co do tokenu. 3. Znaczenie tokenów jest identyczne we wszystkich jednostkach translacji. Dlaczego definicje klas należy umieszczać w plikach nagłówkowych? Definicje podlegają regule ODR. Gdyby np. klasa została umieszczona w kilku jednostkach translacji w niezbyt identycznej formie, wystąpiłby błąd kompilacji. Czym są wiązania wczesne i późne? 1. Wiązanie wczesne (early binding) wiązanie wywołania funkcji składowej w czasie kompilacji 2. Wiązanie późne (late binding) wiązanie wywołania funkcji w czasie wykonywania. 12 z 13
13 Duperszmity Czym jest Smart Pointer? Abstrakcyjny typ danych symulujący wskaźnik i zapewniający dodatkowe właściwości pozwalające uniknąć błędów, np. automatyczne niszczenie obiektu, gdy ten przestaje być już używany. Kiedy tworzona jest zmienna statyczna? 1. Gdy zadeklarujemy zmienną jako zmienną globalną. 2. Gdy deklarację zmiennej poprzedzimy słowem kluczowym static. Rozwiń skrót RAII. Resource Allocation Is Initialization oznacza tworzenie na stosie specjalnych obiektów, których destruktory zwalniają zajęte miejsce podczas zwijania stosu. Takimi obiektami mogą być smart pointery. W jaki sposób korzysta się ze słowa kluczowego enum? enum [nazwa_typu] wartosc1 [= liczba], wartosc2 [= liczba],... } [lista nazw zmiennych oddzielonych przecinkiem]; Co to znaczy "foo"? :) z 13
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ół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ół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ół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ół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ół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ół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ół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ółowoIdentyfikacje typu na etapie. wykonania (RTTI)
Identyfikacje typu na etapie (Run Time Type Identification) wykonania (RTTI) Może powstać taka sytuacje, gdy w trakcie kompilacji typ obiektu nie jest znany. C++ implementuje polimorfizm poprzez hierarchie
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ół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ółowoSpis treści. Wprowadzenie 15
Spis treści Wprowadzenie 15 1. Mechanizmy języka C++ 19 1.1. Struktura programu jednostki translacji.................. 21 1.1.1. Składnia tekstu źródłowego...................... 22 1.1.2. Preprocesor...
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ółowoProgramowanie 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.NET Klasy, obiekty. ciąg dalszy
.NET Klasy, obiekty ciąg dalszy Przeciążanie operatorów 1 W języku C# istnieje możliwość zdefiniowania funkcjonalności dużej części operatorów dla typów stworzonych przez użytkownika. Dzięki takiemu zabiegowi,
Bardziej szczegółowoDariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki W językach niskopoziomowych błędy zgłaszane były przez zwracanie odpowiedniego statusu (liczby) W C main() zwraca int żeby można było określić
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ółowoWykł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ół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ół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 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ół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ółowoEGZAMIN 2 (14 WRZEŚNIA 2015) JĘZYK C++
IMIĘ i NAZWISKO: przykładowe odpowiedzi NR: 0 EGZAMIN 2 (14 WRZEŚNIA 2015) JĘZYK C++ 1. Napisz precyzyjnie co to jest ptr jeśli: const * const Foo ptr; ptr to stały wskaźnik do stałego obiektu typu Foo
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ółowoWykład 9: Polimorfizm i klasy wirtualne
Programowanie obiektowe Wykład 9: i klasy wirtualne 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD Programowanie obiektowe i metody wirtualne 2 W programowaniu obiektowym polimorfizm
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ół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ół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ół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ół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ół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++ - [4-7] Polimorfizm
Slajd 1 z 14 C++ - [4-7] Polimorfizm Nysa 2004-2013. Autor: Wojciech Galiński. wersja dnia 20 maja 2013 r. Slajd 2 z 14 Polimorfizm i klasa polimorficzna POLIMORFIZM (cytat z Wikipedii) (wielopostaciowość)
Bardziej szczegółowoKurs 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ół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ół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ół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ółowoZaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 4 - wzorce projektowe. dr inż. Robert Nowak - p. 1/18 Powtórzenie klasy autonomiczne tworzenie nowych typów: dziedziczenie i agregacja dziedziczenie: przedefiniowywanie
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ółowoWykł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ółowoCzęść I Programowanie niskiego poziomu w języku C 19
Spis treści Przedmowa 13 Wstęp 15 Część I Programowanie niskiego poziomu w języku C 19 Wprowadzenie 21 1 Typy 23 1.1 Fundamentalne typy danych...................... 23 1.2 Typy pochodne.............................
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ół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ół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ół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 w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43
Programowanie w C++ Wykład 6 Katarzyna Grzelak 1 kwietnia 2019 K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły
Bardziej szczegółowoWykład 5 Okna MDI i SDI, dziedziczenie
Wykład 5 Okna MDI i SDI, dziedziczenie Autor: Zofia Kruczkiewicz Zagadnienia 1. Aplikacja wielookienkowa. Zakładanie projektu typu CLR Windows Forms 1.1. Aplikacja typu MDI 1.2. Aplikacja typu SDI 2. Dziedziczenie
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ółowoKurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016
Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal
Bardziej szczegółowoZaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 3 - polimorfizm. dr inż. Robert Nowak - p. 1/14 Powtórzenie Powtórzenie: klasy autonomiczne: konstruktor, konstruktor kopiujacy, operator przypisania, destruktor
Bardziej szczegół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ółowoSTL: Lekcja 1&2. Filozofia STL
STL: Lekcja 1&2 Tematy: Filozofia STL Po co nam STL? Podstawowa zawartość STL Co warto znać zanim zaczniemy pracę z STL?: wskaźniki Praca na tekstach: klasa String Vector: nowy wymiar standardowych tablic.
Bardziej szczegółowoC++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm POLIMORFIZM
POLIMORFIZM Podstawowe pytanie, które nieustannie ma towarzyszyć autorowi programowi: czy gdyby nagle okazało się, że jest więcej... (danych na wejściu, typów danych, czynności, które program ma wykonać,
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ółowoProgramowanie, część I
Programowanie, część I Rafał J. Wysocki Instytut Fizyki Teoretycznej, Wydział Fizyki UW 22 lutego 2011 Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część I 22 lutego 2011 1 / 80 Wstęp Informacje organizacyjne
Bardziej szczegółowoKurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019
Wykład 3 22 marca 2019 Klasy wewnętrzne Klasa wewnętrzna class A {... class B {... }... } Klasa B jest klasa wewnętrzna w klasie A. Klasa A jest klasa otaczajac a klasy B. Klasy wewnętrzne Właściwości
Bardziej szczegółowoDziedziczenie. 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ół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ół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ół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ółowoWprowadzenie do programowanie obiektowego w języku C++
Wprowadzenie do programowanie obiektowego w języku C++ Część czwarta 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
Bardziej szczegółowoC# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści
C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop. 2016 Spis treści Spis rysunków 11 Spis tabel 13 Przedmowa 15 Wprowadzenie 17 Podziękowania 27 O autorach 29 1 Wprowadzenie
Bardziej szczegółowoDariusz 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ół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ół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ół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ółowoKurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/
Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i
Bardziej szczegółowoFunkcje wirtualne. Wskaźniki do klas pochodnych są podstawą dla funkcji wirtualnych i polimorfizmu dynamicznego.
Funkcje wirtualne W C++ polimorfizm jest zrealizowany w dwa sposoby: na etapie kompilacji i na etapie wykonania. Na etapie kompilacji polimorfizm jest zrealizowany poprzez przeciążenie funkcji i operatorów.
Bardziej szczegółowoKlasy cd. Struktury Interfejsy Wyjątki
Klasy cd. Struktury Interfejsy Wyjątki Struktury Struktura pozwala na zdefiniowanie typu danych, który nie charakteryzuje się zbyt złożoną funkcjonalnością (np. punkt, kolor, etc). Do definiowania struktury
Bardziej szczegółowoLab 9 Podstawy Programowania
Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany
Bardziej szczegółowoProgramowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40
Programowanie w C++ Wykład 6 Katarzyna Grzelak kwiecień 2019 K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40 STL - powtórzenie STL Standard Template Libarary standardowa biblioteka szablonów Składowe biblioteki:
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ół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ół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ół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ół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ółowoPolimorfizm, metody wirtualne i klasy abstrakcyjne
Programowanie obiektowe Polimorfizm, metody wirtualne i klasy abstrakcyjne Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Polimorfizm,
Bardziej szczegółowoWstęp do programowania obiektowego, wykład 7
Wstęp do programowania obiektowego, wykład 7 Klasy i funkcje abstrakcyjne Przeciążanie funkcji Definiowanie i interpretacja złożonych typów danych w C++ Wskaźniki do funkcji 1 KLASA ABSTRAKCYJNA 2 Klasa
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ół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ół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, 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ół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 Przeciążanie operatorów Słowo
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ół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ółowoWyjątki (exceptions)
Instrukcja laboratoryjna nr 6 Programowanie w języku C 2 (C++ poziom zaawansowany) Wyjątki (exceptions) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp Wyjątki (ang.
Bardziej szczegółowoDziedziczenie. Tomasz Borzyszkowski
Dziedziczenie Tomasz Borzyszkowski Podstawy Zobacz: Dziedzictwo1.java Dziedzictwo2.java Dziedziczenie jest jedną z podstawowych cech OOP ponieważ umożliwia łatwe implementowanie klasyfikacji hierarchicznych.
Bardziej szczegółowoCo to jest klasa? Z programistycznego punktu widzenia klasa stanowi typ danych, który odwzorowuje wspólne cechy jakiegoś obiektu.
.NET Klasy, obiekty Klasa i obiekt Każdy obiektowy język programowania daje programiście możliwość tworzenia nowych typów danych. Nowy typ danych definiuje się poprzez zdefiniowanie klasy. Co to jest klasa?
Bardziej szczegół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ółowoPHP 5 język obiektowy
PHP 5 język obiektowy Wprowadzenie Klasa w PHP jest traktowana jak zbiór, rodzaj różnych typów danych. Stanowi przepis jak stworzyć konkretne obiekty (instancje klasy), jest definicją obiektów. Klasa reprezentuje
Bardziej szczegółowoJę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ół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ółowoPARADYGMATY 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ółowoProgramowanie obiektowe w języku
Programowanie obiektowe w języku C++ Stanisław Gepner sgepner@meil.pw.edu.pl Dziedziczenie Wstęp Zacznijmy od przykładu Przykład rolniczy Każde zwierzątko wydaje dźwięk Każde się tak samo porusza Musimy
Bardziej szczegółowoSzablony 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ół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ół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ółowo10. Programowanie obiektowe w PHP5
Ogólnie definicja klasy wygląda jak w C++. Oczywiście elementy składowe klasy są zmiennymi PHP, stąd nieśmiertelne $. Warto zauważyć, że mogą one mieć wartość HHH mgr inż. Grzegorz Kraszewski TECHNOLOGIE
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ół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ółowo