Technologie internetowe II Wykład 2 – Funkcje, Obiekty Dr Krzysztof Heller.

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

Funkcje w PHP ABK.
C++ wykład 2 ( ) Klasy i obiekty.
C++ wykład 4 ( ) Przeciążanie operatorów.
Język C/C++ Funkcje.
Programowanie obiektowe
Programowanie obiektowe
Programowanie obiektowe
Wzorce.
Język ANSI C Funkcje Wykład: Programowanie komputerów
Prowadzący: mgr inż. Elżbieta Majka
Wprowadzenie do języka skryptowego PHP
Wprowadzenie do języka skryptowego PHP – cz. 2
Kamil Smitkiewicz Bezpieczeństwo w PHP.
PROGRAMOWANIE STRUKTURALNE
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Podstawy informatyki Powtórka Grupa: 1A Prowadzący: Grzegorz Smyk
Struktury.
Damian Urbańczyk PHP Obsługa sesji.
C++ wykład 2 ( ) Klasy i obiekty.
Wstęp do programowania obiektowego
PHP wprowadzenie.
Dr Anna Kwiatkowska Instytut Informatyki
Podstawy programowania
Podstawy programowania
Podstawy programowania
Programowanie strukturalne i obiektowe
Funkcje w Pascalu Przypomnienie wiadomości o procedurach Prowadzący: Anna Kaleta Piotr Chojnacki.
Technologie internetowe II
Programowanie obiektowe III rok EiT
Prezentacja i szkolenie
Technologie internetowe II
Andrzej Repak Nr albumu
Java – coś na temat Klas Piotr Rosik
Dziedziczenie Maciek Mięczakowski
Inicjalizacja i sprzątanie
JAVA.
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Koncepcja procesu Zadanie i proces. Definicja procesu Process – to program w trakcie wykonywania; wykonanie procesu musi przebiegać w sposób sekwencyjny.
Tworzenie Aplikacji Internetowych
Podstawy informatyki 2013/2014
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Programowanie obiektowe – język C++
Programowanie obiektowe 2013/2014
Komendy SQL do pracy z tabelami i bazami
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
Zajęcia I Organizacja zajęć Rejestracja i uruchamianie makr
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ć.
Programowanie w języku C++
Projektowanie stron WWW
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Funkcje w C++ Funkcja – wydzielony fragment kodu użyty w programie (raz lub więcej razy) spełniający określone zadanie, np. obliczenie średniej ocen.
Programowanie strukturalne i obiektowe C++
Kurs języka C++ – wykład 4 ( )
Temat 5: Instrukcje: print(), echo()
Programowanie Zaawansowane
Wykład 2 Programowanie obiektowe. Programowanie obiektowe wymaga dobrego zrozumienia działania funkcji definiowanych przez użytkownika, w ten sposób będziemy.
Partnerstwo dla Przyszłości 1 Lekcja 28 Dziedziczenie i rodzaje dziedziczenia.
Podstawy informatyki Funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Pakiety numeryczne Skrypty, funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
 Formuła to wyrażenie algebraiczne (wzór) określające jakie operacje ma wykonać program na danych. Może ona zawierać liczby, łańcuchy znaków, funkcje,
Wykład 4 Dr Aneta Polewko-Klim Dr Aneta Polewko-Klim
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
Delegaty Delegat to obiekt „wiedzący”, jak wywołać metodę.
Programowanie Obiektowe – Wykład 2
Aplikacje i usługi internetowe
Zapis prezentacji:

Technologie internetowe II Wykład 2 – Funkcje, Obiekty Dr Krzysztof Heller

Technologie internetowe II2 Literatura Meloni J.C.: PHP, MySQL i Apache dla każdego. Wydanie III, Helion, 2007 Lis M.: PHP i MySQL dla każdego, Helion, 2005 Leszek 'leon' Krupiński: Wykłady internetowe, et_II_wyklad2.ppthttp://docs.wsei.pl/dydaktyka/Techn_Intern et_II_wyklad2.ppt

Technologie internetowe II3 Plan wykładu 2 Wywoływanie funkcji, zasięg zmiennych. Definiowanie funkcji, postać i sposoby przekazywania argumentów, zwracanie wartości przez funkcję. Obiekty.

Funkcje

Technologie internetowe II5 Definicja funkcji Funkcja przetwarza dane wejściowe zwracając dane wyjściowe. Funkcję wywołuje się podając jej nazwę, wykonuje wówczas zawarty w niej kod. Funkcje rozpoznaje się po nawiasach występujących po ich nazwie. W nawiasach podaje się parametry dla danej funkcji (opcjonalnie). Niektóre funkcje zwracają jakąś wartość, a więc wywołanie takiej funkcji można wstawić jak dowolne inne wyrażenie do listy parametrów innej funkcji czy np. do obliczenia. Funkcje sa wbudowane (jak array(), each(), list(), explode() czy implode()) lub zdefiniowane przez programistę.

Technologie internetowe II6 Składnia function nazwa_funkcji ($argument1, $argument2) { // treść funkcji }

Technologie internetowe II7 Przykładowa funkcja 1 <?php function duzeczesc() { echo " CZEŚĆ! "; } duzeczesc(); ?>

Technologie internetowe II8 Opis funkcji Przykładowa funkcja służy do obliczania sumy dwóch wyrażeń podawanych jako parametry (kolejne parametry oddziela się przecinkiem). W przypadku pominięcia któregoś z parametrów przypisana mu będzie wartość 0 - dzięki zaznaczeniu " = 0" po określeniu nazwy parametru w definicji funkcji. Takie podstawienie nie jest konieczne. Z parametrów funkcji można korzystać jak z dowolnej innej zmiennej. Wewnątrz funkcji dostępne są tylko zmienne w niej definiowane i parametry.

Technologie internetowe II9 Opis funkcji (2) Do określania co jest zwracane przez funkcję służy instrukcja return. Instrukcja return może być wywołana w dowolnym miejscu funkcji - po dojściu do tej instrukcji kończy się wykonanie funkcji. Funkcja może nie zwracać żadnych wartości. Taka funkcja przydaje się jeśli często powtarzany jest jakiś fragment kodu. Taka funkcja kończy swoje wykonanie po dojściu do końca jej definicji lub instrukcji return. Funkcje w PHP nie mogą być ponownie definiowane. Mogą być definiowane w dowolnym miejscu kodu. Wewnątrz funkcji znajdować się może dowolny, prawidłowy pod względem składniowym kod - nawet definicje innych funkcji czy klas.

Technologie internetowe II10 Przykładowa funkcja 2 <?php function suma($parametr1 = 0, $parametr2 = 0) { $wartosc = $parametr1 + $parametr2; return $wartosc; } ?>

Technologie internetowe II11 Przykładowa funkcja 3 <?php function font($tekst, $wielkosc = 3) { echo " $tekst "; } font("Nagłówek ", 5); font("pewien tekst "); font("więcej tekstu "); font("jeszcze więcej tekstu "); ?>

Technologie internetowe II12 Zasięg zmiennych Zmienna zdeklarowana w obrębie funkcji staje się zmienną lokalną dla tej funkcji Zmienna zdeklarowana na zewnątrz funkcji nie będzie widoczna w jej wnętrzu. Z wnętrza funkcji nie można bezpośrednio odwoływać się do zmiennych zdefiniowanych w innych częściach skryptu. Instrukcja gobal służy do dostępu do zmiennej bez przekazywania jej jako argument. Operacje wewnątrz funkcji na zmiennej zdefiniowanej jako global skutkują zmiana tej zmiennej.

Technologie internetowe II13 Tablice globalne i superglobalne W każdym miejscu kodu dostępna jest tablica asocjacyjna $GLOBALS, której kluczami są nazwy zmiennych dostępnych w zasięgu głównym. W PHP sa tak zwane tablice superglobalne. Użytkownik nie może samemu tworzyć takich tablic. Zawierają one dane przekazywane do PHP metodami GET, POST, informacje o przekazanych plikach, dane z ciasteczek i sesji - odpowiedno $_GET, $_POST, $_FILES, $_COOKIE, $_SESSION. Mają one zastąpić tablice $HTTP_*_VARS, które ze względu na kompatybilność są jeszcze obecne. Tablice superglobalne dostępne są w dowolnym miejscu kodu, bez potrzeby użycia instrukcji global.

Technologie internetowe II14 Test zasięgu 1 <?php function test() { $zmiennatestowa = "to jest zmienna testowa"; } echo "zmienna testowa: $zmiennatestowa "; ?>

Technologie internetowe II15 Test zasięgu 2 <?php $zycie = 42; function sensZycia() { echo "Sens życia to $zycie"; } sensZycia(); ?>

Technologie internetowe II16 Test zasięgu 3 <?php $zycie = 42; function sensZycia() { global $zycie; echo "Sens życia to $zycie";} sensZycia(); ?>

Technologie internetowe II17 Przechowanie wartości zmiennej pomiędzy wywołaniami Zmienne wewnątrz funkcji istnieją jedynie w trakcie jej wywoływania. Wartości tych zmiennych po zakończeniu wywołania funkcji nie istnieją, ponowne wywołanie nie pamięta poprzednich wartości. Można zdefiniować zmienne globalne (instrukcja global), ale musimy panować nad zmianami wartości tej zmiennej. Bezpieczne zapamiętanie wartości zmiennej odbywa się przez instrukcję static.

Technologie internetowe II18 Przykład przechowywania zmiennych 1 <?php $liczba_wywolan = 0; function numerowanyNaglowek($tekst) { global $liczba_wywolan; $liczba_wywolan++; echo " $liczba_wywolan. $tekst "; } numerowanyNaglowek("Jabłka"); echo " Bardzo dobre. "; numerowanyNaglowek("Gruszki"); echo " Naprawdę przepyszne. "; ?>

Technologie internetowe II19 Przykład przechowywania zmiennych 2 <?php function numerowanyNaglowek($tekst) { static $liczba_wywolan = 0; $liczba_wywolan++; echo " $liczba_wywolan. $tekst "; } numerowanyNaglowek("Jabłka"); echo " Bardzo dobre. "; numerowanyNaglowek("Gruszki"); echo " Naprawdę przepyszne. "; ?>

Technologie internetowe II20 Przekazywanie przez referencje Przy przekazywaniu argumentów funkcji w zmiennych umieszczane są kopie aktualnych wartości zmiennych. Ewentualne operacje na argumentach nie zostawiają śladu poza wnętrzem funkcji. Odwołanie przez referencją do oryginalnej zmiennej działa inaczej – zmienia wartość zmiennej, na którą wskazuje.

Technologie internetowe II21 Przykład – bez referencji <?php function dodajPiec($num) { $num += 5; } $orygnum = 10; dodajPiec($orygnum); echo $orygnum; ?>

Technologie internetowe II22 Przykład – z referencją <?php function dodajPiec(&$num) { $num += 5; } $orygnum = 10; dodajPiec($orygnum); echo $orygnum; ?>

Technologie internetowe II23 Istnienie funkcji Nie zawsze wiadomo, czy wywoływana funkcja istnieje. Aby sprawdzić istnienie funkcji używamy konstrukcji function_exists () Argumentem funkcji jest ciąg znaków określający nazwę funkcji. Funkcja zwraca true jeśli funkcja o podanej nazwie istnieje, w przeciwnym razie false.

Technologie internetowe II24 Przykład funkcji - podsumowanie <?php function znacznik($znacznik, $tekst, $funkcja=) { If ((!empty($tekst))&&(function_exists($funkcja))) { $tekst=$funkcja($tekst); return.$tekst. ; } else { return.$tekst. ; }} function podkresl ($tekst) { return.$tekst. ; }

Technologie internetowe II25 Przykład funkcji – podsumowanie (cd.) echo znacznik (b, pogrub mnie); echo znacznik (i, i mnie podkreśl, podkreśl); echo znacznik (i, pochyl mnie i zacytuj, create_function($tekst, return "$tekst&quot::)); ?>

Klasy i obiekty

Technologie internetowe II27 Klasy Klasy są ściśle związane z pojęciem obiektowych zasad pisania aplikacji. Obiekt, tak jak w rzeczywistości, posiada swoje właściwości i można z nim zrobić różne rzeczy. Klasa nie jest obiektem, ale jego definicją –klasą jest np. pojęcie kamień, ale nie jego konkretny egzemplarz –definicja klasy zawiera zmienne (właściwości obiektu) i funkcje (rzeczy, które można zrobić z tymi obiektami).

Technologie internetowe II28 Pojęcie obiektu Obiekt jest ucieleśnieniem pewnej klasy Obiekt charakteryzuje się własnościami Ponadto elementem składowym obiektu mogą być metody Metody operują na własnościach obiektu Klasa definiuje obiekt – jego cechy (własności) i metody Dzięki obiektom unikamy niepożądanego wpływania jednych części programu na drugie

Technologie internetowe II29 Tworzenie klasy Class NazwaKlasy { // tutaj wpisujemy definicje } $obiekt1 = new NazwaKlasy();

Technologie internetowe II30 Istnienie klasy <?php class mojaKlasa { // miejsce na kod} $obiekt1 = new mojaKlasa(); echo "\$obiekt1 jest typu ".gettype($obiekt1)." "; if (is_object($obiekt1)) { echo "Słowo honoru! \$obiekt1 jest naprawdę obiektem!"; } ?>

Technologie internetowe II31 Prosta klasa <?php class mojSamochod { var $kolor = "srebrny"; var $marka = "Mazda"; var $model = "Protege5";} $samochod = new mojSamochod(); echo "Jeżdżę samochodem ".$samochod- >marka." ".$samochod->model.", kolor ".$samochod->kolor; ?> własności obiektu

Technologie internetowe II32 Prosta klasa 2 <?php class mojSamochod { var $kolor; var $marka; var $model;} $samochod = new mojSamochod(); $samochod->kolor = "czerwony"; $samochod->marka = "Porsche"; $samochod->model = "Boxter"; echo "Jeżdżę samochodem ".$samochod->marka." ".$samochod->model.", kolor ".$samochod->kolor; ?> zmiana własności obiektu

Technologie internetowe II33 Metody obiektów Metoda umożliwia wykonywanie operacji wewnątrz klasy. Metoda wygląda i działa jak funkcja, lecz jest definiowana wewnątrz klasy. Metoda może korzystać z własności klasy. Zmienna $this odwołuje się do bieżącego egzemplarza obiektu. Własności można modyfikować wewnątrz metody. Oznacza to, że obiekt może zmieniać swoje właściwości.

Technologie internetowe II34 Klasa cześć <?php class mojaKlasa { function powiedzCzesc() { echo "CZEŚĆ!"; }} $obiekt1 = new mojaKlasa(); $obiekt1->powiedzCzesc(); ?>

Technologie internetowe II35 Klasa cześć <?php class mojaKlasa { var $imie = "Bolek"; function powiedzCzesc() { echo "CZEŚĆ! Nazywam się ".$this->imie; } } $obiekt1 = new mojaKlasa(); $obiekt1->powiedzCzesc(); ?> Operowanie na własnościach klasy z wnętrza metody

Technologie internetowe II36 Klasa cześć <?php class mojaKlasa { var $imie = "Bolek"; function ustawImie($i) { $this->imie = $i; } function powiedzCzesc() { echo "CZESĆ! Nazywam się ".$this->imie; }} $obiekt1 = new mojaKlasa(); $obiekt1->ustawImie("Ziuta"); $obiekt1->powiedzCzesc(); ?> zmiana wartości własności z wnętrza klasy

Dziedziczenie

Technologie internetowe II38 Konstruktor Kolejnym pojęciem z zakresu obiektowości jest konstruktor. Konstruktor jest to funkcja o takiej samej nazwie jak klasa. Konstruktor ustala początkowe wartości zmiennych (funkcja wywoływana jest automatycznie przy tworzeniu obiektu). Konstruktorowi można podać pewne wartości przy tworzeniu obiektu.

Technologie internetowe II39 Zasady działania na klasach Aby dostać się do zmiennej lub funkcji będącej składową klasy należy użyć operatora "->". Wewnątrz funkcji należącej do klasy zmienna $this oznacza właśnie ten obiekt - należy używać do chcąc odwołać się do zmiennej lub funkcji należącej do klasy. Dziedziczenie służy do tworzenia nowych klas na podstawie innych, rozszerzając ich możliwości. W PHP obiektowość jest bardzo uboga, tak więc i dziedziczenie jest bardzo uproszczone.

Technologie internetowe II40 Dziedziczenie <?php class mojaKlasa { var $imie = "Mateusz"; function mojaKlasa($i) { $this->imie = $i; } function powiedzCzesc() { echo "CZEŚĆ! Nazywam się ".$this->imie; }} class klasaPotomna extends mojaKlasa {// kod klasy} $obiekt1 = new klasaPotomna("Mały Bolek"); $obiekt1->powiedzCzesc(); ?> konstruktor ta klasa jest na razie pusta

Technologie internetowe II41 Dziedziczenie 2 <?php class mojaKlasa { var $imie = "Mateusz"; function mojaKlasa($i) { $this->imie = $i; } function powiedzCzesc() { echo "CZEŚĆ! Nazywam się ".$this->imie; }} class klasaPotomna extends mojaKlasa { function powiedzCzesc() { echo "Nie podam swojego imienia"; }} $obiekt1 = new klasaPotomna("Mały Bolek"); $obiekt1->powiedzCzesc(); ?> zdefiniowana nowa funkcja powiedzCzesc

Technologie internetowe II42 Zaawansowana definicja klasy <?php /* Początek definicji klasy Koszyk - definiującej koszyk sklepowy */ class Koszyk { /* Definicja zmiennej - tablicy asocjacyjnej zawierającej numery artykułów i ich ilość */ var $artykuly; // Funkcja dodająca podaną ilość artykułów do koszyka function dodaj($numer, $ilosc) { $this->artykuly["$numer"] += $ilosc; } // Funkcja usuwająca podaną ilość artykułów z koszyka function usun($numer, $ilosc) { if($this->artykuly["$numer"]>$ilosc) $this->artykuly["$numer"]-=$ilosc; else $this->artykuly["$numer"]=0; } // Funkcja wyświetlająca zawartość koszyka function wyswietl(){ while(list($k, $v) = each($this->artykuly)) if($v>0) echo "Artykul nr $k - $v sztuk "; } } // Przykład wykorzystania $koszyk = new Koszyk; $koszyk->dodaj('20', 2); $koszyk->dodaj('12', 4); $koszyk->dodaj('20', 5); $koszyk->usun('12', 4); $koszyk->wyswietl(); ?>

Technologie internetowe II43 Rozszerzenie 1 <?php class Nazwany_koszyk extends Koszyk { var $nazwa; function ustaw_nazwe($nowa_nazwa) { $this->nazwa = $nowa_nazwa; } } $koszyk = new Nazwany_koszyk; $koszyk->ustaw_nazwe('Fredzio'); $koszyk->dodaj('2', 34); echo 'Właściciel: '.$koszyk->nazwa.' '; $koszyk->wyswietl(); ?>

Technologie internetowe II44 Rozszerzenie 2 <? class Auto_koszyk extends Nazwany_koszyk { function Auto_koszyk( $nazwa = 'Anonim') { $this->ustaw_nazwe($nazwa); } } $koszyk = new Auto_koszyk('Jakiś właściciel'); $koszyk->dodaj('4', 30); echo 'Właściciel: '.$koszyk->nazwa.' '; $koszyk->wyswietl(); ?>

Include i Require

Technologie internetowe II46 Instrukcje include i require Włączenie do kodu zawartość innego pliku także zawierającego kod PHP. Obu tym instrukcjom podaje się jeden parametr - nazwę pliku do włączenia do kodu (może to być ścieżka do pliku znajdującego się na innym serwerze WWW). Różnica między nimi polega na sposobie włączania tych plików do kodu. W przypadku instrukcji require pliki dołączane są do kodu jeszcze przed parsowaniem, w każdym miejscu gdzie znajduje się instrukcja require.

Technologie internetowe II47 Instrukcje include i require (2) W celu dołączania plików których nazwa pobierana jest ze zmiennej - zamiast tego należy użyć instrukcji include. Przetwarzanie plików zaincludowanych zaczyna się od trybu HTML, a więc jeśli plik zawiera tylko kod PHP, to powinien zaczynać się od jednego ze znaczników otwierających. Jeśli instrukcja include używana jest w pętli lub instrukcji warunkowej, to pomimo że jest to teoretycznie jedna linia, to musi znajdować się ona w nawiasach klamrowych, ponieważ ta pojedyncza linia zamieniana jest na wiele linii dołączanych z innego pliku.