1 Historia i cechy C++ 2 PRZYDATNE KONSTRUKCJE

Podobne dokumenty
1 Historia i cechy C++ 2 PRZYDATNE KONSTRUKCJE

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 10

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 11

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 7

WYKŁAD 2 Historia rozwoju technik programowania. Granica pomiędzy programem a agentem. Cykl życia i podstawowe elementy składowe agenta.

stworzyliśmy najlepsze rozwiązania do projektowania organizacji ruchu Dołącz do naszych zadowolonych użytkowników!

Tworzenie kwerend. Nazwisko Imię Nr indeksu Ocena

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 8

imię kod ulica prześlij Dzięki formularzom możliwe jest pobieranie danych, a nie tylko ich wyświetlanie.

Optymalne przydzielanie adresów IP. Ograniczenia adresowania IP z podziałem na klasy

Bożena Czyż-Bortowska, Biblioteka Pedagogiczna w Toruniu

Wyjątki. Wyjątki. Wyjątki. Wyjątki. Wyjątki. Wyjątki. Wprowadzenie. Wprowadzenie

Programowanie warstwy klienta w aplikacji Java EE

Poniżej krótki opis/instrukcja modułu. Korekta podatku VAT od przeterminowanych faktur.

Instrukcja korzystania z serwisu Geomelioportal.pl. - Strona 1/12 -

Zmiany funkcjonalne wprowadzone w wersji

Standardy proceduralne i dokumentacyjne

Wymagania edukacyjne z przedmiotu Systemy baz danych dla klasy 3iA Nauczyciel: Kornel Barteczko Rok szkolny: 2015/2016

Statystyka - wprowadzenie

Zintegrowany system obsługi przedsiębiorstwa. Migracja do Firebird 2.x

Opis i specyfikacja interfejsu SI WCPR do wybranych systemów zewnętrznych

Inżynieria Oprogramowania 2013/14. Testy integracyjne

Lista zmian Sello. Wersja Wersja Wersja

Skróty klawiszowe Window-Eyes

Nowe funkcje w module Repozytorium Dokumentów

Wyjątki. Wyjątki. Wyjątki. Wyjątki. Wyjątki. Wyjątki. Wprowadzenie o. Wprowadzenie o

Oznaczenie CE. Ocena ryzyka. Rozwiązanie programowe dla oznakowania

Jak założyć blog na platformie blogów CEO w 3 krokach

Kliknij przycisk Start > Panel sterowania > Konta użytkowników > Poczta (w widoku

"Pies" P i e s \0. Prawidłowy zapis wymaga wykorzystania funkcji strcpy() z pliku nagłówkowego string.h: char txt[10]; strcpy(txt, Pies );

Wstęp do Programowania 2

WYPOSAŻENIE. Dokumentacja eksploatacyjna

MultiInfo SOHO. w Instrukcja obsługi dla administratora klienta

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

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

KASPERSKY LAB. Kaspersky Administration Kit wersja 6.0. Podręcznik administratora

Współpraca programów WINBUD Kosztorys i Symfonia Handel premium I Informacje ogólne

Zapytanie ofertowe. Stworzenie inteligentnych narzędzi do generacji i zarządzania stron internetowych (SaaS+WEB2.0),

Podstawy Programowania Obiektowego

amjam 2015 Regulamin

Kadry i Płace. Moduł Płace i Kadry składa się z siedmiu działów:

Projektowanie systemów informatycznych

Programowanie warstwy klienta w aplikacji Java EE

Specyfikacja dotycząca modernizacji przepompowni ścieków należącej do oczyszczalni ścieków w Podrzeczu.

Editorial System. System przetwarzania prac naukowych online. Opis możliwości aplikacji. Copyright by Bentus.

Konfiguracja przeglądarki Internet Explorer 6.0 i instalacja komponentu w środowisku systemów Windows

Operatory odległości (część 2) obliczanie map kosztów

ZESPÓŁ LABORATORIÓW TELEMATYKI TRANSPORTU ZAKŁAD TELEKOMUNIKACJI W TRANSPORCIE WYDZIAŁ TRANSPORTU POLITECHNIKI WARSZAWSKIEJ

WYMAGANIA EDUKACYJNE Z PRZEDMIOTU PRACOWNIA URZĄDZEŃ TECHNIKI KOMPUTEROWEJ. dla klasy 1ia. Rok szkolny 2015/2016 Nauczyciel: Agnieszka Wdowiak

Instrukcja użytkownika

Język C++ Różnice między C a C++

Parametryzacja modeli części w Technologii Synchronicznej

Wymagania edukacyjne z przedmiotu Pracownia aplikacji internetowych dla klasy 3iA Nauczyciel: Kornel Barteczko Rok szkolny: 2015/2016

B2B by CTI. Lista funkcjonalności

Przeciążanie metod i operatorów

Do czego służą klasy?

Informatyka Systemów Autonomicznych

Katalog książek cz. 1

CERTO program komputerowy zgodny z wytycznymi programu dopłat z NFOŚiGW do budownictwa energooszczędnego

SZCZEGÓŁOWY OPIS PRZEDMIOTU ZAMÓWIENIA

WYSTAWIANIE FAKTUR I FAKTUR KORYGUJĄCYCH W DZIAŁALNOŚCI GOSPODARCZEJ ŚRODA Z KSIĘGOWĄ JOANNA MATUSIAK

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Wstęp do MS ACCESS. 1. Wprowadzenie

Dane kontaktowe. 1. Zamówienia należy składać za pośrednictwem strony internetowej

PROGRAM SZKOLENIA DLA SPECJALISTÓW RYNKU PRACY Z UŻYTKOWANIA OPROGRAMOWANIA EIPD

Różne właściwości. Różne właściwości. Różne właściwości. C++ - klasy. C++ - klasy C++ - KLASY

Metody pracy na lekcji. Referat przedstawiony na spotkaniu zespołu matematyczno przyrodniczego

Programowanie 2. Język C++. Wykład 3.

Nowe funkcje w programie Symfonia e-dokumenty w wersji Spis treści:

TWORZENIE I TESTOWANIE TEST-DRIVEN DEVELOPMENT APLIKACJI Z UŻYCIEM KOD: TDD

Do zarządzania kontami uŝytkowników naleŝy ich zakładanie, usuwanie, modyfikowanie, zmiana hasła oraz szereg dodatkowych czynności.

WYMAGANIA EDUKACYJNE Z INFORMATYKI

SENTE CMS zarządzanie treścią witryny internetowej

Moduł Konsolidacji Sprawozdań wersja

Wykrywanie i usuwanie uszkodzeń w sieci

LABORATORIUM OBRÓBKI SKRAWANIEM

Chcąc dopasować nasze treści do Twoich potrzeb korzystamy na naszych. stronach z technologii pozwalających nam zbierać Twoje dane osobowe.

Polityka Prywatności. Kto jest administratorem danych osobowych?

COMARCH ERP E-SKLEP...

Instrukcja użytkownika AP-KOLCE

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

Instrukcja obsługi Panelu Sklep

Przestrzeń papier / model

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

POLITYKA PRYWATNOŚCI

Optymalizacja wydajności zapytań w testowaniu schematu bazy danych

WPROWADZENIE Kurs DO WIT INTERNETU WSISIZ Wyższa Szkoła Informatyki Stosowanej i Zarządzania WIT

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class).

PSO matematyka I gimnazjum Szczegółowe wymagania edukacyjne na poszczególne oceny

Wstęp. 2. Definicje. 3. Warunki zawarcia umowy

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 3

KLASY cz.1. Dorota Pylak

MATERIAŁY POMOCNICZE NR 2 DO PRACOWNII Z PRZEMIOTU INFORMATYKA 1

Wymagania edukacyjne z przedmiotu Pracownia Baz danych dla klasy 3iA Nauczyciel: Mariusz Walendzewicz Rok szkolny: 2015/2016

Materiały do zajęć VII

Regulamin Konkursu: I. Organizatorzy konkursu. II. Uczestnicy konkursu. III. Terminarz

System CDN OPT!MA v Generator Raportów (GenRap) Kraków, Al. Jana Pawła II 41g tel. (12) , fax (12)

Wykład 8: klasy cz. 4

Transkrypt:

Prgramwanie biektwe Wykład 1 Materiały: dr inż. Bżena Łpuch 1 Histria i cechy C++ Autr - Bjarne Strustrup (Dania, Cambridge, AT&T), 1983 Cel: rzszerzenie języka C biektwe mechanizmy abstrakcji danych i silną statyczną kntrlę typów. Zachwanie zgdnści z językiem C na pzimie kdu źródłweg pzstaje jednym z pdstawwych celów prjektwych klejnych standardów języka. Standardy Od 1998 - standard ISO/IEC 14882:1998 (Standard fr the C++ Prgramming Language) z drbnymi pprawkami zatwierdznymi w 2003 r. (ISO/IEC 14882:2003) - ISO C++ (-std = c++98). W 2009 rku głszn nwy standard (tzw. C++0x) (-std=c++0x), który zaczął bwiązywać d 12 sierpnia 2011 rku i dtąd jest nazywany (ISO/IEC 14882:2011) (-std=c++11). 2 PRZYDATNE KONSTRUKCJE 2.1 Parametry dmyślne Język C++ pzwala przypisywać parametrm funkcji wartści dmyślne. Funkcja taka mże być wywłana ze wszystkimi parametrami, wtedy wartści dmyślne nie są brane pd uwagę, lub z mniejszą liczbą parametrów, wtedy kmpilatr uzupełni wywłanie funkcji brakujące argumenty. Przykład: #include <istream> using namespace std; vid fun(int a=0, int b=10); int main() int n=1, m=5; fun(n,m); // przekazan d funkcji 1 i 5 fun(n); // przekazan d funkcji 1 i 10 fun(); // przekazan d funkcji 0 i 10 vid fun(int a, int b) cut << "Pierwszy argument: " << a << endl; cut << "Drugi argument: " << b << endl; UWAGA: Ograniczenia stswania parametrów dmyślnych: jeśli parametr nie ma wartści dmyślnej, t nie mże jej psiadać żaden z pprzedzających g parametrów! 1

Prgramwanie biektwe Wykład 1 Materiały: dr inż. Bżena Łpuch 2.2 Przeciążanie nazw funkcji W języku C++ mżna definiwać dwlnie wiele funkcji takiej samej nazwie. Muszą się ne różnić sygnaturą czyli liczbą parametrów frmalnych i (lub) ich typami. Jest t tzw. plimrfizm nazw funkcji. Przy wywłaniu kmpilatr użyje tej definicji funkcji, dla której liczba parametrów frmalnych i ich typy dpwiadają argumentm wywłania funkcji. Uwaga: W skład sygnatury funkcji nie wchdzi typ zwracaneg wyniku. Nie jest zatem mżliwe rzróżnienie funkcji na pdstawie zwracanych wartści. Definiwanie funkcji plimrficznych nazywa się przeciążaniem. Używana jest również nazwa przeładwanie funkcji (ang. functin verlading). Przeciążanie funkcji stsujemy w przypadku funkcji realizujących te same zadania, ale na danych różneg typu lub ich różnej liczby. Przykład: #include <istream> using namespace std; duble srednia(duble n1, duble n2); duble srednia(duble n1, duble n2, duble n3); int main() cut << "srednia 1: " << srednia(2.,5.) << endl; cut << "srednia 2: " << srednia(1.,3.,5.) << endl; duble srednia(duble n1, duble n2) return ( (n1+n2)/2.); duble srednia(duble n1, duble n2, duble n3) return ( (n1+n2+n3)/3.); 2.3 Dpaswywanie funkcji Brak prttypu pasująceg d wywłania funkcji spwduje, że C++ będzie próbwał dpaswać funkcje pprzez standardwe knwersje typów. Szczegóły dpaswywania funkcji: Prata, Szkła prgramwania. Język C++, wyd.v, 2006, str. 387-393. 2

Prgramwanie biektwe Wykład 1 Materiały: dr inż. Bżena Łpuch 2.4 Funkcje twarte (inline) Wywłanie funkcji jest prcesem czaschłnnym. W przypadku prstych funkcji kszt ich wywłania mże znacznie przewyższyć kszt wyknania właściwych instrukcji funkcji. D rzwiązania teg prblemu w C++ zaprpnwan funkcje twarte, rzwijane w miejscu wywłania. Jeśli deklarację funkcji patrzymy słwem kluczwym inline, znacza t, że preferujemy rzwinięcie ciała funkcji w miejscu jej wywłania zamiast zastswania zwykłeg mechanizmu wywływania funkcji. Przykład: Ten prgram: #include <istream> using namespace std; inline vid zwieksz(int &a) ++a; int main() int x=0; zwieksz(x); //++x; cut << "x=" << x << endl; zstanie skmpilwany tak, jakby zstał napisany następując: #include <istream> using namespace std; int main() int x=0; ++x; cut << "x=" << x << endl; Mechanizm ten jest wykrzystywany dmyślnie w większści kmpilatrów, działających w trybie ptymalizacji kdu, nawet dla funkcji, które nie są znaczne jak inline. Oznaczenie funkcji inline t tylk wskazówka dla kmpilatra, d której nie musi się stswać. 3

Prgramwanie biektwe Wykład 1 Materiały: dr inż. Bżena Łpuch 3 PODSTAWOWE POJĘCIA PROGRAMOWANIA OBIEKTOWEGO 3.1 Prgramwanie prceduralne Paradygmat: Zadecyduj, jakie chcesz mieć prcedury; stsuj najlepsze algrytmy, jakie mżesz znaleźć. Prcedura: wydrębnina z prgramu główneg sekwencja instrukcji nadanej nazwie, wskazująca knkretne zadanie d wyknania. Przykład: // Funkcja bliczająca pierwiastek kwadratwy duble sqrt(duble arg) // kd bliczania pierwiastka kwadratweg // Funkcja główna int main () duble pierw; // Wywłanie funkcji bliczania pierwiastka pierw=sqrt(2.0); 4

Prgramwanie biektwe Wykład 1 Materiały: dr inż. Bżena Łpuch 3.2 Abstrakcyjne typy danych, czyli typy zdefiniwane przez użytkwnika (prgramwania w stylu biektwym) Paradygmat: Zadecyduj, jakie chcesz mieć typy; dla każdeg typu dstarcz pełny zbiór peracji. Przykład: class cmplex private: duble re, im; public: cmplex() //dmyślna liczba zesplna re=im=0; cmplex(duble r, duble i) //twrzenie z dwóch składników re=r; im=i; cmplex(duble r) //twrzenie ze skalara re=r; im=0; // definicje funkcji peracji // na liczbach zesplnych: // +, -, *, / ==!= ; vid f() cmplex a(2), b=1/a, c; c=a+b; 5

Prgramwanie biektwe Wykład 1 Materiały: dr inż. Bżena Łpuch Paradygmat: 3.3 Prgramwanie biektwe Zdecyduj, jakie chcesz mieć klasy. Dla każdej klasy dstarcz pełny zbiór peracji. Krzystając z mechanizmu dziedziczenia jawnie wskaż, c jest wspólne. Cechy języka prgramwania biektweg: abstrakcyjne typy danych (klasy), hermetyzacja danych (ukrywanie), dziedziczenie, plimrfizm. Hermetyzacja (ang. encapsulatin, kapsułkwanie, enkapsulacja) - graniczenie dstępnści danych i funkcji wewnętrznych klas i biektów, udstępnianie ich jedynie za pmcą specjalnych funkcji nazywanych metdami. Dziedziczenie: jedna klasa biektów mże być zdefiniwana jak przypadek gólniejszej klasy, a definicje metd i pól danych klasy gólniejszej umieszczane są autmatycznie w klasie szczególnej, klasa gólna nazywana jest klasą bazwą a klasa szczególna klasą pchdną, klasy pchdne mgą definiwać swje własne metdy i pla danych, które mgą przesłaniać dziedziczne metdy i pla danych, klasa mże dziedziczyć właściwści więcej niż jednej klasy - dziedziczenie wielbazwe. Plimrfizm: wielpstaciwść - mżliwść istnienia wielu metd tej samej nazwie, pwiązana z mżliwścią wybru knkretnej metdy pdczas wyknywania. 6

Prgramwanie biektwe Wykład 1 Materiały: dr inż. Bżena Łpuch 3.4 OBIEKTY I KLASY W C++ Obiekt: abstrakcyjny byt reprezentujący lub pisujący pewną rzecz lub pjęcie bserwwane w świecie rzeczywistym Obiekt przechwuje pewne infrmacje na swój temat (atrybuty). Obiekt charakteryzuje się pewnym zakresem zachwań. Mżna pprsić biekt wyknanie pewnej peracji na samym sbie. Klasa: ugólnienie pdbnych d siebie biektów. Opisuje atrybuty biektu i jeg peracje (zachwania). Twrząc klasę kreślamy cechy i mżliwści wszystkich przyszłych biektów tej klasy. Obiekt jest t egzemplarz (instancja) danej klasy. Metdy: peracje wyknywane na biektach. Są wyknywane na skutek wysłania d biektu kmunikatu, który wywłuje kreślną metdę (perację). Metdy nszą również nazwę funkcji składwych. Autr klasy mże: kreślić wszystkie peracje, jakie użytkwnik biektów klasy będzie na nich wyknywać, zagwarantwać, że każdy biekt będzie pprawnie zainicjwany, zapewnić, że biekt p wyknaniu każdej dpuszczalnej peracji będzie spełniał kreślne kryteria, zapewnić, że p zwlnieniu przez prgram pamięci zajmwanej przez biekt zstanie zwlnina pamięć pbrana w związku z funkcjnwaniem biektu, całkwicie ukryć reprezentację danych przed użytkwnikiem. 3.4.1 Hermetyzacja danych Tradycyjna struktura: dstęp d składwych jest niegraniczny. Hermetyzacja danych: dstęp d składwych jest graniczny za pmcą interfejsu. Prgramista aplikacji mże wyknywać na biekcie tylk te peracje, które przewidział prjektant klasy i które udstępnił publicznie. W języku C++ dstęp d składwych klasy jest kreślany za pmcą słów kluczwych: Zalety: private: składwe nie są dstępne dla klienta klasy (aplikacji krzystającej z klasy), dstęp d tych składwych mają tylk metdy klasy, public: składwe są dstępne dla klienta klasy, prtected: wykrzystywane pdczas dziedziczenia. zapewnienie spójnści atrybutów biektu, mżliwść weryfikacji teg, czy wyknywana peracja jest dzwlna w kreślnej sytuacji i dla kreślnych parametrów funkcji. 7

Przykład wersja A: Prgramwanie biektwe Wykład 1 Materiały: dr inż. Bżena Łpuch #include <istream> using namespace std; // DEFINICJA KLASY class TV private: int prgram; // nr prgramu Atrybuty biektów klasy TV bl wlaczny; // czy dbirnik włączny? public: // INTERFEJS KLASY Operacje dstępne dla biektów klasy TV // --knstruktr - przypisanie wartści pczątkwych składwym prywatnym TV() prgram=2; wlaczny=false; // ---metdy klasy vid zmienprgram(int p) if (wlaczny) prgram=p; else cut << "Najpierw wlacz TV" << endl; vid wlacz() wlaczny=true; cut << "Wlaczylem TV" << endl; vid wylacz() wlaczny=false; cut << "Wylaczylem TV" << endl; int gladam() return prgram; ; // // KLIENT KLASY int main () TV kuchniatv; twrzymy biekty TV pkjtv; kuchniatv.zmienprgram(4); kuchniatv.wlacz(); cut << "Prgram: " << kuchniatv.gladam()<<endl; kuchniatv.zmienprgram(4); cut << "Prgram: " << kuchniatv.gladam()<<endl; kuchniatv.wylacz(); wysyłamy kmunikaty d biektu pkjtv.wlacz(); cut << "Prgram: " << pkjtv.gladam()<<endl; pkjtv.wylacz(); return 0; 8

Przykład wersja B: Prgramwanie biektwe Wykład 1 Materiały: dr inż. Bżena Łpuch #include <istream> using namespace std; // DEKLARACJA KLASY class TV private: int prgram; // nr prgramu bl wlaczny; // czy dbirnik włączny? public: // INTERFEJS KLASY // knstruktr - przypisanie wartści pczątkwych składwym prywatnym TV(); // metdy klasy vid zmienprgram(int p); vid wlacz(); vid wylacz(); int gladam(); ; //Kniec definicji klasy // DEFINICJE METOD KLASY TV::TV() prgram=2; wlaczny=false; vid TV::zmienPrgram(int p) if (wlaczny) prgram=p; else cut << "Najpierw wlacz TV" << endl; vid TV::wlacz() wlaczny=true; cut << "Wlaczylem TV" << endl; vid TV::wylacz() wlaczny=false; cut << "Wylaczylem TV" << endl; int TV::gladam() return prgram; // // KLIENT KLASY int main () TV kuchniatv; kuchniatv.zmienprgram(4); kuchniatv.wlacz(); cut << "Prgram: "<< kuchniatv.gladam()<<endl; kuchniatv.zmienprgram(4); cut << "Prgram: " << kuchniatv.gladam()<<endl; kuchniatv.wylacz(); TV pkjtv; pkjtv.wlacz(); cut << "Prgram: " << pkjtv.gladam()<<endl; pkjtv.wylacz(); return 0; 9

Prgramwanie biektwe Wykład 1 Materiały: dr inż. Bżena Łpuch Definicja klasy ma pstać: 3.4.2 Klasa - definicja class nazwa_klasy private: // pla danych i funkcje prywatne typ nazwa_zmiennej; public: // pla danych i funkcje publiczne typ nazwa_funkcji(); prtected: // pla danych i funkcje chrnine ; W skład klasy wchdzą: pla danych: zmienne, które służą d przechwania wartści atrybutów biektu, metdy (funkcje składwe): funkcje, które kreślają zachwanie biektu, pzimy dstępu d składwych: d teg, na którym pzimie znajduje się składwa zależy mżliwść dstępu d niej z innych miejsc prgramu. Składwe (dane i metdy) zadeklarwane w sekcji public są dstępne w całym prgramie. Twrzą ne publiczny interfejs klasy, za pmcą któreg krzystamy z biektu. Składwe (dane i metdy) zadeklarwane w sekcji private są dstępne jedynie w funkcjach składwych klasy. Ich zadaniem jest ukrycie danych i wewnętrznych prcedur biektu. Składwe (dane i metdy) zadeklarwane w sekcji prtected są dstępne jedynie w funkcjach składwych klasy i w funkcjach składwych jej klas pchdnych (dziedziczących). (Patrz: dziedziczenie). Specyfikatry dstępu (ang. access specifiers) public, private i prtected mgą w definicji klasy występwać wielkrtnie. Jeśli pierwszą grupą składwych knstrukcji class są składwe prywatne, t mżna przed nimi pminąć kwalifikatr private. Obwiązuje zasada, że dpóki w brębie definicji klasy nie wystąpi w spsób jawny inny kwalifikatr (na przykład public lub prtected), wszystkie dane i metdy są autmatycznie zakwalifikwane jak prywatne. Klasę mżna definiwać za pmcą knstrukcji class lub struct. Klasa pisana za pmcą słwa class jest klasą, w której wszystkie składwe są prywatne ( ile teg nie zmienimy za pmcą na przykład słwa public). Klasa pisana za pmcą słwa struct jest klasą, w której wszystkie składwe są publiczne ( ile teg nie zmienimy za pmcą na przykład słwa private). Czyli zapis struct S ; jest p prstu skrótem zapisu class S public: ; 10

Prgramwanie biektwe Wykład 1 Materiały: dr inż. Bżena Łpuch Pla danych: Metdy: 3.4.3 Klasa - składwe W ciele klasy mżna używać deklaracji dwlnych danych i struktur danych istniejących w języku C++. Nie wln inicjwać składwych. Mżna umieszczać w ciele klasy prttyp funkcji składwej (deklarację), zaś definicję funkcji umieszczać na zewnątrz; należy ją wtedy pprzedzić identyfikatrem klasy wraz z peratrem zasięgu. Każda metda zdefiniwana wewnątrz klasy jest uważana za funkcję rzwijaną w miejscu (wplataną, ang. inline), bez względu na t, czy zstanie pprzedzna słwem kluczwym inline. Jeśli funkcja składwa definiwana na zewnątrz ma być funkcją typu inline, należy pprzedzić ją kwalifikatrem inline. class MjaKlasa private: // pla danych i funkcje prywatne public: // pla danych i funkcje publiczne // ta funkcja jest definiwana w ciele klasy vid Fun1(int a) // instrukcje funkcji // ta funkcja jest tylk deklarwana w ciele klasy, // jest t zapwiedź funkcji, której definicja // znajduje się na zewnątrz klasy vid Fun2(int, int); ; // Definicja funkcji Fun2 vid MjaKlasa::Fun2(int a, int b) // instrukcje funkcji Metdy (funkcje składwe) mżna pdzielić na następujące kategrie: funkcje zarządzające stswane autmatycznie w mmencie twrzenia biektu klasy (knstruktry) i w mmencie jeg usuwania (destruktry); należą najczęściej d składwych publicznych; funkcje dstępu ich zadaniem jest udstępnienie składwych prywatnych klasy; należą d składwych publicznych; funkcje przetwarzające dknują peracji na składwych klasy, mgą krzystać z funkcji pmcniczych; należą d składwych publicznych; funkcje pmcnicze wykrzystywane przez inne kategrie funkcji; zazwyczaj są t składwe prywatne. 11

Prgramwanie biektwe Wykład 1 Materiały: dr inż. Bżena Łpuch 3.4.4 Obiekty Obiekt t pjedyncze, indywidualne wystąpienie klasy. Obiekty definiuje się pdbnie d zmiennych, umieszczając listę identyfikatrów za nazwą klasy. // definicja zmiennej int x; // definicja zmiennej x // definicja klasy class MjaKlasa // tutaj definicja składwych klasy MjaKlasa ; // definicje biektów MjaKlasa a; // definicja biektu a typu MjaKlasa MjaKlasa b,c; // definicja biektów b i c Prces twrzenia biektu plega na przydzieleniu mu bszaru pamięci wystarczająceg dla składwych będących danymi i strukturami danych, p czym wywływana jest metda będąca knstruktrem biektu. Odwłania d składwych biektu uzyskuje się za pmcą peratra "." umieszczneg p nazwie biektu. Przykład: MjaKlasa a; // deklaracja biektu a a.drukuj(); // wywłanie metdy Drukuj na rzecz biektu a Funkcje składwe (metdy) muszą być wywływane RAZEM z biektem. Metdy są takie same dla wszystkich biektów danej klasy. Dane przechwywane w biektach są różne. 12