C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.

Slides:



Advertisements
Podobne prezentacje
C++ wykład 2 ( ) Klasy i obiekty.
Advertisements

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
Klasa listy jednokierunkowej Przekazywanie parametrów do funkcji
Programowanie obiektowe
Programowanie obiektowe
Klasy i obiekty.
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 STRUKTURALNE
Implementacja ekstensji klasy
Programowanie obiektowe w Javie
Podstawy informatyki Wirtotechnologia – Wskaźniki i referencje
Podstawy informatyki Rekurencja i rekurencja Grupa: 1A
Podstawy informatyki Powtórka Grupa: 1A Prowadzący: Grzegorz Smyk
Struktury.
C++ wykład 2 ( ) Klasy i obiekty.
Zasady zaliczenia Warunki uzyskania zaliczenia:
Wykład 1: Wskaźniki Podstawy programowania Programowanie w C
Klasy w C++. Deklaracja klasy class NazwaTwojejKlasy { //w tym miejscu piszemy definicje typów, //zmienne i funkcje jakie mają należeć do klasy. }; //tutaj.
Java 3 MPDI Programowanie obiektowe W7. import java.io.*; public class X { // kontrukcja throws – określenie jakie wyjątki może dana metoda // sygnalizować
T: Różnice pomiędzy programowaniem strukturalnym a obiektowym
Programowanie obiektowe III rok EiT
Jerzy F. Kotowski1 Informatyka I Wykład 14 DEKLARATORY.
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Programowanie obiektowe III rok EiT
Andrzej Repak Nr albumu
Java – coś na temat Klas Piotr Rosik
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.
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Programowanie obiektowe 2013/2014
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ć.
Kurs języka C++ – wykład 3 ( )
Programowanie w języku C++
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Programowanie strukturalne i obiektowe C++
Kurs języka C++ – wykład 4 ( )
K URS JĘZYKA C++ – WYKŁAD 2 ( ) Klasy i obiekty.
Programowanie obiektowe Wykład 9 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/15 Dariusz Wardowski.
Paweł Starzyk Obiektowe metody projektowania systemów
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.
PO13-1 / 19 Wykład 13 Wyjątki i ich zgłaszanie Wyłapywanie wyjątków Obsługa wyjątków Wykorzystanie polimorfizmu Filtrowanie wyjątków Błędy w konstruktorach.
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.
Podstawy informatyki Funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
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.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Programowanie Obiektowe – Wykład 6
Typy wyliczeniowe, kolekcje
Kurs języka C++ – wykład 3 ( )
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
(według:
Delegaty Delegat to obiekt „wiedzący”, jak wywołać metodę.
Programowanie Obiektowe – Wykład 2
Kurs języka C++ – wykład 4 ( )
Wskaźniki Elżbieta Labocha.
Programowanie obiektowe
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Zapis prezentacji:

C++ mgr inż. Tomasz Turba Politechnika Opolska 2016

Zajęcia [ ]  Klasy i obiekty  Korzystanie  Prawa dostępu  Metody  Korzystanie i statyka  Konstruktor / destruktor  ->THIS!<-  Zadanie domowe

Klasa  Klasa = lepsza organizacja kodu złożonego z typów, zmiennych, funkcji, etc.  Klasa jest jak pudełko w którym zamykamy składowe  Klasa ~~ struktura = TYP DANYCH Definicja: class NAZWA_KLASY { //typy, instrukcje } ; Użycie: NAZWA_KLASY nazwa_zmiennej; //znajomy widok? == OBIEKT!

Korzystanie z klasy  Różnicą względem struktury jest prawo dostępu! (domyślnie – PRIVATE!)  PRIVATE  zmienne i funkcje tylko do użycia w klasie  PROTECTED  zmienne dziedziczone do innej klasy  PUBLIC  dostęp do składowych klasy z dowolnego miejsca kodu

#include class NAZWA_KLASY { int prywatne1; //domyślny PRIVATE public: //w dół PUBLIC int publiczne1; int publiczne2; protected: //w dół PROTECTED int chronione1; int chronione2; private: int prywatne2; public: int publiczne3; protected: int chronione3, chronione4; }; int main() { NAZWA_KLASY obiekt; obiekt.publiczne1 = 1; //GIT! obiekt.chronione1 = 1; //BŁĄD obiekt.prywatne1 = 1; //BŁĄD }

Metoda  Metoda = funkcja w klasie (powiązana z klasą)  Obowiązują uprawnienia! Definicja: class NAZWA_KLASY { void metodaprv(); //deklaracja w klasie public: int metodapub(int x) //definicja w klasie { return x; } }; Wywołanie metody: NAZWA_KLASY obiekt; obiekt.metodapub(1); obiekt.metodaprv(); //BŁĄD!

#include class Klasa { int MojInt; public: void Set(int n); int Get(); }; void Klasa::Set(int n) { MojInt = n; } int Klasa::Get() //wywołanie poza klasą { return MojInt; } int main() { Klasa k; k.Set(5); std::cout << k.Get(); }

Zmienne i metody statyczne #include class Klasa { static int wspolne; public: void metoda() { std::cout << wspolne << std::endl; ++wspolne; } }; int Klasa::wspolne = 0; int main() { Klasa a, b, c; a.metoda(); b.metoda(); c.metoda(); b.metoda(); a.metoda(); c.metoda(); }

Konstruktor  Konstruktor = funkcja w klasie (metoda), zawsze tworzona (nawet niejawnie)  Musi mieć nazwę identyczną jak nazwa klasy; nie może nic zwracać (!)  Chcemy aby każdy obiekt klasy Miesiąc po jej utworzeniu generował tablicę dni tygodnia w zależności od miesiąca i roku Klasycznie: class Miesiac { public: int dni[31]; int liczbaDni; string nazwa; Miesiac(int numer, int rok);//deklaracja konstruktora }; Miesiac::Miesiac(int numer, int rok)//definicja konstruktora { // instrukcje … }

Tworzenie konstruktora Klasycznie: Miesiac styczen2000(1, 2000); Wskaźnikowo: Miesiac* styczen2000 = new Miesiac(1, 2000); Instrukcje inicjujące: Rok() : miesiace(new Miesiac[12]), liczbaDni(7) { instrukcje… } Kopiująco (referencja na stały obiekt): Miesiac miesiac(12, 2005); Miesiac kopia(miesiac);

Destruktor  Zniszczenie konstruktora, dealokacja pamięci z obiektów, klas  There can be only one! class Klasa { Klasa(); //konstruktor ~Klasa();//destruktor };

#include class Test { public: Test() { std::cout << "Konstruktor" << std::endl; } Test( const Test & ) { std::cout << "Konstruktor kopiujacy" << std::endl; } ~Test() { std::cout << "Destruktor" << std::endl; } }; int main() { { Test t; } std::cout << "---" << std::endl; { Test t1; Test t2 = t1; } }

This ->  Wskazanie na obiekt dla którego została wywowałana metoda (nie dotyczy statycznych metod!) #include class Klasa { public: void Metoda() { std::cout << „O to adres: " << this; } };

This -> #2 class Klasa { int x; public: void Metoda(int x) { this->x = x; //Do x z klasy przypisujemy argument x } }; Uzupełnij kodem z góry i dołu.

Zadanie domowe  Przerób program strukturalny (zad. 5) na w pełni obiektowy program klasowy [5pkt]  Podpowiedź: podpowiedz.cpp © c0x.pl – proszę przeanalizować i zmodyfikować.  Obowiązują te same „funkcje” – sortowania  BEZ OBSŁUGI PLIKOWEJ (chyba, że ktoś chce być pr0 +1pkt)