Uploaded by User86777

18111190 - Dendy Renaldi Irawan

advertisement
OBJECT-ORIENTED MODEL
.
DOSEN MATA KULIAH :
Muhamad Sabar, S.T., M.T.
DISUSUN OLEH :
Dendy Renaldi Irawan
TEKNIK INFORMATIKA CID 18A
SEKOLAH TINGGI TEKNOLOGI BANDUNG
2020
Object & Class
o Object
Objek adalah turunan atau hasil dari suatu class, Java sendiri adalah Bahasa Pemrograman yang murni
berbasis Objek, sehingga konsep pemrograman dengan prosedural tidak dikenal oleh java. Contoh objek
bisa Anda lihat dikehidupan sehari-hari seperti pesawat, mobil, kucing, dll. Semua Objek memiliki state
dan behavior, state adalah keadaan sedangkan behavior adalah perilaku. Misalkan objek dalam
kehidupan nyata adalah Fizi(nama manusia) yang memiliki keadaan(nama, alamat, umur) dan
perilaku(tidur, makan, melompat).
Objek dalam perangkat lunak juga memiliki keadaan dan perilaku. Keadaan pada perangkat lunak
disimpan dalam field(variabel) dan perilakunya ditunjukkan melalui method-method.
o Class
Class adalah entitas yang menggambarkan keadaan dan perilaku dari objek(logis). Artinya, Class adalah
Cetakan yang berisi serangkaian perintah untuk membangun jenis objek tertentu. Class juga bisa
diartikan sebagai sekelompok objek yang memiliki sifat umum. Contoh dari Class pada kehidupan nyata
adalah kendaraan, manusia, hewan, dan lain sebagainya. Misalnya pada class kendaraan bisa memiliki
objek seperti mobil, sepeda motor, pesawat, dll. Sebuah Class bisa memiliki salah satu dari jenis variabel
seperti Variabel lokal, variabel instance, dan variabel kelas. Class akan mendeklarasikan tipe data baru
dan dijalankan sebagai cetakan, dimana model dari objek yang dibuat berdasarkan tipe data tersebut
Contoh kasus
Pak Kumis adalah pedagang Sate, tiap Hari dia menjual dan menerima Pesanan dari beberapa Pembeli.
Harga Sate yang dijual oleh Pak kumis adalah Rp 950 per tusuk. Suatu hari, Ada seorang pembeli
memesan Sate 115 Tusuk. Jadi, Berapa harga Sate 115 tusuk yang harus dibayar oleh Pembeli?.
Berikut adalah program Java Sederhana berbasis Teks/Console untuk menampilkan rincian pembelian
Sate
Source Code :
public class Penjualan{
private String nama;
private int harga, jumlah, total;
public Penjualan(String _nama, int _harga, int _jumlah){
nama = _nama;
harga = _harga;
jumlah= _jumlah;
}
public int total(){
total = harga * jumlah;
return total;
}
public void tampil(){
System.out.println("Nama Barang : "+ nama);
System.out.println("Harga Barang : "+ harga);
System.out.println("Jumlah yang Dibeli : "+ jumlah);
System.out.println("__________________________________");
System.out.println("Total Harga : "+ total());
}
public static void main(String[]args){
Penjualan resi = new Penjualan("Roti Kumis", 950, 115);
resi.tampil();
}
}
Output / Hasil :
Inheritance based on type
Inheritance (Pewarisan) Inheritance atau Pewarisan/Penurunan adalah konsep pemrograman dimana
sebuah class dapat 'menurunkan' property dan method yang dimilikinya kepada class lain.
Konsep inheritance digunakan untuk memanfaatkan fitur 'code reuse' untuk menghindari duplikasi kode
program
Contoh kasus
Sebuah kelas super bernama kelas Binatang.java, yang akan menurunkan 2 buah kelas anak yaitu kelas
Mamalia dan kelas Reptil. masing-masing kelas anak ini akan menurunkan lagi kelas anak di bawahnya.
yaitu kelas Reptil akan menurunkan kelas Buaya , Ular dan Ciak. kelas Mamalia akan menurunkan kelas
Anjing, Kucing, Sapi, Pada subkelas itu nanitnnya akan diturunkan lagi
Source Code :
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.
package binatang;
//super kelas untuk kelas anak : Sapi, Kucing, dan Anjing
class Mamalia {
String Nama;
String Keterangan;
//konstruktor
public Mamalia (String nama, String keterangan) {
Nama = nama;
Keterangan = keterangan;
}
//methode
public void TampilkanRincian() {
System.out.println("Nama Kelas = " + Nama);
System.out.println("Keterangan = " + Keterangan);
}
}
package binatang;
//kelas Sapi
//Turunan dari kelas Mamalia, menggunakan "extends" dan "super"
class Sapi extends Mamalia {
String Kegunaan;
//konstruktor
public Sapi (String nama, String keterangan, String kegunaan) {
super (nama,keterangan);
Kegunaan = kegunaan;
}
//methode
public void TampilkanRincian() {
System.out.println("Nama Mamalia = " + Nama);
System.out.println("Keterangan = " + Keterangan);
System.out.println("Kegunaan = " + Kegunaan);
}
}
package binatang;
41. //kelas Kucing
42. //Turunan dari kelas Mamalia, menggunakan "extends" dan "super"
43. class Kucing extends Mamalia {
44. String Kegunaan;
45. //konstruktor
46. public Kucing (String nama, String keterangan, String kegunaan) {
47. super (nama, keterangan);
48. Kegunaan = kegunaan;
49. }
50.
51. //methode
52. public void TampilkanRincian() {
53. System.out.println("Nama Mamalia = " + Nama);
54. System.out.println("Keterangan = " + Keterangan);
55. System.out.println("Kegunaan = " + Kegunaan);
56. }
57. }
58.
59. package binatang;
60.
61. //kelas Siam
62. //Turunan dari kelas Siam, menggunakan "extends" dan "super"
63. class Siam extends Kucing {
64. String Jenis;
65. //konstruktor
66. public Siam (String nama, String keterangan, String kegunaan, String jenis) {
67. super (nama, keterangan, kegunaan);
68. Jenis = jenis;
69. }
70.
71. //methode
72. @Override
73. public void TampilkanRincian() {
74. System.out.println("Nama Mamalia = " + Nama);
75. System.out.println("Keterangan = " + Keterangan);
76. System.out.println("Kegunaan = " + Kegunaan);
77. System.out.println("Jenis = " + Jenis);
78. }
79. }
80.
81. package binatang;
82. //kelas Tiffany
83. //Turunan dari kelas Tiffany, menggunakan "extends" dan "super"
84. class Tiffany extends Kucing {
85. String Jenis;
86. //konstruktor
87. public Tiffany (String nama, String keterangan, String kegunaan, String jenis) {
88. super (nama, keterangan, kegunaan);
89. Jenis = jenis;
90. }
91.
92. //methode
93. @Override
94. public void TampilkanRincian() {
95. System.out.println("Nama Mamalia = " + Nama);
96. System.out.println("Keterangan = " + Keterangan);
97. System.out.println("Kegunaan = " + Kegunaan);
98. System.out.println("Jenis = " + Jenis);
99. }
100.
}
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
package binatang;
//kelas Tyoger
//Turunan dari kelas Kucing, menggunakan "extends" dan "super"
class Tyoger extends Kucing {
String Jenis;
//konstruktor
public Tyoger (String nama, String keterangan, String kegunaan, String jenis) {
super (nama, keterangan, kegunaan);
Jenis = jenis;
}
//methode
@Override
public void TampilkanRincian() {
System.out.println("Nama Mamalia = " + Nama);
System.out.println("Keterangan = " + Keterangan);
System.out.println("Kegunaan = " + Kegunaan);
System.out.println("Jenis = " + Jenis);
}
}
package binatang;
//kelas Anjing
//Turunan dari kelas Mamalia, menggunakan "extends" dan "super"
//super kelas untuk kelas Akita, Beagle, dan Boxer
class Anjing extends Mamalia {
String Kegunaan;
//konstruktor
public Anjing (String nama, String keterangan, String kegunaan) {
super (nama, keterangan);
Kegunaan = kegunaan;
}
//methode
public void TampilkanRincian() {
System.out.println("Nama Mamalia = " + Nama);
System.out.println("Keterangan = " + Keterangan);
System.out.println("Kegunaan = " + Kegunaan);
}
}
package binatang;
//kelas Akita
//Turunan dari kelas Anjing, menggunakan "extends" dan "super"
class Akita extends Anjing {
String Jenis;
//konstruktor
public Akita (String nama, String keterangan, String kegunaan, String jenis) {
super (nama, keterangan, kegunaan);
Jenis = jenis;
}
//methode
@Override
public void TampilkanRincian() {
System.out.println("Nama Mamalia = " + Nama);
System.out.println("Keterangan = " + Keterangan);
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
) {
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
System.out.println("Kegunaan = " + Kegunaan);
System.out.println("Jenis = " + Jenis);
}
}
package binatang;
//kelas Beagle
//Turunan dari kelas Anjing, menggunakan "extends" dan "super"
class Beagle extends Anjing {
String Jenis;
//konstruktor
public Beagle (String nama, String keterangan, String kegunaan, String jenis) {
super (nama, keterangan, kegunaan);
Jenis = jenis;
}
//methode
public void TampilkanRincian() {
System.out.println("Nama Mamalia = " + Nama);
System.out.println("Keterangan = " + Keterangan);
System.out.println("Kegunaan = " + Kegunaan);
System.out.println("Jenis = " + Jenis);
}
}
package binatang;
public class Kintamani extends Anjing {
String Jenis;
//konstruktor
public Kintamani (String nama, String keterangan, String kegunaan, String jenis
super (nama, keterangan, kegunaan);
Jenis = jenis;
}
//methode
public void TampilkanRincian() {
System.out.println("Nama Mamalia = " + Nama);
System.out.println("Keterangan = " + Keterangan);
System.out.println("Kegunaan = " + Kegunaan);
System.out.println("Jenis = " + Jenis);
}
}
package binatang;
//kelas Reptil
//super kelas untuk kelas anak : Ular, Buaya, Cicak
class Reptil {
String Nama;
String Kulit;
String Keterangan;
//konstruktor
public Reptil (String nama, String kulit, String keterangan) {
Nama = nama;
Kulit = kulit;
Keterangan = keterangan;
}
//methode
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
public void TampilkanRincian() {
System.out.println("Nama Kelas = " +Nama);
System.out.println("Kulit = " + Kulit);
System.out.println("Keterangan = " + Keterangan);
}
}
package binatang;
//kelas Cicak
//Turunan dari kelas Reptil, menggunakan "extends" dan "super"
class Cicak extends Reptil {
String Habitat;
//konstruktor
public Cicak (String nama, String kulit, String keterangan, String habitat) {
super (nama, kulit, keterangan);
Habitat = habitat;
}
//methode
public void TampilkanRincian() {
System.out.println("Nama Reptil = " + Nama);
System.out.println("Kulit = " + Kulit);
System.out.println("Keterangan = " + Keterangan);
System.out.println("Habitat = " + Habitat);
}
}
package binatang;
//kelas Buaya
//Turunan dari kelas Reptil, menggunakan "extends" dan "super"
class Buaya extends Reptil {
String Habitat;
//konstruktor
public Buaya (String nama, String kulit, String keterangan, String habitat) {
super (nama, kulit, keterangan);
Habitat = habitat;
}
//methode
public void TampilkanRincian() {
System.out.println("Nama Reptil = " + Nama);
System.out.println("Kulit = " + Kulit);
System.out.println("Keterangan = " + Keterangan);
System.out.println("Habitat = " + Habitat);
}
}
package binatang;
//kelas Ular
//Turunan dari kelas Reptil, menggunakan "extends" dan "super"
//super kelas untuk kelas Boa, Python, dan Cobra
class Ular extends Reptil {
String Habitat;
//konstruktor
public Ular (String nama, String kulit, String keterangan, String habitat) {
super (nama, kulit, keterangan);
Habitat = habitat;
}
281.
282.
//methode
283.
public void TampilkanRincian() {
284.
System.out.println("Nama Reptil = " + Nama);
285.
System.out.println("Kulit = " + Kulit);
286.
System.out.println("Keterangan = " + Keterangan);
287.
System.out.println("Habitat = " + Habitat);
288.
}
289.
}
290.
291.
package binatang;
292.
//kelas Python
293.
//Turunan dari kelas Ular, menggunakan "extends" dan "super"
294.
class Python extends Ular {
295.
String Status;
296.
//konstruktor
297.
public Python (String nama, String kulit, String keterangan, String habitat, St
ring status ) {
298.
super (nama, kulit, keterangan, habitat);
299.
Status = status;
300.
}
301.
302.
//methode
303.
public void TampilkanRincian() {
304.
System.out.println("Nama Ular = " + Nama);
305.
System.out.println("Kulit = " + Kulit);
306.
System.out.println("Keterangan = " + Keterangan);
307.
System.out.println("Habitat = " + Habitat);
308.
System.out.println("Status = " + Status);
309.
}
310.
}
311.
312.
//kelas Cobra
313.
//Turunan dari kelas Ular, menggunakan "extends" dan "super"
314.
class Cobra extends Ular {
315.
String Status;
316.
//konstruktor
317.
public Cobra (String nama, String kulit, String keterangan, String habitat,Stri
ng status ) {
318.
super (nama, kulit, keterangan, habitat);
319.
Status = status;
320.
}
321.
322.
//methode
323.
public void TampilkanRincian() {
324.
System.out.println("Nama Ular = " + Nama);
325.
System.out.println("Kulit = " + Kulit);
326.
System.out.println("Keterangan = " + Keterangan);
327.
System.out.println("Habitat = " + Habitat);
328.
System.out.println("Status = " + Status);
329.
}
330.
}
331.
332.
package binatang;
333.
334.
//kelas Boa
335.
//Turunan dari kelas Ular, menggunakan "extends" dan "super"
336.
public class Boa extends Ular {
337.
String Status;
338.
//konstruktor
339.
public Boa (String nama, String kulit, String keterangan, String habitat, Strin
g status ) {
340.
super (nama, kulit, keterangan, habitat);
341.
Status = status;
342.
}
343.
344.
//methode
345.
public void TampilkanRincian() {
346.
System.out.println("Nama Ular = " + Nama);
347.
System.out.println("Kulit = " + Kulit);
348.
System.out.println("Keterangan = " + Keterangan);
349.
System.out.println("Habitat = " + Habitat);
350.
System.out.println("Status = " + Status);
351.
}
352.
}
353.
354.
355.
356.
357.
package binatang;
358.
//Kelas utama
359.
//Perhatikan kata "main"
360.
public class Binatang {
361.
public static void main(String[] args) {
362.
//instansiasi kelas
363.
//menggunakan "new"
364.
System.out.println("Berikut daftar binatang beserta salah satu turunannya :");
365.
System.out.println("");
366.
367.
Mamalia a = new Mamalia("Mamalia","Binatang Menyusui");
368.
Sapi aa = new Sapi("Sapi","Binatang Menyusui", "Penyedia Daging");
369.
Kucing ab = new Kucing("Kucing","Binatang Menyusui","Peliharaan Rumah");
370.
Tyoger aba = new Tyoger("Kucing","Binatang Menyusui","Peliharaan Rumah","Tyoge
r");
371.
Tiffany abc = new Tiffany("Kucing","Binatang Menyusui","Peliharaan Rumah","Tif
fany");
372.
Siam abb = new Siam("Kucing","Binatang Menyusui","Peliharaan Rumah","Siam");
373.
Anjing ac = new Anjing("Anjing","Binatang Menyusui","Peliharaan Rumah");
374.
Akita aca = new Akita("Anjing","Binatang Menyusui","Peliharaan Rumah","Akita")
;
375.
Beagle acb = new Beagle("Anjing","Binatang Menyusui","Peliharaan Rumah","Beagl
e");
376.
Kintamani acc = new Kintamani("Anjing","Binatang Menyusui","Peliharaan Rumah",
"Kintamani");
377.
Reptil b = new Reptil("Reptil", "Bersisik", "Binatang Bertelur");
378.
Ular ba = new Ular("Ular","Bersisik","Binatang Bertelur","Hutan");
379.
Boa baa = new Boa("Ular Boa","Bersisik","Binatang Bertelur","Hutan","Tidak Ber
bisa");
380.
Python bab = new Python("Ular Python","Bersisik","Binatang Bertelur","Hutan","
Tidak Berbisa");
381.
Cobra bac = new Cobra("Ular Cobra","Bersisik","Binatang Bertelur","Hutan","Ber
bisa");
382.
Buaya bb = new Buaya ("Buaya","Bersisik","Binatang Bertelur","Rawa-rawa");
383.
Cicak bc = new Cicak ("Cicak","Bersisik","Binatang Bertelur","Rumah");
384.
385.
//Pemanggilan konstruktor masing - masing
386.
//Catatan : penambahan System.out.println("") untuk memberikan ruang kosong 1 b
aris, biar ga mepet liatnya :D
387.
a.TampilkanRincian();
388.
System.out.println("");
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
Output / Hasil
aa.TampilkanRincian();
System.out.println("");
ab.TampilkanRincian();
System.out.println("");
ac.TampilkanRincian();
System.out.println("");
aca.TampilkanRincian();
System.out.println("");
acb.TampilkanRincian();
System.out.println("");
acc.TampilkanRincian();
System.out.println("");
b.TampilkanRincian();
System.out.println("");
ba.TampilkanRincian();
System.out.println("");
baa.TampilkanRincian();
System.out.println("");
bab.TampilkanRincian();
System.out.println("");
bac.TampilkanRincian();
System.out.println("");
bb.TampilkanRincian();
System.out.println("");
bc.TampilkanRincian();
System.out.println("");
System.out.println("");
}
}
Polymorphism
Polymorphism merupakan suatu aksi yang memungkinkan pemogram menyampaikan suatu pesan
tertentu keluar dari hierarki obyeknya, dimana suatu obyek tersebut yang berbeda memberikan
tanggapan ataupun respon terhadap pesan yang sama sesuai dengan sifat masing-masing obyek. Itu
berarti, Polymorphism “mempunyai banyak bentuk” yang juga merupakan salah satu sifat class yang
memungkinkan sebuah method mempunyai nama yang sama, namun memiliki aksi yang berbeda.
Polymorphism adalah pemikiran bahwa objek dinamis suatu class dasar dapat berperilaku seperti class
turunan. Jika objek menunjuk class dasar maka ia perilaku seperti class dasar, dan jika ia menunjuk class
turunan ia akan berperilaku seperti class turunan
Contoh kasus
kita buat program yang berfungsi untuk menghitung luas dan keliling
bangun datar.
Source code
package inheritance;
public class BangunDatar {
float luas(){
System.out.println("Menghitung laus bangun datar");
return 0;
}
float keliling(){
System.out.println("Menghitung keliling bangun datar");
return 0;
}
}
package inheritance;
public class Persegi extends BangunDatar {
float sisi;
}
package inheritance;
public class Lingkaran extends BangunDatar{
// jari-jari lingkaran
float r;
}
package inheritance;
public class PersegiPanjang extends BangunDatar {
float panjang;
float lebar;
}
package inheritance;
public class Segitiga extends BangunDatar {
float alas;
float tinggi;
}
package inheritance;
public class Main {
public static void main(String[] args) {
// membuat objek bangun datar
BangunDatar bangunDatar = new BangunDatar();
// membuat objek persegi dan mengisi nilai properti
Persegi persegi = new Persegi();
persegi.sisi = 2;
// membuat objek Lingkaran dan mengisi nilai properti
Lingkaran lingkaran = new Lingkaran();
lingkaran.r = 22;
// membuat objek Persegi Panjang dan mengisi nilai properti
PersegiPanjang persegiPanjang = new PersegiPanjang();
persegiPanjang.panjang = 8;
persegiPanjang.lebar = 4;
// membuat objek Segitiga dan mengisi nilai properti
Segitiga mSegitiga = new Segitiga();
mSegitiga.alas = 12;
mSegitiga.tinggi = 8;
// memanggil method luas dan keliling
bangunDatar.luas();
bangunDatar.keliling();
persegi.luas();
persegi.keliling();
lingkaran.luas();
lingkaran.keliling();
persegiPanjang.luas();
persegiPanjang.keliling();
mSegitiga.luas();
mSegitiga.keliling();
}
}
Output / Hasil
Aggregation or Composition
Aggregation
Aggregation adalah bentuk hubungan yang lebih khusus dari Assosiasi dimana sebuah object memiliki
lifecycle nya sendiri tapi dengan kepemilikan dan class child tidak dapat memiliki class parentnya.
Relasinya biasa di sebut relasi “has-a”.
Composition
Composition sama dengan relasi Agregasi, tapi lebih spesfic lagi yaitu lifecycle object bergantung pada
object ownernya.
Contoh kasus
Department dan Teacher. Satu Teacher tidak dapat memiliki banyak Department, tapi jika kita
menghapus object Department, object Teacher tidak akan ikut terhapus
Source code
1. public class Department
2.
{
3.
private string _name;
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public Department(string name)
{
_name = name;
_teachers = new List<Teacher>();
}
public string Name
{
get { return _name; }
set { _name = value; }
}
public List<Teacher> _teachers;
}
1. public class Teacher
2.
{
3.
private string _name;
4.
public Teacher(string name)
5.
{
6.
_name = name;
7.
}
8.
public string Name
9.
{
10.
get { return _name; }
11.
set { _name = value; }
12.
}
13.
}
1. public class ClientTester
2.
{
3.
public void AggregationTest()
4.
{
5.
var department = new Department("Electrical Engineering");
6.
7.
var teacher1 = new Teacher("Teacher 1");
8.
var teacher2 = new Teacher("Teacher 2");
9.
10.
department._teachers.Add(teacher1);
11.
department._teachers.Add(teacher2);
12.
13.
}
14.
}
Karena object teacher di buat di luar object department, sehingga jika object department dihancurkan
maka object teacher tetap exist. Object department bisa memiliki banyak object teacher yang
berasosiasi dengannya, tapi tidak sebaliknya. Sehingga dalam relasi ini object department adalah owner
dari object teacher.
Download