-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path(6)Inheritance_2_Produk.php
114 lines (90 loc) · 2.83 KB
/
(6)Inheritance_2_Produk.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php
// Jualan Produk
// Komik
// Game
/*
[[ INHERITANCE / PEWARISAN SIFAT ]] menciptakan sebuah hierarki antar kelas (Parent & Child)
ketika menciptakan sebuah Child class, child class akan mewarisi semua properti dan
method dari parent-nya (yang visible) alias dapat di lihat atau dapat di akses
dengan sebuah tipe dari class itu sendiri
- PUBLIC
- PRIVATE
- PROTECTED
*/
class Produk // This is a **CLASS**
{
// This is a **PROPERTIES** of komik and game
public $judul,
$penulis,
$penerbit,
$harga,
$jml_halaman,
$waktu_main;
// Constructor is a Method or a Magic Method
// Construct ini akan di jalankan secara otomatis ketika class produk di jalankan
public function __construct($judul = "judul", $penulis = "penulis", $penerbit = "penerbit", $harga = 0, $jml_halaman = 0, $waktu_main = 0)
// default value $harga = 0; 0 is default value for harga variable
{
$this->judul = $judul;
$this->penulis = $penulis;
$this->penerbit = $penerbit;
$this->harga = $harga;
$this->jml_halaman = $jml_halaman;
$this->waktu_main = $waktu_main;
}
// This is a Method
public function getLabel()
{
return "$this->penulis, $this->penerbit";
}
public function getInfoProduk()
{
// Komik : Naruto | Masashi Kimoto, Trans Studio Bandung (Rp.3000) - 100 Halaman.
$str = "{$this->judul} | {$this->getLabel()} (Rp.{$this->harga})";
return $str;
}
}
class Komik extends Produk
{
public function getInfoProduk()
{
$str = "Komik : {$this->judul} | {$this->getLabel()} (Rp.{$this->harga}) - {$this->jml_halaman} Halaman.";
return $str;
}
}
class Game extends Produk
{
public function getInfoProduk()
{
$str = "Game : {$this->judul} | {$this->getLabel()} (Rp.{$this->harga}) - {$this->waktu_main} jam.";
return $str;
}
}
class CetakInfoProduk
{
/**
* Mencetak sebuah produk dengan tipe data instance dari produk.
*
* @param Produk $produk
* @return string
*/
public function cetak(Produk $produk)
{
$str = "{$produk->judul} | {$produk->getLabel()} (Rp.{$produk->harga})";
return $str;
}
}
// KOMIK // This is an **OBJECT**
// Variable dari sebuah object di sebut INSTANCE
$Produk_1 = new Komik("Naruto", "Masashi Kimoto", "Trans Studio Bandung", 3000, 100, 0);
// GAME // This is an **OBJECT**
// Variable dari sebuah object di sebut INSTANCE
$Produk_2 = new Game("Roblox", "Bang Yadi", "YadBro Studio", 1000, 0, 50);
echo $Produk_1->getInfoProduk();
echo "<br>";
echo $Produk_2->getInfoProduk();
/*
=== OUTPUT ===
Komik : Naruto | Masashi Kimoto, Trans Studio Bandung (Rp.3000) - 100 Halaman.
Game : Roblox | YadBro Channel, YadBro Studio (Rp.3000) - 50 jam.
*/