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

Podobne dokumenty
Wykład 8: klasy cz. 4

Wykład 5: Klasy cz. 3

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

Programowanie Obiektowe i C++

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

Dziedziczenie. Ogólna postać dziedziczenia klas:

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

Język C++ Programowanie obiektowe

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

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

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

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

Języki Programowania. Prowadząca: dr inż. Hanna Zbroszczyk. tel: Konsultacje: piątek:

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM

PARADYGMATY PROGRAMOWANIA Wykład 4

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

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

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

Rozdział 4 KLASY, OBIEKTY, METODY

Szablony klas, zastosowanie szablonów w programach

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

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

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

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

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

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

Wprowadzenie do programowanie obiektowego w języku C++

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

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

Przypomnienie o klasach i obiektach

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

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

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

Dziedziczenie jednobazowe, poliformizm, tablice wskaźników na obiekty

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

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

Programowanie w C++ Wykład 4. Katarzyna Grzelak. 19 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

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

Programowanie obiektowe

Dziedziczenie jednobazowe, poliformizm

Mechanizm dziedziczenia

PARADYGMATY PROGRAMOWANIA Wykład 3

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

W dowolnym momencie można zmienić typ wskaźnika.

Materiały do zajęć VII

Podstawy Programowania Obiektowego

Enkapsulacja, dziedziczenie, polimorfizm

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

TEMAT : KLASY DZIEDZICZENIE

Klasy i obiekty cz I Klasy, obiekty, podstawy używania obiektów

Dokumentacja do API Javy.

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Programowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14

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

Programowanie obiektowe w C++ Wykład 03 Temat wiodący: Konstruktory i deskruktory. Konstruktory i Destruktory

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Listy powiązane zorientowane obiektowo

Wykład 9: Metody wirtualne i polimorfizm

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

PARADYGMATY PROGRAMOWANIA Wykład 2

dr inż. Jarosław Forenc

Programowanie Obiektowo Zorientowane w języku c++ Konstruktory

OBIEKTY PHP. G. Panuś

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

Wykład 1: Wskaźniki i zmienne dynamiczne

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

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.

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

> C++ dziedziczenie. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

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

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

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

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

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura

C++ - [4-7] Polimorfizm

Programowanie obiektowe - 1.

Kurs WWW. Paweł Rajba.

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { zdefiniuje. Integer::operator=(ri);

Pola i metody statyczne

Podstawy Programowania Obiektowego

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

Podstawy programowania obiektowego

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

Wykład 4: Klasy i Metody

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

Abstrakcyjny typ danych

Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory.

Programowanie obiektowe

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Modelowanie obiektowe

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Podstawy programowania III

Laboratorium 1 - Programowanie proceduralne i obiektowe

Wykład V. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

PROGRAMOWANIE OBIEKTOWE W C++ cz. 2. Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów.

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Transkrypt:

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

KLASY ZAPRZYJAŹNIONE Jedna klasa (A) może zadeklarować przyjaźń z inną klasą (B). Oznacza to, że klasa B ma dostęp do wszystkich składników klasy A (ale nie odwrotnie!): class Klasa_B; //deklaracja zapowiadająca class Klasa_A { friend class Klasa_B; // deklaracja przyjaźni //... // reszta ciała klasy Klasa_A }; 2

KLASY ZAPRZYJAŹNIONE Przykład: 3

KLASY ZAPRZYJAŹNIONE Przykład: 4

KLASY ZAPRZYJAŹNIONE class Klasa_B; //deklaracja zapowiadająca class Klasa_A { friend class Klasa_B; // deklaracja przyjaźni //... // reszta ciała klasy Klasa_A }; o Jest możliwe, że klasa B również deklaruje przyjaźń z klasą A: class Klasa_B; class Klasa_A { friend class Klasa_B; //... // reszta ciała klasy Klasa_A }; class Klasa_B { friend class Klasa_A; // deklaracja przyjaźni //... // reszta ciała klasy Klasa_B }; 5

KLASY ZAPRZYJAŹNIONE Przykład: 6

KLASY ZAPRZYJAŹNIONE Przykład: 7

TABLICE OBIEKTÓW Można tworzyć tablice obiektów jakiejś klasy (podobnie jak w przypadku obiektów typów wbudowanych) Np. mając klasę: class Narzedzie { public: int numer; }; możemy stworzyć tablicę: Narzedzie klucz_plaski[10]; // tablica 10 obiektów klasy Narzedzie Jeśli chcemy się odnieść do danej składowej konkretnego obiektu: klucz_plaski[5].numer=13; cout<<klucz_plaski[5].numer; 8

TABLICE OBIEKTÓW Przykład (wersja 1): 9

TABLICE OBIEKTÓW Przykład (wersja 2): 10

TABLICE OBIEKTÓW Taka inicjalizacja tablicy obiektów jak na poprzednim slajdzie: Plyta album[3]={{"rhcp","californication"}, {"Iron Maiden","Powerslave"}, {"Tool", "10,000 Days"}}; jest możliwa dla tzw. agregatów. Agregat to klasa która: 1. Nie ma danych innych niż publiczne. 2. Nie ma konstruktorów. 3. Nie ma klas podstawowych. 4. Nie ma funkcji wirtualnych. o Dane podajemy w takiej kolejności, w jakiej są deklarowane w klasie. o Jeśli nie podamy wszystkich wartości reszta jest wypełniana zerami (lub ciągiem pustym). 11

TABLICE OBIEKTÓW Wracając do klasy Narzedzie: class Narzedzie { public: int numer; }; Stwórzmy tablicę obiektów: Narzedzie klucz_oczkowy[5]; // tablica 5 obiektów klasy Narzedzie Jeśli stworzymy wskaźnik do pokazywania na obiekty tej klasy: Narzedzie *wsk; i ustawimy go na konkretny element tablicy obiektów: wsk=&klucz_oczkowy[2]; to możemy się odnieść do danej składowej konkretnego obiektu: wsk->numer=23; tu: wpisujemy coś do składowej numer tego obiektu, na który pokazuje wskaźnik Oczywiście aby wskaźnik pokazywał na następny obiekt w tablicy wystarczy: wsk++; 12

TABLICE OBIEKTÓW Przykład: 13

TABLICE OBIEKTÓW A co jeśli klasa nie jest agregatem? Musimy wyposażyć klasę w konstruktor umożliwiający inicjalizację. Na liście inicjalizacyjnej umieszczamy wywołania konstruktorów dla poszczególnych obiektów tablicy. Przykład: następny slajd... 14

TABLICE OBIEKTÓW Przykład (już bez wskaźników): 15

OBIEKTY JAKO SKŁADNIKI KLASY o Danymi składowymi klasy mogą być obiekty innych klas. o Mówi się wówczas o złożeniu (agregacji, zawieraniu). o Zatem obiekt będący całością składa się z określonej liczby obiektów-składników: pl.wikipedia.org/wiki/rower 16

OBIEKTY JAKO SKŁADNIKI KLASY o np. jeśli mamy następującą klasę: class Wyswietlacz { //... // ciało klasy Wyswietlacz }; to (zapewne między innymi) obiekt klasy Wyswietlacz może być składnikiem klasy Smartfon: class Smartfon { //... Wyswietlacz moj_wysw; //... // reszta ciała klasy Smartfon }; o Złożenie stosuje się, gdy jakiś obiekt jest składnikiem innego obiektu. o Dziedziczenie stosuje się, gdy jakiś obiekt jest rodzajem innego obiektu (o tym przy dziedziczeniu...). 17

OBIEKTY JAKO SKŁADNIKI KLASY o Najpierw uruchamiane są konstruktory obiektów składowych, potem nadrzędnego (trzeba mieć z czego poskładać obiekt nadrzędny...) o Destruktory w odwrotnej kolejności. o Obiekt będący składnikiem innej klasy można inicjalizować jedynie za pomocą listy inicjalizacyjnej. Póżniej jest to już niemożliwe. o Oczywiście jeśli obiekt składowy nie ma konstruktora, to nie umieszcza się go na liście inicjalizacyjnej... o By pracować na oryginałach obiektów składowych a nie ich kopiach korzystamy z referencji (lub wskaźników) patrz: przykład 2. 18

OBIEKTY JAKO SKŁADNIKI KLASY Przykład 1: 19

OBIEKTY JAKO SKŁADNIKI KLASY o Konstruktor na poprzednim slajdzie miał postać (tu: definicja poza klasą): Lampka::Lampka (string naz, Zarowka zar): zarowa(zar) { nazwa=naz;}; o Konstruktor przyjmował argument w postaci obiektu klasy Zarowka.: Zarowka slaba(40,"zwykla"); // najpierw obiekt składowy Lampka lampa1("biurkowa",slaba); // potem obiekt nadrzędny o Gdybyśmy mieli dodatkowo konstruktor: Lampka::Lampka (string naz, int waty, string opis ): zarowa(waty,opis) { nazwa=naz;}; to moglibyśmy również tworzyć obiekt klasy Zarowka podając niezbędne dane do stworzenia obiektu składowego (tu: moc i opis żarówki): Lampka lampa2("stojaca",9,"diodowa"); 20

OBIEKTY JAKO SKŁADNIKI KLASY Przykład 2 (bardziej rozbudowany): 21

OBIEKTY JAKO SKŁADNIKI KLASY Przykład 2 (bardziej rozbudowany): 22