Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Hasonló dokumentumok
és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

JAVA PROGRAMOZÁS 2.ELŐADÁS

OOP: Java 8.Gy: Abstract osztályok, interfészek

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

PHP5 Új generáció (2. rész)

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

Osztályok. 4. gyakorlat

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Abstract osztályok és interface-ek. 7-dik gyakorlat

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Programozási nyelvek Java

Programozási nyelvek Java

Java programozási nyelv 5. rész Osztályok III.

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

JAVA PROGRAMOZÁS 3.ELŐADÁS

Bevezetés a Python programozási nyelvbe

Web-technológia PHP-vel

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Programozási nyelvek Java

Globális operátor overloading

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Java programozási nyelv 4. rész Osztályok II.

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

WEB-PROGRAMOZÁS II. 1. Egészítse ki a következő PHP kódot a következők szerint: a,b,c,d: <?php. interface Kiir { public function kiir();

Programozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Bánsághi Anna

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

Pénzügyi algoritmusok

Programozási nyelvek II.: JAVA

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Szoftvertechnológia alapjai Java előadások

Interfészek. PPT 2007/2008 tavasz.

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.

7. K: JAVA alapok Konzultáció

Már megismert fogalmak áttekintése

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Programozási technológia

OOP és UML Áttekintés

Objektumorientált programozás C# nyelven

Java IX. telkezelés a Java-ban

Osztályszintű elérés, kivételkezelés, fájlkezelés

III. OOP (objektumok, osztályok)

Java IX. telkezelés a Java-ban

Objektumorientált programozás C# nyelven

Alkalmazott Modul III 6. előadás. Objektumorientált programozás: öröklődés és polimorfizmus

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

OOP #14 (referencia-elv)

Magas szintű programozási nyelvek 2 Előadás jegyzet

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

Osztálytervezés és implementációs ajánlások

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás

Osztálytervezés és implementációs ajánlások

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Mi a különbség az extends és az implements között. Mikor melyiket kell használni? Comperable-t megvalósító oasztályokban össze lehet hasonlitani

Programozás II gyakorlat. 6. Polimorfizmus

OOP: Java 8.Gy: Gyakorlás

Bevezetés a programozásba Előadás: A const

Objektumorientált programozás C# nyelven

Osztály és objektum fogalma

ELTE SAP Excellence Center Oktatóanyag 1

Programozás II gyakorlat. 8. Operátor túlterhelés

Model View Controller alapú alkalmazásfejlesztés

Objektumorientált programozás C# nyelven

Programozás II. labor

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Komponensek együttműködése web-alkalmazás környezetben. Jónás Richárd Debreceni Egyetem T-Soft Mérnökiroda KFT

C# osztályok. Krizsán Zoltán

Programozási technológia

C++ programozási nyelv

Objektumok inicializálása

Java VII. Polimorfizmus a Java nyelvben

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

Bevezetés, a C++ osztályok. Pere László

Elemi Alkalmazások Fejlesztése II.

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

Programozás I. Első ZH segédlet

Objektumelvű programozás

Programozás C++ -ban 2007/7

Öröklés és Polimorfizmus

Programozás II. 4. Dr. Iványi Péter

Segédanyag: Java alkalmazások gyakorlat

Programozás BMEKOKAA146. Dr. Bécsi Tamás 7. előadás

Java III. I I. Osztálydefiníció (Bevezetés)

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag

Java programozási nyelv

Java II. I A Java programozási nyelv alapelemei

Java III. I I. Osztálydefiníció (Bevezetés)

Java VII. Polimorfizmus a Java nyelvben

Származtatási mechanizmus a C++ nyelvben

BME MOGI Gépészeti informatika 8.

Informatika terméktervezőknek

Forráskód formázási szabályok

Java és web programozás

Átírás:

PHP5 objektumok 1

Osztályok class, new book.php: construct () destruct() $b=new Book(); törlés: $b=null; vagy unset ($b); -elnevezési konvenciók <?php class Book {?> private $isbn; public $title; function construct ($isbn, $title) { $this->isbn=$isbn; $this->title=$title; function get_isbn () { return $this->isbn; 2

A this változó -az objektum függvényeiben automatikusan elérhető és az objektumra mutat -az objektum változói illetve függvényei ezen keresztül érhetők el public, protected, private tulajdonságok -public bárhonnan elérhető -protected csak saját és származtatott osztály metódusaiból -private csak saját osztály metódusaiból: származtatott osztályokban újra deklarálható -ha nem adjuk meg egyik tulajdonságot sem, a változó: public -metódusokra is alkalmazhatóak 3

A static tulajdonság static $counter=0; -az ilyen változókat osztályváltozóknak is nevezzük a self és az osztálynév használata self::$counter Counter::counter counter.php countertest.php -a metódusok is lehetnek statikusak 4

Osztály konstansok: const const PIROS = "#FF0000"; const ZOLD = "#00FF00"; const KEK = "#0000FF"; color.php, colortest.php 5

Objektumok másolása -értékadásnál referencia jön létre $c1 = new Cloneable(1); $c2 = $c1; $c3 = clone $c1 ; -ha a másolat nem lehet pontos másolata az eredetinek: clone - a clone függvényben két kulcsszó áll rendelkezésünkre a $this (másolat) és $that (másolt objektum) cloneable.php, cloneabletest.php 6

Öröklődés -extends kulcsszó -nincs többszörös öröklődés - van interfész -a parent:: és self:: kulcsszavak -az instanceof operátor if ( $c1 instanceof Cloneable ) { elso.php elsotest.php 7

Elvont (absztrakt) osztály és függvény abstract kulcsszó -elvont osztály, ha van legalább egy elvont függvénye -az elvont függvényekhez nem lehet kódot definiálni csak felülíráskor abstract class AB { protected $a; public abstract function get_a (); function construct ($v) { $this->a=$v; abstractest.php 8

Interfészek -interface kulcsszó a definíciónál -az interfész definíciók csak függvény prototípusokat és konstansokat tartalmazhatnak -az implements kulcsszóval rendeljük őket az osztálydefiníciókhoz -az instanceof operátor alkalmazható interfészekre is -az interfészek függvényei mindig publikusak -több interfész implementálása esetén ezeknek nem lehet ugyanolyan nevű metódusuk -interfészek megvalósíthatnak interfészeket, többszörös öröklés megengedett A final módosító használható a nem felülírható függvények és osztályok esetében 9

Metódusok felülírása -más OO nyelveknél: metódusok felülírása, más szignatúrával -a PHP5 ilyent nem tud... -megoldás: function feladat ($s) { if ( is_string($s) ) { //első feladat elseif (is_int ($s)) { //második feladat elseif ( is_float($s) ){ //... és így tovább 10

Kivételkezelés try { //kód throw new FirstException("üzenet"); catch (FirstException e ) { catch (SecondException e) { finally { 11

A beépített kivétel osztály: class Exception { protected $message;//üzenet protected $code=0; //hibakód protected $file; //a kivétel forrásának neve protected $line; //a kivétel forrásának sora function construct([$message [,$code]]); final public getmessage(); final public getcode(); final public getfile(); final public getline(); final public gettrace(); final public gettraceasstring(); function tostring(); 12

felülírása: class MyException extends Exception { function construct ( $message ) { parent:: construct ($message;) -a legtöbb jelenlegi PHP függvény nem dob kivételt kompatibilitási meggondolás miatt ( PHP4-el) -a nyelv objektumainak metódusai sokszor rendes függvényként hívhatóak 13

Szkript programozást segítő megoldások -az autoload függvény -forrás állományszervezés, prepend.php autoload.php -automatikus paraméter típusellenőrzés function test ( Book $b ) { 14

Más speciális (bűvös - magic) függvények tostring () -a print és echo ezt hívja meg, ha implementálva van -egy sztringet kell visszaadnia, és automatikusan meghívódik ha sztring kontextusban használjuk az objektumot 15

Sorosítás a sleep() és wakeup() a sorosítást segíti function sleep () { return array ('cart'); -az unserialize() -t használó szkriptnek is meg kell kapni az objektum definícióját => autoload vagy include 16

A call, get, set függvények olyan függvények elérését engedik meg amelyeket nem definiálunk explicit módon: public function call ($m, $par) { echo "a $m függvényt hívták meg."; echo "A paraméterei:"; print_r($par); proxy.php 17

A get és set tulajdonság beállító és lekérdező függvények Mire jó? : public function get ($p) { return $this->$p; public function set($p, $v) { $this->$p = $v; A set nem létező tulajdonság esetén változót hoz létre storage.php 18

Betekintés az objektumokba $b->new Book(); if (method_exists ('show', $b)) { //... ; $methods=get_class_methods($b); $v=get_object_vars($b); $sv=get_class_vars('book'); 19

Példák Kosár ShoppingCart Shopping Űrlap: formtest.php 20