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

Podobne dokumenty
Zaawansowane programowanie w języku C++ Programowanie obiektowe

Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++

Zaawansowane programowanie w języku C++ Wyjątki

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

Zaawansowane programowanie w języku C++ Przeciążanie operatorów

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

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

Materiały do zajęć VII

Wykład 8: klasy cz. 4

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

Wykład 4: Klasy i Metody

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

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

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

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

Wykład 5: Klasy cz. 3

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

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

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy KONSTRUKTORY

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

PARADYGMATY PROGRAMOWANIA Wykład 4

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

Podstawy programowania obiektowego

Programowanie obiektowe

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

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

Enkapsulacja, dziedziczenie, polimorfizm

Język C++ Programowanie obiektowe

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

Kurs WWW. Paweł Rajba.

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

Programowanie obiektowe

Podstawy Programowania Obiektowego

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

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

Wstęp do programowania obiektowego. Wykład 2

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

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

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

PARADYGMATY PROGRAMOWANIA Wykład 2

Zaawansowane programowanie w C++ (PCP)

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

Technologie obiektowe

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

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

Szablony klas, zastosowanie szablonów w programach

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

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.

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

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

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

Programowanie obiektowe - 1.

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

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

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

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

Konstruktor kopiujacy

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

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

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

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

Programowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.

Programowanie obiektowe

Architektura komputerów Wprowadzenie do algorytmów

Dziedziczenie jednobazowe, poliformizm

Zaawansowane programowanie w C++ (PCP)

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

Programowanie obiektowe

Wprowadzenie do programowanie obiektowego w języku C++

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

Programowanie obiektowe w języku

Podstawy Programowania Obiektowego

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Przedmioty kierunkowe

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Wykład 9: Polimorfizm i klasy wirtualne

Do czego służą klasy?

PODSTAWOWE ZASADY PROGRAMOWANIA OBIEKTOWEGO NA BAZIE PAKIETU ROOT

Programowanie obiektowe

Programowanie Obiektowo Zorientowane w języku c++ Konstruktory

Systemy operacyjne na platformach mobilnych 2 Podstawy obsługi powłoki Bash

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2012/2013

Aplikacje w środowisku Java

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

Dziedziczenie. Ogólna postać dziedziczenia klas:

Systemy operacyjne na platformach mobilnych 2 Programowanie aplikacji z graficznym interfejsem użytkownika w GTK+

Języki i paradygmaty programowania

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

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

Nowe słowa kluczowe. Komentarze. Wskaźniki typu void. class, delete, new, friend,... /* Komentarz w C i C++ */ // Komentarz w C++ (do końca wiersza)

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

Zaawansowane programowanie w języku C++ Biblioteka standardowa

Rozdział 4 KLASY, OBIEKTY, METODY

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

Definiowanie własnych klas

Wstęp do Programowania 2

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. Słownik programisty: Struktury jako typy abstrakcyjne

Wykład 5: Więcej o Klasach i Metodach

PHP 5 język obiektowy

Definicje klas i obiektów. Tomasz Borzyszkowski

Transkrypt:

Zaawansowane programowanie w języku C++ Klasy w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki Łódzkiej - zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do zatrudniania osób niepełnosprawnych Prezentacja dystrybuowana jest bezpłatnie Politechnika Projekt Łódzka, współfinansowany ul. Żeromskiego przez Unię 116, Europejską 90-924 Łódź, tel. (042) 631 28 83 w ramach Europejskiego www.kapitalludzki.p.lodz.pl Funduszu Społecznego

Wstęp Co to jest model? Jak rozpoznać cechy szczególne modelowanego zjawiska? Zagadka :) 2

Klasy a świat rzeczywisty Modelowanie rzeczy świata nas otaczającego programowanie proceduralne programowanie modułowe programowanie obiektowe Klasa jako typ Ukrywanie danych i implementacji enkapsulacja Ponowne użycie kodu Hierarchia klas 3

Deklaracja klasy Plik: data.h class Data public: // konstruktor: Data(); // metody dostępowe: int Rok(); int Miesiac(); int Dzien(); private: // zmienne (dane) klasy: int rok; int miesiac; int dzien; }; 4

Kwantyfikatory dostępu do klas private sekcja umożliwiająca dostęp do pól i metod tylko poprzez inne metody klasy public sekcja eksportująca dane (pola) i metody na zewnątrz klasy każdy możne z nich skorzystać protected związane z dziedziczeniem i zostanie omówione później class Data public:... private:... }; 5

Pola klas Zmienne zadeklarowane wewnątrz klasy Opisują cechy szczególe klasy Przechowują dane powiązane z klasą W zależności od kwantyfikatora dostępne lub nie spoza klasy class Data private: }; // zmienne (dane) klasy: int rok; int miesiac; int dzien; Enkapsulacja! 6

Metody klas Funkcje zadeklarowane wewnątrz klasy Funkcje operujące na polach klasy Ze względu na kwantyfikator dostępne lub nie spoza klasy Najpopularniejsze: getters i setters class Data public: // metody dostępowe: int Rok(); int Miesiac(); int Dzien(); }; 7

Zasada projektowa Do pól klasy umożliwiamy dostęp jedynie przez specjalne metody: getters jeżeli dane tylko do odczytu getters i setters jeżeli dane do odczytu i zapisu 8

Konstruktor Specjalna metoda (procedura), która wywoływana jest przez kompilator w momencie tworzenia instancji klasy obiektu Zadaniem konstruktora jest: Inicjalizacja pól klasy Przygotowanie instancji klasy do użycia Konstruktor nie może zwrócić wartości (procedura, a nie funkcja) Nie można przekazać informacji o błędzie w konstruktorze! class Data }; public: // konstruktor: Data(); 9

Destruktor Specjalna metoda (procedura), która wywoływana jest przez kompilator w momencie niszczenia instancji klasy obiektu Zadaniem destruktora jest: Zwolnienie zasobów wykorzystywanych przez obiekt Destruktor nie może zwrócić wartości (procedura, a nie funkcja) oraz nie ma argumentów Nie można przekazać informacji o błędzie w destruktorze! class Data public: // destruktor: ~Data(); }; 10

Konstruktor i destruktor przykład użycia Konstruktor alokuje dane na stercie: Tablica::Tablica this->buffor = new char[1024]; } Destruktor musi zwolnić przydzieloną pamięć: Tablica::~Tablica delete[] this->buffor; } 11

Przeciążanie konstruktora class Data public: // konstruktor: Data(); Data( int rok, int miesiac, int dzien ); }; 12

Tworzenie obiektów i dostęp do pól oraz metod Jako zmienne automatyczne (na stosie): Data data1; Data data2( 2009, 4, 22 ); std::cout << data1.rok() << std::endl; std::cout << data2.dzien() << std::endl; Jako zmienne dynamiczne (na stercie): Data data1 = new Data(); Data data2 = new Data( 2009, 4, 22 ); std::cout << data1->rok() << std::endl; std::cout << data2->dzien() << std::endl; 13

Proces tworzenia (konstrukcji) obiektu 1. Rezerwacja pamięci na obiekt (stos lub sterta) 2. Inicjalizacja pól obiektu wartościami domyślnymi wywołanie ich konstruktorów domyślnych 3. Wywołanie konstruktora Punkty 1-3 są nierozłączone i wszystkie muszą wykonać się pomyślnie, aby obiekt został utworzony! 14

Proces destrukcji (usuwania) obiektu 1. Wywołanie destruktora 2. Wywołanie destruktora wszystkich pól składowych obiektu 3. Zwolnienie pamięci zajmowanej przez obiekt Punkty 1-3 są nierozłączone i wszystkie muszą wykonać się pomyślnie, aby obiekt został usunięty! 15

Definicja a deklaracja klasy Interfejs Implementacja Klient Klient Klient Dane (pola klasy) Metody (funkcje klasy) Deklaracja klasy Plik: h, hpp Definicja klasy Plik: cc, cpp Preprocesor, kompilacja Konsolidacja 16

Definicja klasy Plik: data.cpp Data::Data() } Data::Data( int r, int m, int d) rok = r; miesiac = m; dzien = d; } int Data::Rok() return rok; } int Data::Miesiac() return miesiac; } 17

Lista inicjalizacyjna Konstruktor bez listy inicjalizacyjnej: Data::Data( int r, int m, int d) rok = r; miesiac = m; dzien = d; } Konstruktor z listą inicjalizacyjną: Data::Data( int r, int m, int d) : rok( r ), miesiac( m ), dzien( d ) } 18

Kwantyfikator const w klasach Plik: data.h class Data public: // konstruktor: Data(int r, int m, int d) : rok( r ), miesiac ( m ), dzien( d ) }; // metody dostępowe: int Rok() const; int Miesiac() const; int Dzien() const; private: // zmienne (dane) klasy: const int rok; const int miesiac; const int dzien; }; 19

Pola i metody statyczne w klasach Plik: stale.h class Stale public: // konstruktor: static ustawczas( int c ) czas = c; } }; static const float pi = 3.14; static const float g = 9.98; private: static int czas; Plik: stale.cpp int Stale::czas; 20

Konstruktor kopiujący Plik: X.h class X public: X( X &kopia ); }; Bezpieczniej: Plik: X.h class X public: X( const X &kopia ); }; 21

Zaawansowane programowanie w języku C++ Klasy w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki Łódzkiej - zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do zatrudniania osób niepełnosprawnych Prezentacja dystrybuowana jest bezpłatnie Politechnika Łódzka, ul. Żeromskiego 116, 90-924 Łódź, tel. (042) 631 28 83 w ramach Europejskiego www.kapitalludzki.p.lodz.pl Funduszu Społecznego