Podstawy Programowania Obiektowego

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

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

Programowanie obiektowe - 1.

Technologie i usługi internetowe cz. 2

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

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

Podstawy Języka Java

Modelowanie i Programowanie Obiektowe

Podstawy Programowania Obiektowego

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

Wykład 1. Projektowanie efektywnych algorytmów przetwarzania danych w sieciowych systemach usług, rzeczy i multimediów.

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

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

Do czego służą klasy?

Definiowanie własnych klas

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

Język programowania. Andrzej Bobyk

Programowanie obiektowe

Materiały do zajęć VII

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

KLASY cz.1. Dorota Pylak

hierarchie klas i wielodziedziczenie

TEMAT : KLASY DZIEDZICZENIE

Do czego służą klasy?

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

Podstawy programowania. Wykład PASCAL. Wstęp do programowania obiektowego. dr Artur Bartoszewski - Podstawy programowania, sem.

Język C++ Programowanie obiektowe

Programowanie obiektowe W1 Wprowadzenie. Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki

Szablony funkcji i szablony klas

Każdy z nich posiada swoje parametry. W przypadku silnika może to być moc lub pojemność, w przypadku skrzyni biegów można mówić o skrzyni

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

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

Wykład 8: klasy cz. 4

Wstęp do Programowania 2

Programowanie II. Lista 3. Modyfikatory dostępu plik TKLientBanku.h

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

Wykład 5: Klasy cz. 3

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

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

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

Definiowanie własnych klas

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

Wprowadzenie do szablonów szablony funkcji

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

C++ Przeładowanie operatorów i wzorce w klasach

Wprowadzenie do szablonów szablony funkcji

Technologie obiektowe

Wykład 9: Polimorfizm i klasy wirtualne

Enkapsulacja, dziedziczenie, polimorfizm

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

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Aplikacje w środowisku Java

Programowanie, część I

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

Szablony funkcji i klas (templates)

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.

Programowanie obiektowe

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

Programowanie komputerowe. Zajęcia 7

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

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

Programowanie obiektowe język C++

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

Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów

Laboratorium 1 - Programowanie proceduralne i obiektowe

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

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Programowanie obiektowe w języku

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

Modelowanie diagramów klas w języku UML. Łukasz Gorzel @stud.umk.pl 7 marca 2014

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

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

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

PROGRAMOWANIE OBIEKTOWE W C++ - cz 1. Definicja klasy, składniki klasy, prawa dost pu, definiowanie funkcji składowych, konstruktory i destruktory.

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

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

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

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

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

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

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

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

Programowanie Obiektowe i C++

Języki i paradygmaty programowania

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

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

Program 6. Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje:

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

2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy

Technologie cyfrowe semestr letni 2018/2019

Programowanie obiektowe

Java Język programowania

Definicje klas i obiektów. Tomasz Borzyszkowski

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

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

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

Języki programowania imperatywnego

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

PARADYGMATY PROGRAMOWANIA Wykład 2

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

Transkrypt:

Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK

Tematyka wykładu Idea programowania obiektowego Definicja a deklaracja klasy Dane składowe (atrybuty) Funkcje składowe (metody) Sposoby ukrywania informacji w klasie Tworzenie obiektów klas Posługiwanie się składnikami klasy 2

Wstęp Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych, która definiuje programy za pomocą obiektów elementów łączących: stan (czyli dane = atrybuty), zachowanie (czyli procedury, tu: metody). Obiektowy program komputerowy wyrażony jest jako zbiór takich obiektów, komunikujących się pomiędzy sobą w celu wykonywania zadań. Podejście to różni się od tradycyjnego programowania proceduralnego, gdzie dane i procedury nie są ze sobą bezpośrednio związane. Programowanie obiektowe ma ułatwić pisanie, konserwację i wielokrotne użycie programów lub ich fragmentów. 3

Programowanie obiektowe a rzeczywistość Formie w programowaniu obiektowym odpowiada klasa, materii - instancja - obiekt. Jest to najbardziej naturalny sposób rozumienia rzeczywistości podstawową cechą mózgu ludzkiego jest klasyfikacja - łączenie występujących w rzeczywistości obiektów w grupy - klasy. 4

Podstawowe założenia paradygmatu obiektowego Cechy języków programowania, które czynią je obiektowymi: Abstrakcja - każdy obiekt w systemie służy jako model abstrakcyjnego "wykonawcy", który może wykonywać pracę, opisywać i zmieniać swój stan, oraz komunikować się z innymi obiektami w systemie, bez ujawniania, w jaki sposób zaimplementowano dane cechy. Enkapsulacja - czyli ukrywanie implementacji, hermetyzacja. Zapewnia, że obiekt nie może zmieniać stanu wewnętrznego innych obiektów w nieoczekiwany sposób. Tylko wewnętrzne metody obiektu są uprawnione do zmiany jego stanu. 5

Podstawowe założenia paradygmatu obiektowego Polimorfizm - referencje i kolekcje obiektów mogą dotyczyć obiektów różnego typu, a wywołanie metody dla referencji powoduje zachowanie odpowiednie dla pełnego typu obiektu wywoływanego. Jeśli dzieje się to w czasie działania programu, to nazywa się to późnym wiązaniem lub wiązaniem dynamicznym. Niektóre języki udostępniają bardziej statyczne (w trakcie kompilacji) rozwiązania polimorfizmu - na przykład szablony i przeciążanie operatorów w C++. Dziedziczenie - porządkuje i wspomaga polimorfizm i enkapsulację dzięki umożliwieniu definiowania i tworzenia specjalizowanych obiektów na podstawie bardziej ogólnych. 6

Pojęcia klasy i obiektu Obiekt to podstawowe pojęcie wchodzące w skład paradygmatu obiektowości w analizie i projektowaniu oprogramowania oraz w programowaniu. Klasa to zbiór obiektów wyróżniających się wspólnymi cechami takimi jak struktura i zachowanie; częściowa lub całkowita definicja dla obiektów. 7

Pojęcia klasy i obiektu Obiekt jest to struktura zawierająca: dane (atrybuty klasy) metody klasy, czyli funkcje służące do wykonywania na tych danych określonych zadań. Z reguły obiekty (a właściwie klasy, do których te obiekty należą) są konstruowane tak, aby dane przez nie przenoszone były dostępne wyłącznie przez odpowiednie metody, co zabezpiecza je przed niechcianymi modyfikacjami. Takie zamknięcie danych nazywa się enkapsulacją czyli jakby zamknięcie ich w kapsule. W istocie obiekty są rozwinięciem koncepcji programowania z kontrolą typów zmiennych. W programowaniu obiektowym obiekty tworzone są dynamicznie jako podstawowy element konstrukcji programu. 8

Pojęcia klasy i obiektu Każdy obiekt ma trzy cechy: tożsamość, czyli cechę (atrybuty) umożliwiającą jego identyfikację i odróżnienie od innych obiektów stan, czyli aktualny stan danych składowych zachowanie (ang. behaviour), czyli zestaw metod wykonujących operacje na tych danych. 9

Klasa - definicja Klasa to zdefiniowanie własnego typu danych - wymyślony na potrzeby danego programu. Ten typ, to nie tylko jedna lub kilka zebranych liczb, ale to również sposób ich zachowania jako całości. 01. class mojaklasa 02. { 03. // ciało klasy 04. //... 05. }; 10

1/14/2017 Tworzenie obiektów tworzenie obiektu klasy mojaklasa obiektmojaklasa; tworzenie wskaźnika do obiektu klasy mojaklasa * wskazniknaobiektymojaklasa; tworzenie referencji (przezwiska) do obiektu klasy mojaklasa & obiektmojaklasa = wskazniknaobiektymojaklasa; 11

1/14/2017 Składniki klasy 1. class mojaklasa 2. { 3. // ---------------- atrybuty klasy (cechy charakterystyczne klasy) 4. int a; // definicja zmiennej typu całkowitego 5. float b[10]; // definicja tablicy typu rzeczywistego 6. char *c; // definicja wskaźnika na zmienną znakową 7. // ---------------- funkcje składowe klasy (metody klasy) 8. int funkcja1(); // deklaracja funkcji zwracającej typ int 9. float funkcja2(); // deklaracja funkcji zwracającej typ float 10. char funkcja3(); // deklaracja funkcji zwracającej typ char 06. }; 12

1/14/2017 Składniki klasy 1. class radio 2. { 3. // ---------------- atrybuty klasy (cechy charakterystyczne klasy) 4. int glosnosc; // definicja zmiennej typu całkowitego 5. float czestotliwosc[10];// definicja tablicy typu rzeczywistego 6. char *nazwa; // definicja wskaźnika na zmienną znakową 7. // ---------------- funkcje składowe klasy (metody klasy) 8. void UstawGlosnosc( ); 9. float PobierzCzestotliwosc( ); 10. void wypisz(); 11. }; 13

1/14/2017 Definicja funkcji składowych wewnątrz klasy: 1. class mojaklasa 2. { 3. int a; 4. //------------------------ definicja metody 5. void mojafunkcja(void) 6. { 7. cout<< "zmienna a = "<< a; 8. } 9. //------------------------------------------- 10.}; 14

Definicja funkcji składowych na zewnątrz klasy: 1. class mojaklasa 2. { 3. int a; 4. void mojafunkcja(void); // deklaracja metody 5. }; 6. //------------------------ definicja metody 7. void nazwa_klasy::funkcja(void) 8. { 9. cout<< "zmienna a = "<< a; 10.} 11.//------------------------------------------ 15

1/14/2017 Definicja funkcji składowych 1. class radio{ 2. int glosnosc; 3. float czestotliwosc[10]; 4. char *nazwa; 5. void UstawGlosnosc(int & ); // deklaracja metody 6. float PobierzCzestotliwosc( ); // deklaracja metody 7. //----------------------------------------- definicja metody 8. void wypisz(){ 9. cout<< "Radio "<< nazwa<< endl; 10. } 11.//---------------------------------------------------------- 12.}; 13.//----------------------------------------- definicja metody 14.void radio::ustawglosnosc(int & _a){ 15. glosnosc = _a; 16.} 17.//---------------------------------------------------------- 16

Sposoby ukrywania informacji prywatny - składniki klasy dostępne są tylko i wyłącznie w klasie i poprzez funkcje składowe klasy. private: publiczny - składniki klasy dostępne zarówno dla funkcji składowych klasy jak również poza klasą. public: chroniony - składniki klasy nie dostępne poza klasą, jednak dostępne dla klas pochodnych. protected: 17

Dostęp do danych składowych obiekt - do danej składowej klasy można odwołać się poprzez operator. obiekt.skladnik wskaźnik - odniesienie się do danej składowej obiektu pokazywanego wskaźnikiem można odwołać się poprzez operator -> wskaznik->skladnik referencja - do danej składowej obiektu znanego z referencji można odwołać się poprzez operator. referencja.skladnik 18

Dostęp do funkcji składowych obiekt - do funkcji składowej klasy można odwołać się poprzez operator. obiekt.funkcja( ); wskaźnik - odniesienie się do funkcji składowej obiektu pokazywanej wskaźnikiem można odwołać się poprzez operator -> wskaznik->funkcja( ); referencja - do funkcji składowej obiektu znanego z referencji można odwołać się poprzez operator. referencja.funkcja( ); 19

Struktura 01. struct mojastruktura 02. { 03. // ciało struktury 04. //... 05. }; Domyślnie składniki klasy są wstawione do zakresu public: 20

Koniec Dziękuję za uwagę i zapraszam na 15 minut przerwy. W dalszej części ćwiczenia do samodzielnego wykonania. 21

1/14/2017 Ćwiczenia do wykonania Zadanie 1 Napisz klasę punkt2d pozwalający przechowywać informację dotyczące punktu w dwuwymiarowym układzie współrzędnych kartezjańskim. Dane składowe (atrybuty) klasy powinny znaleźć się w prywatnym zakresie danych. Ponadto należy napisać funkcje składowe (metody) klasy pozwalające na: ustawienie własności klasy; wypisanie własności klasy według wzorów: (x,y), [x,y], {x,y}; pobranie wartości współrzędnej x; pobranie wartości współrzędnej y; obliczenie odległości obiektu klasy punktu2d od początku układu współrzędnych; obliczenie odległości pomiędzy dwoma obiektami klasy punkt2d; Przynajmniej jedna funkcja musi być zdefiniowana wewnątrz i na zewnątrz definicji klasy. Następnie w funkcji main stworzyć przynajmniej dwa obiekty klasy punkt2d oraz jedną zmienną dynamiczną klasy punkt2d Zaprezentować działanie metod klasy na stworzonych obiektach. Wykorzystać sposób ukrywania informacji w klasie. 22