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

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

Wykład 8: klasy cz. 4

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

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

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

Wykład 5: Klasy cz. 3

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

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

1 Historia i cechy C++ 2 PRZYDATNE KONSTRUKCJE

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

1 Historia i cechy C++ 2 PRZYDATNE KONSTRUKCJE

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

Materiały do zajęć VII

Zaawansowane programowanie w języku C++ Klasy w C++

Programowanie Obiektowo Zorientowane w języku C++ Klasy, pola, metody

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Podstawy Programowania Obiektowego

Wykład 4: Klasy i Metody

"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 );

Pola i metody statyczne

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

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

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Języki i metody programowania Java. Wykład 2 (część 2)

Ję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.

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

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

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Wykład nr 5. Temat: Klasy i abstrakcja danych, cz. I. W.S. Gilbert

Programowanie Obiektowe i C++

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

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

Rozdział 4 KLASY, OBIEKTY, METODY

Zaliczenie przedmiotu:

Język C++ Programowanie obiektowe

Języki i paradygmaty programowania

Podstawy programowania. Wykład: 12. Struktury, unie, pola bitowe. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Operator przypisania. Jest czym innym niż konstruktor kopiujący!

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

1 Atrybuty i metody klasowe

TEMAT : KLASY DZIEDZICZENIE

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne

Podstawy programowania III

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

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

Programowanie obiektowe

Przypomnienie o klasach i obiektach

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

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

Programowanie obiektowe

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

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

Podstawy programowania obiektowego

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 4. Karol Tarnowski A-1 p.

Programowanie Obiektowo Zorientowane w języku c++ Konstruktory

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Referencje do zmiennych i obiektów

Definiowanie własnych klas

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

Program dla praktyki lekarskiej. Instrukcja drukowania recept

KLASY cz4. Dorota Pylak. destruktory składowe statyczne przeciążanie operatorów. wskaźniki

Kurs WWW. Paweł Rajba.

Język C++ zajęcia nr 2

OBIEKTY PHP. G. Panuś

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Zmienne, stałe i operatory

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

Co to jest klasa? Z programistycznego punktu widzenia klasa stanowi typ danych, który odwzorowuje wspólne cechy jakiegoś obiektu.

Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006)

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Pola i metody statyczne. Klasy zawierające pola i metody statyczne

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Programowanie obiektowe. Dr hab. Inż. Marta Gładysiewicz-Kudrawiec Pokój 229 A1 Operatory new delete pliki-odczyt

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 1. Wprowadzenie, środowisko programistyczne, pierwsze programy

Programowanie obiektowe

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM

Opis szablonów globalnych AdOcean

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

Funkcje i klasy zaprzyjaźnione

PARADYGMATY PROGRAMOWANIA Wykład 2

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Podstawy Programowania Obiektowego

PARADYGMATY PROGRAMOWANIA Wykład 3

Opus Magnum C++11 : programowanie w języku C++. T. 2 / Jerzy Grębosz. Gliwice, cop Spis treści

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy PRAWA PRZYJACIÓŁ KLASY. Dostęp z zewnątrz: Dostęp z wewnątrz:

Wprowadzenie do programowanie obiektowego w języku C++

PARADYGMATY PROGRAMOWANIA Wykład 4

Programowanie w C++ Wykład 13. Katarzyna Grzelak. 4 czerwca K.Grzelak (Wykład 13) Programowanie w C++ 1 / 26

Programowanie Obiektowew języku C++ Zadania L4

Zwracanie obiektu. Funkcja może zwracać obiekty: #include"stdafx.h #include <iostream> using namespace std; class samp { inti; public:

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Zaawansowane programowanie w C++ (PCP)

Transkrypt:

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

Lista inicjalizacyjna knstruktra W klasie mgą być również stałe dane składwe (zadeklarwane jak cnst). Np.: KONSTRUKTORY I DESTRUKTORY Dane stałe muszą być zainicjalizwane! wykład 5: class Material { cnst flat mdul_yunga; //... }; Tak nie mżna: class Material { //cnst flat mdul_yunga=2e5; // Błąd! }; 2

KONSTRUKTORY I DESTRUKTORY Lista inicjalizacyjna knstruktra W tym przypadku d knstruktra muszą być dstarczne dpwiednie inicjalizatry, które zstaną wykrzystane jak wartści pczątkwe. Inicjalizacji danych stałych dknuje się za pmcą tzw. listy inicjalizacyjnej knstruktra w pstaci: np.: klasa::klasa(argumenty) : lista_inicjalizacyjna Klasa::Klasa(int a, int b, int c):dana1(a),dana2(b) // inicjalizacja { dana3=c; // przypisanie }; przy czym: class Klasa { cnst int dana1; // stała dana składwa cnst int dana2; // stała dana składwa int dana3; // zwykła dana składwa public: Klasa(int, int, int); }; 3

KONSTRUKTORY I DESTRUKTORY Lista inicjalizacyjna knstruktra Lista inicjalizacyjna pjawia się tylk w definicji knstruktra w deklaracji nie występuje! Lista inicjalizacyjna kreśla, jak zainicjalizwać niestatyczne składniki klasy ( składnikach statycznych później...). Zatem dane stałe muszą być inicjalizwane, pzstałe niestatyczne dane mgą być inicjalizwane za pmcą listy inicjalizacyjnej knstruktra. Knstruktr jak funkcja jest wyknywany w 2 etapach: 1. Inicjalizacja składników (za pmcą listy inicjalizacyjnej). 2. Przypisania i inne działania (wyknywane w ciele knstruktra). 4

KONSTRUKTORY I DESTRUKTORY Przykład: 5

KONSTRUKTORY I DESTRUKTORY Przykład: 6

SKŁADNIKI STATYCZNE KLASY Statyczna dana składwa: T dana składwa zadeklarwana jak static, np.: static int licznik; Dana taka jest twrzna w pamięci jednkrtnie i jest daną wspólną dla wszystkich biektów klasy (niejak glbalną daną klasy). Dlaczeg nie zmienna glbalna? - zmienne glbalne są dstępnie nie tylk dla klasy; - zbyt wiele zmiennych glbalnych nie świadczy dbrym stylu prgramwania; 7

SKŁADNIKI STATYCZNE KLASY Statyczna dana składwa: Deklaracja składnika statyczneg w brębie klasy nie jest jeg definicją. Definicja (już bez słwa static) jest umieszczana w miejscu, w którym ma zakres pliku (sugestia: na pczątku pliku, w którym zdefiniwane są funkcje składwe klasy). Definicja taka mże zawierać inicjalizację. Odnszenie się d składnika statyczneg: Klasa::licznik lub biekt.licznik 8

SKŁADNIKI STATYCZNE KLASY Statyczna funkcja składwa: np.: static int plicz(); Jeśli w klasie jest funkcja, która peruje wyłącznie na statycznych danych składwych klasy, t mżna ją zadeklarwać jak statyczną. np. jeśli istnieje składnik statyczny: static int licznik; t definicja statycznej funkcji składwej plicz() mże mieć pstać: int plicz() { return licznik;} P c? Funkcję taką mżna wywłać nie tylk na rzecz knkretneg biektu, ale również na rzecz samej klasy (nawet, jeśli nie istnieje żaden biekt tej klasy!): cut<<klasa::plicz(); 9

SKŁADNIKI STATYCZNE KLASY Przykład: 10

STAŁE F. SKŁADOWE I OBIEKTY Stała funkcja składwa: funkcja która biecuje nie mdyfikwać danych składwych biektów, na rzecz których zstała wywłana, np.: int Klasa::zwrc() cnst {return dana;} Stały biekt: mżna kreślić, że biekt ma być stały za pmcą słwa kluczweg cnst, np.: cnst Czas pludnie(12,0,0); Próba mdyfikacji stałeg biektu zakńczy się błędem składni. Na rzecz biektów stałych mżna wywłać tylk funkcję, która także zstała zadeklarwana jak cnst. Nawet jeśli jakaś funkcja nie mdyfikuje stałeg biektu (np. tylk zwraca lub wyświetla wynik), musi być funkcją stałą. 11

STAŁE F. SKŁADOWE I OBIEKTY Przykład: 12

FUNKCJE ZAPRZYJAŹNIONE Czasami dgdne jest, by jakaś funkcja spza danej klasy miała dstęp d składników prywatnych tej klasy. Funkcję taką dana klasa musi kreślić jak zaprzyjaźniną. Funkcja zaprzyjaźnina z klasą t funkcja, która mim, że nie jest składnikiem klasy, ma dstęp d wszystkich, nawet prywatnych składników klasy. T nie funkcja twierdzi, że jest zaprzyjaźnina z klasą! T klasa deklaruje, że przyjaźni się z tą funkcją i nadaje jej praw dstępu d wszystkich składników... 13

FUNKCJE ZAPRZYJAŹNIONE Deklarację funkcji zaprzyjaźninej umieszcza się wewnątrz definicji klasy, d której danych ma mieć dstęp, a nazwę tej funkcji pprzedza się słwem friend: class Nasza_klasa { //... friend vid przyjaciel(nasza_klasa &); //... }; Aby dnieść się d składnika klasy, z którą się przyjaźni, funkcja zaprzyjaźnina musi psłużyć się peratrem. lub peratrem > : biekt.skladnik wskaznik >skladnik 14

FUNKCJE ZAPRZYJAŹNIONE Przykład: 15

FUNKCJE ZAPRZYJAŹNIONE Krzyści: Dzięki funkcjm zaprzyjaźninym mżna nadać dstęp d prywatnych składników klasy nawet takim funkcjm, które są napisane w innym języku prgramwania (Frtran, Pascal, asembler, itp.). Funkcja zaprzyjaźnina mże być przyjacielem więcej niż jednej klasy, czyli mże mieć dstęp d prywatnych składników kilku klas! Funkcja zaprzyjaźnina mże być zwykłą funkcją, a mże być też funkcją składwą innej klasy (ma wtedy dstęp d prywatnych składników zarówn swjej klasy jak i tej klasy, z którą się przyjaźni). 16

FUNKCJE ZAPRZYJAŹNIONE Jeśli funkcja ma mieć dstęp d składników prywatnych dwóch klas, t mamy d wybru: - funkcja jest przyjacielem bu klas, - funkcja jest składnikiem jednej, a przyjacielem drugiej klasy. Deklaracja zapwiadająca (zwiastująca): Jeśli klasa nie zstała jeszcze zdefiniwana, a trzeba się d niej dnieść, wówczas należy ją wcześniej zadeklarwać (przypmnienie: w C++ każda nazwa przed użyciem musi zstać zadeklarwana) Przykład na następnym slajdzie... 17

FUNKCJE ZAPRZYJAŹNIONE Przykład (f. zaprzyjaźnina z 2 klasami): 18

FUNKCJE ZAPRZYJAŹNIONE Przykład (f. zaprzyjaźnina z 2 klasami): 19

FUNKCJE ZAPRZYJAŹNIONE Przykład (f. składwa zaprzyjaźnina z inną klasą): 20

FUNKCJE ZAPRZYJAŹNIONE Przykład (f. składwa zaprzyjaźnina z inną klasą): 21