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

Podobne dokumenty
Wykład 8: klasy cz. 4

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

Wykład 5: Klasy cz. 3

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

Bloki anonimowe w PL/SQL

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

Oracle PL/SQL. Paweł Rajba.

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

PHP 5 język obiektowy

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

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

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Podstawy programowania III

PARADYGMATY PROGRAMOWANIA Wykład 4

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

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

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

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

Podstawy Programowania Obiektowego

Dziedziczenie jednobazowe, poliformizm

Szablony klas, zastosowanie szablonów w programach

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

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

Kurs WWW. Paweł Rajba.

Wstęp do programowania obiektowego. Wykład 2

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

Programowanie obiektowe

Materiały do zajęć VII

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

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

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

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

15. Funkcje i procedury składowane PL/SQL

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

Programowanie Obiektowo Zorientowane w języku c++ Konstruktory

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

TEMAT : KLASY DZIEDZICZENIE

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

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

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Programowanie, część I

Wykład 4: Klasy i Metody

Podstawy Programowania Obiektowego

Oracle PL/SQL. Paweł Rajba.

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

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

Programowanie Obiektowe i C++

Pakiety podprogramów Dynamiczny SQL

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Podstawy Programowania Obiektowego

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

Aplikacje w środowisku Java

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

Systemy GIS Tworzenie zapytań w bazach danych

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

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

Post-relacyjne bazy danych

Język SQL, zajęcia nr 1

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

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

Rozdział 4 KLASY, OBIEKTY, METODY

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Język C++ Programowanie obiektowe

Programowanie obiektowe

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

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

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Programowanie komputerowe. Zajęcia 7

Język C++ Różnice między C a C++

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

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Materiały do laboratorium MS ACCESS BASIC

Procedury i funkcje składowane

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

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

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

class Student Deklaracja klasy Osoba: Deklaracja klasy Student:

10. Programowanie obiektowe w PHP5

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Wstęp do Programowania 2

KLASY cz.1. Dorota Pylak

Zaawansowane programowanie w C++ (PCP)

Dokumentacja do API Javy.

Podstawy programowania obiektowego

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

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

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

Aplikacje w środowisku Java

Mechanizm dziedziczenia

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

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

SQL (ang. Structured Query Language)

dr inż. Jarosław Forenc

Konstruktor kopiujacy

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Programowanie obiektowe - 1.

Język PL/SQL Procedury i funkcje składowane

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

Transkrypt:

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

Konstruktory Konstruktory w językach obiektowych są to specjalne metody wywoływane podczas tworzenia nowego obiektu i służące do jego inicjalizacji (przygotowaniu do późniejszego użycia). Przeobrażają one stertę bitów w pamięci w nowy, "żywy obiekt. W najprostszym przypadku konstruktor ustawia pola obiektu na pewne wartości początkowe.

Wywołanie konstruktora powoduje wykonanie następujących zadań: obliczenie rozmiaru obiektu alokacja obiektu w pamięci wyczyszczenie (zerowanie) obszaru pamięci zarezerwowanej dla obiektu (tylko w niektórych językach) wpisanie do obiektu informacji łączącej go z odpowiadającą mu klasą (połączenie z metodami klasy) wykonanie kodu klasy bazowej (w niektórych językach niewymagane) wykonanie kodu wywołanego konstruktora

W językach C++, C#, PHP 4 konstruktor klasy jest metodą o takiej samej nazwie co klasa. W PHP 5 metoda o nazwie construct.

Konstruktory w różnych językach C++ PHP

Konstruktory w C++ Metoda o tej samej nazwie co klasa Typy konstruktorów: domyślny, zwykły, kopiujący, konstruktor konwertujący

Konstruktor domyślny Konstruktor, który można wywołać bez podawania jakichkolwiek parametrów. Szczególnym przypadkiem konstruktora domyślnego jest konstruktor, w którym wartości wszystkich parametrów mają wartości domyślne, w efekcie czego można go wywołać bez podawania ich, np.: class MojaKlasa { public: MojaKlasa(int parametrdomyslny = 0) { //konstruktor domyślny this->dana = parametrdomyslny; private: int dana; ; int main () { MojaKlasa obiektmojejklasy; //użycie konstruktora domyślnego return 0;

Konstruktor zwykły Konstruktor, który można wywołać, podając co najmniej jeden parametr. Jest to zwykły konstruktor stworzony przez twórcę klasy. Jego zadeklarowanie w C++ nie powoduje niejawnego generowania konstruktora domyślnego. Z reguły parametry takiego zwykłego konstruktora spełniają funkcję inicjalizatorów, które przypisują odpowiednie wartości wewnętrznym zmiennym tworzonego obiektu class Wektor { public: Wektor(double x, double y) { this->x = x; this->y = y; ; private: double x; double y; int main () { Wektor mojwektor(3, 2); return 0;

Konstruktor kopiujący Konstruktor, którego jedynym argumentem niedomyślnym jest referencja do obiektu swojej klasy. Jest on używany niejawnie wtedy, gdy działanie programu wymaga skopiowania obiektu (np.: przy przekazywaniu obiektu do funkcji przez wartość). Gdy konstruktor kopiujący nie został zdefiniowany, jest on generowany niejawnie (nawet gdy są zdefiniowane inne konstruktory) i domyślnie powoduje kopiowanie wszystkich składników po kolei. class MojaKlasa { public: int dana; MojaKlasa(int parametrdomyslny) { // inny konstruktor programu this->dana = parametrdomyslny; ; int main () { MojaKlasa obiektmojejklasy(5); MojaKlasa kopiaobiektu(obiektmojejklasy); // uzyty zostaje wygenerowany niejawnie konstruktor kopiujący std::cout << kopiaobiektu.dana; // wyswietli '5 return 0;

Konstruktor kopiujący W większości przypadków kopiowanie obiektu składnik po składniku jest tym, czego oczekuje użytkownik klasy i nie ma potrzeby definiowania własnej wersji konstruktora kopiującego. Jednak nie zawsze takie działanie jest pożądane class MojaKlasa { public: int* wsk; MojaKlasa(int parametrdomyslny) { this->wsk = new int(parametrdomyslny); ~MojaKlasa() { //destruktor delete this->wsk; ; int main () { MojaKlasa obiektmojejklasy(5); std::cout << *(obiektmojejklasy.wsk) << std::endl; //wyswietli '5 MojaKlasa kopiaobiektu(obiektmojejklasy); // kopiowanie skladnik po składniku *(kopiaobiektu.wsk) = 3; std::cout << *(obiektmojejklasy.wsk) << std::endl; // wyswietli '3 return 0;

Konstruktor konwertujący Konstruktor, którego jedynym argumentem niedomyślnym jest obiekt dowolnej klasy lub typ wbudowany. Powoduje niejawną konwersję z typu argumentu na typ klasy własnej konstruktora class MojaKlasa { public: MojaKlasa(int parametr) { //konstruktor konwertujacy z typu int na typ MojaKlasa // ciało konstruktora ~MojaKlasa() { //destruktor delete this->wsk; ; void funkcja(mojaklasa obiekt) { /* cialo funkcji */ int main () { int zmienna = 5; funkcja(zmienna); //wywolanie konstruktora konwertujacego z int na MojaKlasa return 0;

Konstruktory w PHP Metoda konstruktora musi nazywać się construct. Pobiera dowolną ilość argumentów jednak nie może nic zwracać. Klasa nie musi zawierać konstruktora. Jednak gdy klasa posiada konstruktor, podczas tworzenia obiektów należy podać argumenty, które zostaną przesłane do konstruktora. <? php class Person { private $_name = null; public function construct($name) { $this->_name = $name; public function getname() { return $this->_name; $janusz = new Person('Janusz');

Kolejność wywołań konstruktorów Kolejność wywołań konstruktorów klasy bazowej, czy też obiektów składowych danej klasy, jest określona kolejnością: 1. Konstruktory klas bazowych w kolejności w jakiej znajdują się w sekcji dziedziczenia w deklaracji klasy pochodnej. 2. Konstruktory obiektów składowych klasy w kolejności, w jakiej obiekty te zostały zadeklarowane w ciele klasy. 3. Konstruktor klasy.

Destruktor w obiektowych językach programowania specjalna metoda, wywoływana przez program przed usunięciem obiektu i niemal nigdy nie jest wywoływana wprost w kodzie używającym obiektu. Pod względem funkcjonalnym jest to przeciwieństwo konstruktora. class MojaKlasa { public: ~MojaKlasa(); //destruktor ; MojaKlasa::~MojaKlasa() { //tu wykonujemy wszystkie operacje jakie maja sie wykonac automatycznie tyz przed zwolnieniem zajmowanej pamieci przez klase

Cechy destruktora tak samo jak konstruktor nie posiada zwracanego typu musi być zawsze bezparametrowy możliwość zdefiniowania tylko i wyłącznie jednego destruktora dla danej klasy.

Destruktor oznacza się różnie, w zależności od języka, np.: w C++ nazwa destruktora odpowiada nazwie klasy i poprzedzona jest tyldą (~) w PHP 5 nazwa destruktora to destruct

ITERATORY W programowaniu obiektowym jest to obiekt pozwalający na sekwencyjny dostęp do wszystkich elementów lub części zawartych w innym obiekcie, zwykle kontenerze lub liście. Podstawowym celem iteratora jest pozwolić użytkownikowi przetworzyć każdy element w kolekcji bez konieczności zagłębiania się w jej wewnętrzną strukturę. Np.: przejść do kolejnego elementu, na koniec na początek. Użytkownik nie musi np. zajmować się tym, że odwoła się do nieistniejącego elementu.

ITERATORY w C++ W C++ iteratory są szeroko wykorzystywane w bibliotece STL. Iteratory stosuje się zwykle w parach, gdzie jeden jest używany do właściwej iteracji, zaś drugi oznacza koniec kolekcji. Iteratory tworzone są przez odpowiadający im kontener standardowymi metodami, takimi jak begin() i end(). Iterator zwrócony przez begin() wskazuje na pierwszy element, podczas gdy iterator zwrócony przez end() wskazuje na pozycję za ostatnim elementem kontenera. ContainerType C; //dowolny standardowy typ konterneta np. std::list<sometype> ContainerType::iterator A = C.begin(); ContainerType::iterator Z = C.end(); while (A!= Z) { ContainerType::value_type value = *A; std::cout << value << std::endl; ++A;

ITERATORY w PHP Iterator to obiekt pozwalający na sekwencyjny dostęp do wszystkich elementów lub części zawartych w innym obiekcie (np. iterator zwracający kolejne rekordy korzystając z rezultatu zapytania do bazy danych). Iteratory występują w PHP od wersji 5. $iterator = new DirectoryIterator('directory'); foreach($iterator as $file) { echo $file->getfilename(); echo '<br/>';

ZAPYTANIA Kwerendy utworzone w języku zapytań powodujące wyszukanie, tworzenie, usunięcie lub modyfikację danych w bazie danych. Przykładem języka operującego na zapytaniach w bazach danych jest bardzo popularny SQL (ang. Structured Query Language), wspierany jako standard przez ANSI. Inne, mniej popularne, to np. QBE (ang. Query By Example) czy XQuery.

Przykłady zapytań w języku SQL INSERT INTO TABLE osoby VALUES ('Jan', 'Kowalski') Tworzy nowy rekord w tabeli osoby SELECT imie FROM osoby WHERE nazwisko='kowalski Pobiera z tabeli osoby dane spełniające określone kryteria UPDATE osoby SET imie='adam Modyfikuje dane w tabeli osoby DELETE FROM osoby WHERE nazwisko='kowalski Usuwa z tabeli rekordy spełniające określone kryteria CREATE TABLE OSOBY (imię VARCHAR(50), nazwisko VARCHAR(50)) Tworzy nową tabelę osoby o określonej strukturze

Selektory (CSS) Umożliwiają przypisać wybranemu elementowi konkretny styl. Selektory wykorzystywane podczas tworzenia własnych arkuszy stylów mogą przybierać różne formy. Specyfikacja przewiduje wykorzystanie następujących rodzajów selektorów: selektory proste, selektory uniwersalne, selektory potomka, selektory dziecka, selektory sąsiednie lub rodzeństwa, selektory identyfikatora, selektory klasy, pseudoklasy, pseudoelementy.

Selektory (CSS) Selektory proste P {color:red; font-size:14pt; Selektory uniwersalne P {color:red; font-size:14pt; Selektory "potomka P SPAN {font-style:italic; font-size:20pt; Selektory "dziecka P > SPAN {font-style:italic; textdecoration:underline; color:green; Selektory "rodzeństwa P + SPAN {font-style:italic; textdecoration:underline; color:green; Selektor atrybutu Identyfikatory H1[title] {color:red; P#pochyly {font-style:italic; fontsize:20pt; Klasy p.moja {color:green; font-size:14pt; Pseudoklasy A:link {color:red; A:visited{color:green;