Tugas Uts Web Ll
-
Upload
songjoongki -
Category
Documents
-
view
230 -
download
0
Transcript of Tugas Uts Web Ll
-
7/26/2019 Tugas Uts Web Ll
1/36
UGAS U S
Pemrograman web II
OLEH :
NAMA : Susilawati
NIM : 1510530265
PROGRAM STUDI TEKNIK INORMATIKA
SEKOLAH TINGGI MANA!EMEN INORMATIKA DAN KOMPUTER
"STMIK# $UMIGORA
MATARAM
2016
-
7/26/2019 Tugas Uts Web Ll
2/36
1% K&'sta'ta "(&'sta't#Dalam pemrograman komputer,'Konstanta'adalah identifier yang terkait nilai
tidak bisa biasanya diubah oleh program selama pelaksanaannya (meskipun
dalam beberapa kasus ini dapat dielakkan, misalnya menggunakan self-modifying code). Banyak bahasa pemrograman membuat perbedaan sintaksis
eksplisit antara simbol konstan dan variable.Meskipun nilai constant yang ditentukan hanya sekali, sebuah constant dapat
direferensikan berkali-kali dalam sebuah program. Menggunakan konstan, bukan
menentukan nilai beberapa kali dalam program tidak bisa hanya
menyederhanakan pemeliharaan kode, tetapi juga dapat menyediakan nama
yang bermakna untuk itu dan menggabungkan ikatan constant seperti ke lokasi
kode standar (misalnya, di aal).
2% Aut&l&a)i'*adalah sebuah cara untuk memanggil sebuah class pada file lain tanpa
menggunakan fungsi include. !eperti telah dijelaskan sebelumnyabaha kita
sebaiknya membuat class pada file tersendiri, yang selanjutnya ini kita sebut
dengan modul.
Dengan membuat class pada file terpisah, kita tidak harus mengulang menulis
sebuah class yang sama, namun cukup menyertakannya saja. "ah, autoloading
class ini membuat cara menyertakan class menjadi lebih ringkas tanpa harus
menuliskan perintah include.#lasan lain adalah saat ini kebanyakan developer menulis dan menyimpan
class sesuai dengan definisinya masing-masing. Masalah yang kemudian terjadi
adalah banyaknya include yang harus ditulis diaal sebuah file, jika hanya satu
atau dua file tidak apa, lha bagaimana jika file yang diinclude berjumlah puluhan,
hal ini tentu menjadi akan sangat tidak efisien.
Membuat #utoloading $lass
%ita bisa membuat autoloadng class dengan function++aut&l&a)"#. &anda ''
adalah underscore (') yang ditulis dua kali seperti pada function ''construct().
ungsi ini otomatis akan memanggil class saat kita akan menggunakannya,
meskipun belum didefinisikan sebelumnya.
function ''autoload(class'name) *
https://id.wikipedia.org/wiki/Pemrograman_komputerhttps://id.wikipedia.org/wiki/Pemrograman_komputerhttps://id.wikipedia.org/w/index.php?title=Self-modifying_code&action=edit&redlink=1https://id.wikipedia.org/w/index.php?title=Self-modifying_code&action=edit&redlink=1http://nulis-ilmu.blogspot.com/2014/11/tutorial-php-oop-part-9-menaruh-class-dalam-modul.htmlhttps://id.wikipedia.org/w/index.php?title=Self-modifying_code&action=edit&redlink=1https://id.wikipedia.org/w/index.php?title=Self-modifying_code&action=edit&redlink=1http://nulis-ilmu.blogspot.com/2014/11/tutorial-php-oop-part-9-menaruh-class-dalam-modul.htmlhttps://id.wikipedia.org/wiki/Pemrograman_komputer -
7/26/2019 Tugas Uts Web Ll
3/36
include class'name . +.php+
#da beberapa aturan yang memudahkan kita dalam menggunakan autoloading
class, yaitu
/. %ita buat satu class satu file modul.
0. "ama file modul harus sama dengan nama class, termasuk memperhatikan
huruf besar dan kecilnya.
1. ile modul berada pada folder yang sama dengan file php. 2ika berada padafolder lain harus sertakan path yang lengkap.
3. fungsi ''autoloading harus ada pada file php.
Contoh Membuat Autoloading Class :
/. Buat class 4umus/ lalu simpan dengan nama 4umus0.php
56php
class 4umus/ *
var panjang
var lebar
function luas() *
return this-7panjang 8 this-7lebar
function ''construct(9,y) *
this-7panjang : 9
this-7lebar : y
-
7/26/2019 Tugas Uts Web Ll
4/36
67
0. Buat class 4umus0 lalu simpan dengan nama 4umus0.php
56php
class 4umus0 *
var diameter
function luas() *
r : this-7diameter ;0
return 1./3 8 r 8 r
function ''construct(9) *
this-7diameter : 9
67
1. Buat file php yang menggunakan dua class tadi
56php
function ''autoload(class'name) *
-
7/26/2019 Tugas Uts Web Ll
5/36
include class'name . +.php+
rumus/ : ne 4umus/(?uas 4umus/ : >.rumus/-7luas().>5br;7>
echo >?uas 4umus0 : >.rumus0-7luas()
67
3. @astikan ketiga file berada pada folder yang sama.
-
7/26/2019 Tugas Uts Web Ll
6/36
;;menggunakan variabel dalam mereferen class classname : +My$lass+
echo classname%"!" ;;#s of @C@ echo selfmy'static . >
> ;;memanggil method pada class tanpa instantisasi object
;;dengan mereferen dari variabel classname : +#nak+
echo classnamedouble$olon() ;;#s of @C@ class #nak e9tends My$lass *
;; Membuat function yang menimpa function pada induk
public function myunc() *
;; tapi masih bisa mengakses method dari class induk parentmyunc()echo >#nakmyunc()
> class : ne #nak() class-7myunc() 67 @ada contoh
terdapat class induk My$lass yang mempunyai method myunc dengan perintah
menampilkan >My$lassmyunc()> untuk menandai baha tampilan ni dihasilkan
oleh method myunc() pada class induk. %emudian kita membuat class turunan
bernama #nak dan membuat method bernama myunc() juga, sama dengan method
pada class induk. %emudian pada method tersebut kita membuat dua perintah, yaitu* parentmyunc() untuk mengakses method myunc() pada class induk dan
* echo >#nakmyunc()
> untuk menampilkan tulisan >#nakmyunc()>.
-
7/26/2019 Tugas Uts Web Ll
7/36
% Stati( P.&,-.t )a' Stati( M-t/&)
2ika di aal tutorial @emrograman objek @C@ ini saya menjelaskan baha
seluruhpropertydanmethodhanya bisa diakses dari objek, maka staticpropertydan static methodadalah pengecualiannya.
Stati( ,.&,-.tdan stati( -t/&)adalahproperty(variabel) dan method(function)
yang melekat kepada class, bukan kepada objek. %onsep staticpropertymemang
Fagak keluarG dari konsep objek sebagai tempat melakukan proses, karena
sebenarnya class hanya merupakan Fblueprintsaja.
Entuk membuat static property danstatic method, kita menambahkan keyord
Fstaticsetelah penulisan akses levelproperty atau method, seperti contoh berikut
;; static property
public static harga'beli
;; static method
public static function beli'laptop() *
;;...isi method
Dalam contoh diatas, saya menggunakan hak aksespublic, tetapi kita juga bisa
menggunakan hak akses lain sepertiprivatedanprotected untuk static
property danstatic method.
%arena staticpropertydan static methodadalah milik (lass, maka kita tidak perlu
membuat objek untuk mengaksesnya, tapi langsung menyebutkan nama class dan
menggunakan operator F::G, berikut adalah contoh pengaksesan static
propertydan static methoddari class laptop
echo laptopharga'beli
-
7/26/2019 Tugas Uts Web Ll
8/36
echo laptopbeli'laptop()
Tut&.ial a.a P-'**u'aa' Stati( P.&,-.t )a' Stati( M-t/&)
#gar lebih memahami cara penggunaan static propertydan static method, langsung
saja kita masuk ke dalam kode program
56php
;; buat class laptop
class laptop *
public merk
public pemilik
;; static property
public static harga'beli
;;static method
public static function beli'laptop() *
return >Beli ?aptop>
;; set static property
-
7/26/2019 Tugas Uts Web Ll
9/36
laptopharga'beli:3AAAAAA
;; get static property
echo >harga beli 4p>.laptopharga'beli
echo >5br ;7>
;; panggil static method
echo laptopbeli'laptop()
67
Dalam kode diatas, saya membuat class laptopdengan 0propertyFbiasaG, / static
propertydan /static method. @erhatikan cara mengkases keduanya tanpa membuat
objek.
a.a M-'*a4s-s Stati( P.&,-.t )a' Stati( M-t/&) Da.i lass Itu S-')i.i
2ika kita menggunakan variabel $thisuntuk
mengaksespropertydan methodFnormalG dari dalam class, maka untuk
mengakses static propertydan static method, kita menggunakan keyord Hself::I.
Berikut contoh penggunaannya
56php
;; buat class laptop
class laptop *
public merk
-
7/26/2019 Tugas Uts Web Ll
10/36
public pemilik
;; static property
public static harga'beli
;;static method
public static function beli'laptop() *
return >Beli laptop seharga 4p>.selfharga'beli
;; set static property
laptopharga'beli:3AAAAAA
;; panggil static method
echo laptopbeli'laptop()
67
@ada kode program @C@ diatas, saya menggunakan perintah self::$harga_beli,
untuk memanggilstatic propertydari dalam class laptopitu sendiri.
-
7/26/2019 Tugas Uts Web Ll
11/36
a.a M-'*a4s-s Stati( P.&,-.t )a' Stati( M-t/&) Pa.-'t lass
Entuk class dengan penurunan (inheritance), kita bisa
menggunakan keyword,a.-'t::'aa+,.&,-.t dan,a.-'t::'aa+-t/&)untukmengakses static propertydan static methoddariparent class.
Misalnya class laptopadalah turunan dari class komputer, kita bisa menggunakan
perintahparent::beli_komputer() untuk mengakses static methodpada class
komputer dari dalam class laptop.
Berikut adalah contoh pengaksesan static method milikparent class
56php
;; buat class komputer
class komputer *
;; protected static method
protected static function beli'komputer()*
return >Beli %omputer Baru>
;; turunkan class komputer ke class laptop
class laptop e9tends komputer*
;; private static method
private static function beli'laptop()*
-
7/26/2019 Tugas Uts Web Ll
12/36
return >Beli ?aptop Baru>
;; public static method
public static function beli'semua()*
echo parentbeli'komputer()
echo >5br ;7>
echo selfbeli'laptop()
;; panggil static method
laptopbeli'semua()
;; coba panggil private static method
;; laptopbeli'laptop()
;; atal error $all to private method laptopbeli'laptop()
67
@ada kode diatas, saya membuat class komputerdengan sebuah static
methodbeli_komputer(). Method ini memiliki hak aksesprotected, sehingga
hanya bisa diakses dari dalam classitu sendiri atau dari dalam classturunan.
-
7/26/2019 Tugas Uts Web Ll
13/36
Class komputerkemudian FditurunkanG kepada class laptop. Di dalam class
laptop, saya membuat dua buah static method. !tatic method belilaptop!"di set
dengan hak aksesprivate, sehingga tidak bisa diakses dari luar class laptop.
Dalam method belisemua!", saya
memanggil methodbelikomputer!" milik class komputer menggunakan
perintahparent::beli_komputer(). Jni adalah cara pemanggilan static
methodmilikparent class. %emudian masih di dalam method belisemua!", saya
memanggil method belilaptop!"dengan perintah self::beli_laptop(), karena
method ini ada di dalam class leptop itu sendiri.
Entuk menguji apakah method beli_semua()sukses dijalankan, saya
kemudian memanggilnya dengan perintah laptop::beli_semua().
@erhatikan juga pada bagian komentar di akhir kode diatas. 2ika kita mencoba
memanggil method laptopbeli'laptop(), @C@ akan mengeluarkan errorkarena
method belilaptop!"memiliki hak aksesprivate, sehingga tidak bisa diakses dari
luar class.
Dalam membuatprogram berbasis objek, penggunaan static property(dan
juga static method) sebaiknya dibatasi, karena static methodcenderung susah
dideteksi jika terjadi kesalahan. "amun konseppropertydan methodyang
melekat kepada classini banyak juga digunakan untuk membuat design pattern.
Bahkan di dalam frameork @C@ seperti laravel, static methodmerupakan
mekanisme utama untuk menjalankan sebagian besar kode program.
%elas abstrak digunakan untuk membuat sebuah kelas yang memiliki method
yang belum jelas implementasinya. Berikut ini aturan nya
K 2ika sebuah kelas memiliki method abstrak maka kelas itu harus menjadi kelas
abstrak.
K !ebuah kelas abstrak dapat saja memiliki method yang tidak abstrak.
-
7/26/2019 Tugas Uts Web Ll
14/36
K 2ika sebuah kelas abstrak diturunkan menjadi kelas konkret, maka semua
method abstrak dari kelas abstrak haruslah ditulis ulang ; dibuat ulang di kelas
konkretnya dan diberi detail dari methodnya.
K 2ika method abstrak di turunkan dan kelas turunannya adalah kelas abstrak,
maka tidak perlu menulis ulang method yang abstrak.
5% Ast.a(t lass#bstract class adalah kelas murni (tanpa objek) dan tidak boleh memiliki objek
(tidak boleh ada instansiasi) serta method-method yang abstract harus
disempurna-kanoleh kelas turunannya melalui override. %elas seperti ini biasanya
merupakan rootsuatu struktur kelas.%onsekuensi penggunaan sifat abstract
/.&idak dapat dibuat constructor yang abstract.0.&idak dapat dibuat method yang
static dan abstract (kedua sifat salingkontradiktif).1.&idak diijinkan membuat
method yang private dan abstract (kedua sifat ini jugasaling %ontradiktif)
ungsi abstract adalah fungsi tanpa implementasi, di mana dikarenakan sifatnya
terlalu general sehingga tidak bisa diimplementasikan
Berikut $ontoh yang !aya berikan %edalam 1 Bahasa &'t&/ P.&*.a t-.l-i/ )a/ulu
5;div7
5div7using !ystem
using !ystem.$ollections.Leneric
using !ystem.?in
using !ystem.&e9t
namespace @0'Nidy'#bstract$lass
-
7/26/2019 Tugas Uts Web Ll
15/36
*
class @rogram
*
public static void Main(stringOP args)
*
implementasi ek : ne implementasi()
string nama : >"i Made @utri Nidiastuti>
string ttl : >Banyuangi, 00 #pril /QQ1>
string aktivitas : >Berolahraga>
ek.tes()
ek.met(nama,ttl,aktivitas)
$onsole.Nrite(>@ress any key to continue . . . >)
$onsole.4ead%ey(true)
-
7/26/2019 Tugas Uts Web Ll
16/36
abstract class pertama
*
public abstract void met(string nama, string ttl, string aktivitas)
public void tes()
*
$onsole.Nrite?ine(>Biodata "i Made @utri Nidiastuti !&J%M @L4J
B#"EN#"LJ>)
class implementasi pertama
*
public override void met(string nama, string ttl, string aktivitas)
*
$onsole.Nrite?ine(>"ama *A>,nama)
$onsole.Nrite?ine(>&empat, &anggal ?ahir *A>,ttl)
-
7/26/2019 Tugas Uts Web Ll
17/36
$onsole.Nrite?ine(>#ktivitas &erkini *A>,aktivitas)
Casilnya !ebagai Berikut
7a'* S-la'8ut'a A)la/ &'t&/ P.&*.a a'* t-la/ )i I,l--'tasi4a'
K-)ala $a/sa 99
5;div7
5div7Rinclude 5cstdlib7
Rinclude 5iostream7
-
7/26/2019 Tugas Uts Web Ll
18/36
using namespace std
class pertama
*
public virtual void met(string nama, string ttl, string aktivitas) : A
public void tes()
*
cout 55 >Biodata "i Made @utri Nidiastuti !&J%M @L4J B#"EN#"LJ> 55 endl
class implementasi public pertama
*
public void met(string nama, string ttl, string aktivitas)
*
cout 55 >"ama >55nama 55 endl
cout 55 >&empat, &anggal ?ahir >55 ttl 55 endl
-
7/26/2019 Tugas Uts Web Ll
19/36
cout 55 >#ktivitas &erkini >55 aktivitas 55 endl
int main(int argc, char 8argvOP)
*
implementasi ek
string nama : >"i Made @utri Nidiastuti>
string ttl : >Banyuangi, 00 #pril /QQ1>
string aktivitas : >Berolahraga>
ek.tes()
ek.met(nama,ttl,aktivitas)
cout 55 >@ress any key to continue . . . > 55 endl
system(>@#E!S>)
return STJ&'!E$$S!!
-
7/26/2019 Tugas Uts Web Ll
20/36
Hasil'a A)ala/ :
S-.ta a'* T-.a4/i. a)la/ D-'*a' M-'**u'a4a' P.&*.a a/asa !aa :
5;div7
5div7package oop0'idy/'abstractclass
import java.util.8
public class Main
*
private static !canner input : ne !canner(!ystem.in)
static implementasi imp : ne implementasi()
-
7/26/2019 Tugas Uts Web Ll
21/36
public static void main(!tringOP args)
*
implementasi ek : ne implementasi()
!tring nama : >"i Made @utri Nidiastuti>
!tring ttl : >Banyuangi, 00 #pril /QQ1>
!tring aktivitas : >Berolahraga>
ek.tes()
ek.met(nama,ttl,aktivitas)
!ystem.out.println(>@ress any key to continue . . . >)
!ystem.out.println()
abstract class pertama
*
-
7/26/2019 Tugas Uts Web Ll
22/36
public abstract void met(!tring nama, !tring ttl, !tring aktivitas)
public void tes()
*
!ystem.out.println(>Biodata "i Made @utri Nidiastuti !&J%M @L4J
B#"EN#"LJ>)
class implementasi e9tends pertama
*
public void met(!tring nama, !tring ttl, !tring aktivitas)
*
!ystem.out.println(>"ama >Unama)
!ystem.out.println(>&empat, &anggal ?ahir >Uttl)
!ystem.out.println(>#ktivitas &erkini > Uaktivitas)
-
7/26/2019 Tugas Uts Web Ll
23/36
5;div7
5div7
-
7/26/2019 Tugas Uts Web Ll
24/36
-
7/26/2019 Tugas Uts Web Ll
25/36
6% O8-(t I't-.;a(-
!ecara sederhana< O8-(t I't-.;a(-adalah sebuah Fkontrakatau
perjanjian implementasi method.
Bagi classyang menggunakan objectinterface, classtersebut harus
mengimplementasikan ulang seluruh methodyang ada di dalam interface. Dalam
pemrograman objek, penyebutan object interfacesering disingkan dengan
F#nterfacesaja.
2ika anda telah mempelajari abstract class, maka interfacebisa dikatakan
sebagai bentuk lain dariabstract class. Nalaupun secara konsep teoritis dan
tujuan penggunaannya berbeda. !ama seperti abstract class, interfacejuga hanya
berisi signaturedari method, yakni hanya namamethoddanparameternya saja
(jika ada). Jsi dari method akan dibuat ulang di dalam classyang
menggunakan interface.
2ika kita menganggap abstract classsebagai Fkerangkaatau Fblue printdari
class-class lain, makainterfaceadalah implementasi method yang harus
Ftersediadalam sebuah objek. #nterfacetidak bisa disebut sebagai
Fkerangkaclass. Menyambung analogi kita tentang classkomputer, interfacebisa
dicontohkan dengan Fmouse, atau Fkeyboard. Di dalam interface mouse, kita bisa
membuat method seperti klikkiri!"$ klikkanan!"$ dandoubleklik!". 2ika class
laptop Fmenggunakaninterface mouse, maka class tersebut harus membuat ulang
method klikkiri!"$ klikkanan!"$ dandoubleklik!".
a.a M-uat I't-.;a(- )ala PHP
Entuk membuat Interfacedi dalam @C@, kita menulisnya mirip seperti
membuat class, tetapi menggunakan keywordi't-.;a(-, seperti contoh berikut
/
0
1
3
56php
interface mouse
*
;;...isi dari interface mouse
-
7/26/2019 Tugas Uts Web Ll
26/36
%lik %anan...>
public function klik'kiri()*
return >%lik %iri...>
-
7/26/2019 Tugas Uts Web Ll
28/36
/%lik %anan...>
laptop'baru : ne laptop()
;; atal error $lass laptop contains / abstract method
;; and must therefore be declared abstract
;; or implement the remaining methods (mouseklik'kiri)
-
7/26/2019 Tugas Uts Web Ll
29/36
/W 67
M-t/&) I't-.;a(- Ha.us )i s-t S-a*ai Puli(
!esuai dengan tujuannya untuk membuat interface&antar mukabagi class, method di
dalam perancangan interfaceharus memiliki hak aksespublic, atau tidak ditulis
sama sekali (dimana @C@ akan menganggapnya sebagaipublic). 2ika kita
mengubah hak akses method di dalam interfacemenjadiprivateatauprotected,
@C@ akan mengeluarkan error
/
0
1
3
%lik %iri...>
laptop'baru : ne laptop()
-
7/26/2019 Tugas Uts Web Ll
30/36
/W
/=
/Q
;; atal error #ccess type for interface
;; method mouseklik'kiri() must be omitted
67
Di dalam classyang menggunakan interface, methodyang berasal
dari interface juga harus memiliki hak akses public. %ita tidak bisa mengubahnya
menjadiprotectedatauprivate.
/
0
1
3
%lik %iri...>
laptop'baru : ne laptop()
;; atal error #ccess level to laptopklik'kiri()
-
7/26/2019 Tugas Uts Web Ll
31/36
/Q
0A
;; must be public (as in class mouse)
67
Dalam contoh diatas, saya mengubah hak
akses methodklikkiri!"menjadiprotecteddi dalam class laptop. Cal ini akan
menghasilkan error.
I't-.;a(- isa )i Tu.u'4a' "I'/-.it#
Di dalam @C@, interfacebisa diturunkan kedalam interfacelain. @rosesnya mirip
dengan penurunan class, yakni dengan menggunakan kata kunci extends
/
0
1
3
%lik %anan...>
-
7/26/2019 Tugas Uts Web Ll
32/36
/Ebah settingan D@J mouse>
laptop'baru : ne laptop()
echo laptop'baru-7ubah'dpi()
;; Ebah settingan D@J mouse
67
I't-.;a(- $isa M-ili4i K&'sta'ta
Dalam @C@, Jnterface bisa memiliki konstanta . Berikut adalah contoh penggunaan
konstanta di dalam interface
/
0
1
3
!alah satu yang membedakan interfacedengan abstract classadalah kita tidak bisa
membuat method biasa di dalam #nterface. $ontoh berikut akan menghasilkan error
/
0
1
3
%lik %iri...>
class laptop implements mouse*
public function klik'kanan()*
return >%lik %anan...>
-
7/26/2019 Tugas Uts Web Ll
34/36
/1
/3
/%lik %iri...>
public function tekan'enter()*
return >&ekan &ombol Snter...>
laptop'baru : ne laptop()
echo laptop'baru-7tekan'enter()
;; &ekan &ombol Snter...
67
Dalam contoh diatas saya membuat dua buah interface, yakni mousedan keyboard.
%eduainterfaceini kemudian digunakan oleh class laptop.
-
7/26/2019 Tugas Uts Web Ll
36/36
u'*si I't-.;a(- )ala P-.&*.aa' O8-4
2ika anda telah mempelajari abstract classdalam tutorial kita sebelumnya, sedikit
banyak kita bisa memahami fungsi interfacejika dibandingkan denganfungsi abstract class. %edua konsep ini sering membuat bingung karena mirip
dalam implementasinya.
Interfacelebih berperan untuk menyeragamkan method. Ja tidak masuk kedalam
struktur class seperti abstract class. 2ika kita menggunakan abstract
classkomputersebagai Fkonsep classuntuk kemudian diturunkan kepada class lain
seperti class laptop$ class pc$ danclass netbook, maka interface hanya Fpenyedia
methodG. #nterfacetidak termasuk kedalam pearisan class.
http://www.duniailkom.com/tutorial-belajar-oop-php-pengertian-abstract-class-dan-abstract-method-php/http://www.duniailkom.com/tutorial-belajar-oop-php-pengertian-abstract-class-dan-abstract-method-php/