Paradygmaty programowania. Paradygmaty programowania

Podobne dokumenty
Paradygmaty programowania. Paradygmaty programowania

Paradygmaty programowania

Paradygmaty programowania

Wykład 8: klasy cz. 4

Wprowadzenie do szablonów szablony funkcji

Wprowadzenie do szablonów szablony funkcji

Zaawansowane programowanie w C++ (PCP)

PARADYGMATY PROGRAMOWANIA Wykład 4

Zaawansowane programowanie w C++ (PCP)

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

Deklaracja struktury w C++

Dziedziczenie jednobazowe, poliformizm

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

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

Wykład 4: Klasy i Metody

Tablice i funkcje. Marcin Makowski. 26 listopada Zak lad Chemii Teoretycznej UJ

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {

Wskaźniki, funkcje i tablice

Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ

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

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

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

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

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

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

Szablony funkcji i szablony klas

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

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

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

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

Programowanie obiektowe w języku

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

PARADYGMATY PROGRAMOWANIA Wykład 3

Programowanie generyczne w C++

Programowanie obiektowe i C++ dla matematyków

Programowanie obiektowe - 1.

Zaawansowane programowanie w C++ (PCP)

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

Języki i techniki programowania Ćwiczenia 2

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

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

10. Programowanie obiektowe w PHP5

Konstruktor kopiujacy

Programowanie, część I

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

Funkcje. Piotr Zierhoffer. 7 października Institute of Computer Science Poznań University of Technology

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

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

Języki programowania imperatywnego

Wykład 1: Wskaźniki i zmienne dynamiczne

TEMAT : KLASY DZIEDZICZENIE

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

Wstęp do Programowania 2

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

Wykład 5: Klasy cz. 3

Klasy abstrakcyjne i interfejsy

Wyk lad 9 Podpierścienie, elementy odwracalne, dzielniki zera

Aplikacje w środowisku Java

PROE wykład 7 kontenery tablicowe, listy. dr inż. Jacek Naruniec

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Referencje do zmiennych i obiektów

Język C++ umożliwia przeciążanie operatora, tzn. zmianę jego znaczenia na potrzeby danej klasy. W tym celu definiujemy funkcję o nazwie:

Rozdzia l 3. Laboratorium 3. danych zawierajac

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

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

Polimorfizm. dr Jarosław Skaruz

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

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

Podstawy Programowania Obiektowego

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

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

Technologie i usługi internetowe cz. 2

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

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {

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

PARADYGMATY PROGRAMOWANIA Wykład 2

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

Wykład 3 Składnia języka C# (cz. 2)

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

Podstawy programowania obiektowego

Grzegorz Mazur. Zak lad Metod Obliczeniowych Chemii UJ. 14 marca 2007

Programowanie Obiektowe i C++

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

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

Enkapsulacja, dziedziczenie, polimorfizm

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

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

Programowanie i struktury danych. Wykład 4 Dr Piotr Cybula

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

Stos liczb całkowitych

Programowanie w C++ - wybrane przykłady szablonów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ

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

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

TYPY GENERYCZNE (GENERICS)

Wykład 6: Dziedziczenie

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

Podstawy programowania w języku C++ Zadania - dziedziczenie i polimorfizm

Funkcje wirtualne. Wskaźniki do klas pochodnych są podstawą dla funkcji wirtualnych i polimorfizmu dynamicznego.

Transkrypt:

Paradygmaty programowania Paradygmaty programowania Dr inż. Andrzej Grosser Cz estochowa, 2013

2

Spis treści 1. Zadanie 1 5 1.1. Wprowadzenie.................................. 5 1.2. Wskazówki do zadania.............................. 6 3

4 Spis treści

1. Zadanie 1 1.1. Wprowadzenie Szablon jest klasa lub funkcja, która jest parametryzowana zbiorem typów lub wartości. Najcześciej sa używane do implementacji ogólnych koncepcji, niezależnych od zastosowanych typów (poszczególne implementacje różnia sie jedynie typem przyjmowanych argumentów, przechowywanych pól sk ladowych np. implementacje tablicy różni lyby si e jedynie typem przechowywanych elementów). Na dzisiejszych zaj eciach b edziemy si e zajmować szablonami klas. Ich podstawowa sk ladnia w C++ wymaga zapisu przed nazwa klasy wymaganych parametrów: 1 template<typename T> 2 class Box { 3 public : 4 Box ( ) : wsk (new T( ) ) {} 5 explicit Box(T w) ; 6 //... 7 private : 8 T wsk ; 9 } ; W pokazanym powyżej przyk ladzie T jest nazwa parametru szablonu (tutaj jednym możliwe jest oczywiście przygotowanie szablonu z wieksz a liczba parametrów). W trakcie kompilacji, w zależności od tego jak bedzie szablon ukonkretniony, wszystkie wystapienia T bed a zastapione odpowiednim typem. Na przyk lad: 1. Box<int> b1; - T bedzie zastapione typem ca lkowitym int, 2. Box<double> b2; - T bedzie zastapione typem rzeczywistym podwójnej precyzji, 3. Box<Point> b3; - T może być nawet zastapione typem implementowanym przez użytkownika. W pokazanym przyk ladzie macie również podany przyk lad implementacji metod - konstruktora domyślnego i konstruktora jednoargumentowego. Kod konstrukotra domyślnego jest zapisany wewnatrz definicji klasy - implementacja w tym miejscu praktycznie nie różni sie od tego jak by laby zrealizowana wewnatrz zwyk lej klasy (poza użyciem parametru 5

6 1. Zadanie 1 szablonu). Implementacja na zewnatrz klasy by laby nieco bardziej z lożona, wymaga laby poinformowania kompilatora o użytych parametrach. Np dla konstruktora jednoargumentowego: 1 template<typename T> 2 Box<T>:: Box(T w) : wsk (new T( w) ) {} Dlatego latwiej jest implementować metody wewnatrz klasy. 1.2. Wskazówki do zadania W zadaniu chodzi o przygotowanie typu ogólnego Box, który jest rodzajem pude lka przechowujacego wskaźnik. Wszystkie operacje na przechowywanym pod tym wskaźnikiem obiektem sa wykonywane za pośrednictwem metod szablonu Box. Ponieważ jest przechowywany w klasie wskaźnik pokazujacy na obiekt dynamiczny, wiec konieczna jest prawid lowa implementacja odpowiednich metod (jakich?). Domyślna implementacja tych metod dostarczana przez kompilator (p lytkie kopiowanie obiektów) nie jest wystarczajaca. Na implementacj e Box jest narzucone dodatkowe wymaganie, żeby obiekty tej klasy zachowywa ly si e jak wskaźniki, tzn. dost ep do wskazywanych elementów by l realizowany za pośrednictwem operatora wy luskania i operatora dost epu do sk ladowej. Jest wi ec prosta implementacja czegoś co sie nazywa sprytny wskaźnik. Pozwala to na uzyskanie korzyści w porównaniu ze zwyk lymi wskaźnikami. Najlepiej spraw e wyjaśni porównanie implementacji z wykorzystaniem wskaźnika i klasy Box. Najpierw popatrzmy na wykorzystanie zwyk lego wskaźnika: 1 int w1 = new int ; 2 //Wy l uskanie 3 w1 = 1 0 ; 4 Point w2 = new Point ( ) ; 5 // Operator d o s t epu do sk l adowej. 6 w2 >x = 4 ; 7 //... 8 delete w1 ; 9 delete w2 ; A teraz na wykorzystanie klasy szablonowej Box: 1 Box<int> b1 ; 2 //Wy l uskanie 3 b1 = 1 0 ;

1.2. Wskazówki do zadania 7 4 Boix<Point> b2 ; 5 // Operator d o s t epu do sk l adowej. 6 b2 >x = 4 ; Prosz e zwrócić uwag e, że nie jest konieczne jawne zwalnianie pami eci w przypadku klasy Box (dlaczego?). Implementacja operator wy luskania jest prosta (co powinien zwracać?), natomiast operatora dost epu do sk ladowej jest niestety mniej intuicyjna. Przy prze ladowaniu tego operatora uzyskuje on specjalne znaczenie - Zapis b2->x oznacza tak naprawd e wywo lanie b2.operator->()->x. Czy na podstawie tego jesteście w stanie wywnioskować co ten operator powinien zwracać?