Prasek Aneta, Skiba Katarzyna. Funkcje stałe const to takie funkcje, które nie mogą modyfikować stanu obiektu. Oznacza to, że funkcja stała nie może zmieniać.

Slides:



Advertisements
Podobne prezentacje
C++ wykład 9 ( ) Szablony.
Advertisements

C++ wykład 2 ( ) Klasy i obiekty.
C++ wykład 4 ( ) Przeciążanie operatorów.
Język C/C++ Funkcje.
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 2 Wojciech Pieprzyca.
Deklaracje i definicje klas w C++ Składowe, pola, metody Konstruktory
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 4 Wojciech Pieprzyca.
Programowanie obiektowe
Programowanie obiektowe
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 3 Wojciech Pieprzyca.
Wzorce.
Prowadzący: mgr inż. Elżbieta Majka
Static, const, volatile.
Dziedziczenie. Po co nam dziedziczenie? class osoba { char * imie, char * imie, * nazwisko; * nazwisko;public: void wypisz_imie(); void wypisz_imie();
Programowanie w środowisku sieciowym
PROGRAMOWANIE STRUKTURALNE
Programowanie obiektowe w Javie
OOPC++ - wstêp, klasy1 Klasy Do struktury można dołączyć operacje działające na jej polach. struct date { int day, month, year; void set (int d, int m,
ODE Triggery. Wstęp n Triggery są trójką zdarzenie-warunek-akcja (event-condition- action). n Zdarzenia mogą być proste lub złożone, co zostanie omówione.
Struktury.
C++ wykład 5 ( ) Dziedziczenie.
C++ wykład 2 ( ) Klasy i obiekty.
Zasady zaliczenia Warunki uzyskania zaliczenia:
Typy prywatne 1 Typy prywatne W Adzie typy prywatne (private types) służą do bezpiecznego udostępniania danych zdefiniowanych w pakiecie, z którego korzysta.
Klasy w C++. Deklaracja klasy class NazwaTwojejKlasy { //w tym miejscu piszemy definicje typów, //zmienne i funkcje jakie mają należeć do klasy. }; //tutaj.
struct nazwa { lista składników }; Dostęp do składowych struktury Nazwa_Zmniennej_Strukturalnej. Nazwa_Składnika.
T: Różnice pomiędzy programowaniem strukturalnym a obiektowym
Podstawy programowania
Programowanie obiektowe III rok EiT
Programowanie obiektowe III rok EiT dr inż. Jerzy Kotowski Wykład IX.
Programowanie obiektowe III rok EiT
Andrzej Repak Nr albumu
Java – coś na temat Klas Piotr Rosik
Dziedziczenie Maciek Mięczakowski
Inicjalizacja i sprzątanie
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Programowanie obiektowe 2013/2014
Kurs języka C++ – wykład 3 ( )
Kurs języka C++ – wykład 9 ( )
Programowanie w języku C++
Kurs języka C++ – wykład 5 ( )
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
K URS JĘZYKA C++ – WYKŁAD 10 ( ) Szablony.
Programowanie strukturalne i obiektowe C++
Kurs języka C++ – wykład 4 ( )
K URS JĘZYKA C++ – WYKŁAD 2 ( ) Klasy i obiekty.
Klasy ( uzupełnienie ). Definicja klasy Klasa jest zbiorem logicznie powiązanych danych i funkcji, przeznaczonych do realizacji konkretnego zadania; Zamknięcie.
Programowanie obiektowe Wykład 9 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/15 Dariusz Wardowski.
This, friend, operatory. this dostępny w każdej niestatycznej metodzie dostępny w każdej niestatycznej metodzie jest to wskaźnik do obiektu na rzecz którego.
Dziedziczenie wielobazowe. dana klasa może mieć kilka bezpośrednich klas bazowych: dana klasa może mieć kilka bezpośrednich klas bazowych: kolorpołożenie.
Łukasz Bieszczad Mateusz Gałązka Karol Włodarek
Dziedziczenie Wykład 7 Dziedziczenie sekwencyjne
Wykład 4 Klasa Vec, której konstruktory alokują pamięć dla obiektów 1.Przykład definicji klasy Vec 2.Definicje konstruktorów i destruktora 3.Definicja.
Wykład 2 Klasa Zesp i jej hermetyzacja 1.Przykład definicji klasy Zesp 2.Zmiana definicji klasy 3.Zmienne i funkcje statyczne PO2-1 / 28.
Wykład 5 Klasa Vec i jej operatory 1.Kategorie operatorów 2.Operatory ogólne - przykłady 3.Operatory specjalne [ ], ( ) oraz –> 4.Operatory new i delete.
Partnerstwo dla Przyszłości 1 Lekcja 28 Dziedziczenie i rodzaje dziedziczenia.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Programowanie Obiektowe – Wykład 6
Kurs języka C++ – wykład 3 ( )
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
Programowanie Obiektowe – Wykład 2
Kurs języka C++ – wykład 4 ( )
PGO Dziedziczenie Michail Mokkas.
PGO Przeciążanie metod i konstruktorów
Zapis prezentacji:

Prasek Aneta, Skiba Katarzyna

Funkcje stałe const to takie funkcje, które nie mogą modyfikować stanu obiektu. Oznacza to, że funkcja stała nie może zmieniać wartość swoich różnych atrybutów. Funkcja stała jest zdefiniowana przez słowo kluczowe const, które jest wstawione po deklaracji i definicji funkcji. Funkcja stała może wywoływać tylko funkcje stałe. Słowo kluczowe const umieszczone po nazwie funkcji nie ma nic wspólnego z const umieszczonym przed nazwą. Pierwsze zastosowanie modyfikuje deklarację wskaźnika this dla funkcji składowej, drugie dotyczy wartości zwracanej przez funkcję. FUNKCJA STAŁA CONST

ZAPRZYJAŹNIONE FUNKCJE I KLASY

Zaprzyjaźnione z klasą mogą być funkcje, klasy i metody klas. Funkcja zaprzyjaźniona nie jest metodą klasy, ale ma dostęp do wszystkich składowych klasy. Tworząc funkcję zaprzyjaźnioną musimy * umieścić jej prototyp w deklaracji klasy, * zdefiniować funkcję. DEFINIOWANIE ZAPRZYJAŹNIONYCH FUNKCJI

Definicja klas zaprzyjaźnionych ma postać class X { public: friend class Y;// klasa Y posiada dostęp do prywatnych danych X //tu metody klasy X private: //tu pola klasy X }; class Y { //tu pola i metody klasy Y }; DEFINIOWANIE ZAPRZYJAŹNIONYCH KLAS

Klasa Y jest zaprzyjaźniona z klasą X, posiada dostęp do jej prywatnych danych. Metody klasy Y mogą korzystać z interfejsu klasy X, nie muszą być zaprzyjaźnione z tą klasą. Zamiast definiować klasy zaprzyjaźnione, można zdefiniować zaprzyjaźnione funkcje składowe. Wtedy deklaracja klas musi przebiegać w następującej kolejności : DEFINIOWANIE ZAPRZYJAŹNIONYCH KLAS

class X; class Y { //tu deklacja pól i metod klasy Y, //metody używające klasy X - tylko prototypy }; class X { //tu deklacja pól i metod klasy X //i funkcje zaprzyjaźnione z klasą Y //o prototypach podobnych do friend typ_wyniku Y::nazwa_funkcji(argumenty); }; //tu definicje metod klasy Y DEFINIOWANIE ZAPRZYJAŹNIONYCH KLAS

Typowym zastosowaniem funkcji zaprzyjaźnionej jest przeciążanie operatora <<. Przeciążenie operatora << umożliwi wyświetlanie obiektów za pomocą instrukcji cout << obiekt; Prototyp funkcji zaprzyjaźnionej, przeciążającej operator << powinien mieć postać: friend ostream & operator<<(ostream &, const Nazwa_klasy &); natomiast definicja ostream & operator<<(ostream & os, const Nazwa_klasy obiekt) { os <<...; // tu wstawić wyświetlanie wartości pól obiektu return os; } STOSOWANIE FUNKCJI ZAPRZYJAŹNIONYCH

W programowaniu obiektowym interfejs jest abstrakcyjną reprezentacją klasy. Interfejs umożliwia korzystanie z danej klasy, niezależnie od faktycznej implementacji. Interfejs pozwala na hermetyzację obiektów, utworzonych w oparciu o klasy zawierające definicję (implementację) wspólnego interfejsu. Tak rozumiany interfejs, w ramach programowania obiektowego, określany jest też mianem interfejs klasy. Implementacja - informatyczny proces przekształcania abstrakcyjnego opisu systemu lub programu na obiekt fizyczny: komputer lub działający program zapisany w konkretnym języku programowania; także obiekt fizyczny będący efektem takiego przekształcenia, np. implementacja systemu operacyjnego lub kompilatora dla konkretnego typu komputera. INTERFEJS A IMPLEMENTACJA

Najbardziej efektywne dla małych i średnich funkcji Rozwijane w miejscu wywołania Brak narzutu na wywołanie funkcji Kompilator generuje odpowiedni kod i odwzorowuje parametry Oprócz tego generowana kopia implementacji funkcji (na wypadek, gdyby programista chciał pobrać jej adres) Dwie metody specyfikacji funkcji otwartej: Podanie implementacji w deklaracji klasy Użycie słowa kluczowego inline w definicji funkcji FUNKCJE OTWARTE (INLINE)

Funkcje otwarte muszą być zdefiniowane w plikach nagłówkowych aby umożliwić kompilatorowi generację kopii funkcji w momencie ich użycia Metody zdefiniowane wewnątrz deklaracji klasy są niejawnie deklarowane jako otwarte Kompromis między wydajnością a ukrywaniem informacji Odwołanie się do pól zdefiniowanych poniżej ich definicji jest poprawne FUNKCJE OTWARTE (INLINE)

brak oddzielenia interfejsu od implementacji brak ukrywania informacji Kod używający funkcji otwartych musi być ponownie skompilowany, gdy: treść metody ulegnie zmianie zostanie ona zastąpiona zwykłą metodą i odwrotnie inline to żądanie, nie polecenie można rozwinąć ręcznie, ale to kosztowne Rozmiar pliku wykonywalnego może ulec powiększeniu zwykle nie jest to problemem WADY I ZALETY FUNKCJI OTWARTYCH