0% menganggap dokumen ini bermanfaat (0 suara)
19 tayangan23 halaman

PBO Modul3

Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
19 tayangan23 halaman

PBO Modul3

Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 23

LAPORAN PRAKTIKUM

PEMROGRAMAN BERORIENTASI OBJEK

MODUL 1

KONSEP DASAR PEMROGRAMAN BERORIENTASI OBJEK

Oleh:

NAMA : NAHILA SHOFIE KIRANA

NIM : 2211110023

KELAS : S1-SD03A

S1 SAINS DATA

INSTITUT TEKNOLOGI TELKOM PURWOKERTO

2024
I. DASAR TEORI

Beberapa karakteristik utama dalam pemrograman berorientasi objek yaitu:

1. Abstraksi

Abstraksi merupakan proses mengidentifikasi elemen-elemen esensial dari


suatu objek sambil mengabaikan aspek-aspek yang bersifat tidak penting.
Dalam hal ini, kita mendefinisikan atribut yang dimiliki objek tersebut serta
perilaku atau metode yang dapat dilakukannya. Sebagai contoh, jika kita
mengambil manusia sebagai objek, atributnya dapat mencakup tangan,
berat, tinggi, dan sebagainya (yang merupakan kata benda atau kata sifat).
Sementara itu, perilaku yang dimiliki manusia bisa meliputi aktivitas
seperti makan, minum, dan berjalan (yang merupakan kata kerja).

2. Ekapsulasi

Pengkapsulan adalah proses mengemas data objek beserta metode-


metodenya. Manfaat utama dari pengkapsulan adalah menyembunyikan
detail implementasi dari pengguna atau objek lain yang tidak memiliki hak
akses. Dengan demikian, enkapsulasi melindungi suatu proses dari
kemungkinan gangguan atau penyalahgunaan dari luar sistem.

Fungsi dari enkapsulasi meliputi:

a. Penyembunyian Data

Penyembunyian data (data hiding) merujuk pada perlindungan data internal


objek. Objek terdiri dari metode publik dan data privat. Keuntungannya
adalah bagian internal dapat diubah tanpa memengaruhi bagian program
lainnya.

b. Modularitas

Modularitas (modularity) berarti objek dapat dikelola secara mandiri.


Karena kode sumber bagian internal objek dikelola terpisah dari antarmuka,
kita memiliki kebebasan untuk melakukan modifikasi tanpa menimbulkan
masalah pada bagian lain. Manfaat ini mempermudah distribusi objek di
dalam sistem.

3. Pewarisan (Inheritance)

Pewarisan adalah proses di mana kelas baru (disebut subclass atau kelas
turunan) dibuat dengan mewarisi karakteristik dari kelas yang sudah ada
(superclass atau kelas induk), serta menambahkan karakteristik unik dari
kelas baru tersebut. Karakteristik unik ini bisa berupa perluasan atau
spesialisasi dari superclass. Kelas turunan akan mewarisi anggota-anggota
kelas, termasuk data (atribut) dan fungsi (operasi), dan juga dapat
menambahkan data serta fungsi baru. Dalam praktiknya, jika superclass
telah mendefinisikan perilaku yang kita butuhkan, kita tidak perlu
mendefinisikan ulang perilaku tersebut; kita hanya perlu membuat kelas
yang merupakan subclass dari superclass yang bersangkutan.

4. Polymorphisms

Polimorfisme berasal dari bahasa Yunani yang berarti "banyak bentuk."


Konsep ini memungkinkan penggunaan antarmuka (interface) yang sama
untuk menginstruksikan suatu objek agar dapat melakukan tindakan atau
aksi yang secara prinsip sama, tetapi melalui proses yang berbeda.
Polimorfisme sering disebut sebagai "satu antarmuka, banyak aksi."
Mekanisme polimorfisme dapat dilakukan dengan beberapa cara, termasuk
Overloading Method, Overloading Constructor, dan Overriding Method.

5. Message (Komunikasi Antar Objek)

Objek yang beroperasi secara mandiri jarang memiliki kegunaan yang


signifikan; sebagian besar objek membutuhkan objek lain untuk
menyelesaikan berbagai tugas. Oleh karena itu, objek-objek ini saling
berkomunikasi dan berinteraksi melalui pengiriman pesan. Saat
berkomunikasi, suatu objek mengirim pesan (yang bisa berupa
pemanggilan metode) untuk memberi tahu objek lain agar melakukan
tindakan yang diinginkan. Pengiriman pesan sering kali disertai dengan
informasi tambahan untuk memperjelas apa yang diinginkan. Informasi
yang disertakan bersama pesan tersebut disebut parameter pesan.

Kelas

Kelas adalah cetak biru atau rancangan untuk objek, yang memungkinkan
kita untuk membuat banyak objek dari satu jenis kelas. Kelas
mendefinisikan tipe objek tertentu. Di dalam kelas, kita dapat
mendeklarasikan variabel dan melakukan instansiasi objek. Sebuah kelas
memiliki anggota yang terdiri dari atribut dan metode. Atribut adalah
semua field identitas yang diberikan pada suatu kelas; contohnya, kelas
manusia memiliki atribut berupa nama dan umur. Sementara itu, metode
dapat dipahami sebagai semua fungsi atau prosedur yang mencerminkan
perilaku suatu kelas. Sebuah metode disebut fungsi jika ia melakukan suatu
proses dan mengembalikan nilai (return value), sedangkan disebut prosedur
jika metode tersebut hanya menjalankan suatu proses tanpa mengembalikan
nilai (void).

Object

Objek dapat diartikan secara langsung sebagai instansiasi atau hasil


pembuatan dari suatu kelas yang telah didefinisikan sebelumnya. Dalam
pengembangan program berorientasi objek yang lebih kompleks, sebuah
objek bisa terdiri dari objek-objek lain. Contohnya, sebuah objek mobil
terdiri dari komponen seperti mesin, ban, kerangka mobil, pintu, karoseri,
dan lainnya. Selain itu, sebuah objek juga dapat menjadi turunan dari objek
lain, sehingga mewarisi sifat-sifat dari induknya. Misalnya, motor dan
mobil adalah jenis kendaraan bermotor, sehingga keduanya memiliki sifat-
sifat yang dimiliki oleh kelas kendaraan bermotor, sambil menambahkan
spesifikasi sifat-sifat mereka sendiri.

Field
Field adalah sebuah atribut. Field bisa berupa sebuah variabel kelas,
variabel objek, variabel Method objek atau parameter dari sebuah fungsi.
Field merupakan anggota dari kelas yang digunakan untuk menyimpan
data.

Method

Metode, yang juga dikenal sebagai fungsi dan prosedur, digunakan dalam
pemrograman berorientasi objek (OOP) untuk memodularisasi program
dengan memisahkan tugas-tugas dalam suatu kelas. Pemanggilan metode
melibatkan penyebutan nama metode dan menyediakan informasi
(parameter) yang diperlukan untuk menjalankan tugas tersebut.

Ada dua cara untuk melewatkan argumen ke metode, yaitu:

1. Melewatkan secara Nilai (Pass by Value)


Cara ini digunakan untuk argumen yang memiliki tipe data primitif
(seperti byte, short, int, long, float, double, char, dan boolean). Dalam
proses ini, kompiler hanya menyalin isi memori (alokasi suatu variabel)
dan kemudian mengirim salinan tersebut ke metode. Isi memori ini
adalah data "asli" yang akan diolah. Karena yang dikirim hanyalah
salinan, perubahan yang terjadi pada variabel di dalam metode tidak
akan memengaruhi nilai variabel aslinya.

2. Melewatkan secara Referensi (Pass by Reference)


Metode ini digunakan untuk array dan objek. Dalam proses ini, isi
memori dari variabel array dan objek adalah penunjuk ke alamat
memori yang menyimpan data asli yang akan diolah. Dengan kata lain,
variabel array atau objek menyimpan alamat memori, bukan isi memori.
Akibatnya, setiap perubahan pada variabel di dalam metode akan
mempengaruhi nilai variabel aslinya.

Keyword “this”
Dalam Java terdapat suatu besaran referensi khusus, disebut this, yang
digunakan dalam method yang dirujuk untuk objek yang sedang berlaku.
Nilai this merujuk pada objek di mana method yang sedang berjalan
dipanggil.
II. GUIDED
a. Guided 1

Gambar Kode Bike

Penjelasan kode bike:


Kode di atas mendefinisikan sebuah kelas Bike yang merupakan subclass dari kelas
Vehicle. Kelas ini memperluas fungsionalitas Vehicle dengan menambahkan
atribut baru, yaitu pedals, yang bertipe boolean dan menunjukkan apakah sepeda
memiliki pedal atau tidak. Pada konstruktor Bike, tiga parameter diterima: brand,
wheels, dan pedals. Melalui perintah super(brand, wheels), konstruktor kelas induk
Vehicle dipanggil untuk menginisialisasi atribut yang diwarisi, seperti brand dan
wheels, sementara atribut pedals diinisialisasi secara langsung dalam kelas ini.
Kelas Bike juga menyediakan metode getter getPedals() untuk mengakses nilai dari
atribut pedals. Selain itu, ada metode tampilinfo() yang memanggil metode
tampilinfo() dari kelas induk menggunakan super.tampilinfo() untuk menampilkan
informasi umum dari kelas Vehicle, kemudian menampilkan status dari pedals.
Secara keseluruhan, kelas ini menambahkan fitur baru tanpa menghilangkan
fungsionalitas yang ada dari kelas induknya

Gambar Kode Car

Penjelasan kode car:


Kelas Car merupakan perluasan dari kelas Vehicle dengan menambahkan atribut
baru doors untuk menyimpan jumlah pintu mobil. Dengan memanfaatkan kata
kunci super, kelas ini mewarisi atribut brand dan wheels dari kelas induk Vehicle.
Atribut baru doors diinisialisasi melalui konstruktor, dan metode getDoors()
disediakan untuk mengakses nilai tersebut.
Gambar Kode Main
Penjelasan kode main:
Kode ini membuat dua objek: satu dari kelas Car dan satu dari kelas Bike. Masing-
masing objek diinisialisasi dengan atribut yang sesuai (seperti brand, wheels, dan
doors untuk Car, serta brand, wheels, dan pedals untuk Bike). Informasi detail
mengenai masing-masing objek ditampilkan dengan memanfaatkan metode
tampilinfo() yang ada pada kedua kelas turunan.
Gambar Kode Vihacle

Penjelasan kode vihacle:

Kelas Vehicle adalah kelas dasar yang merepresentasikan kendaraan secara umum,
dengan atribut untuk merek (brand) dan jumlah roda (wheels). Metode getBrand()
dan getwheels() menyediakan akses ke nilai-nilai atribut tersebut, sedangkan
metode tampilinfo() menampilkan informasi kendaraan dalam format teks. Kelas
ini dapat digunakan sebagai superclass untuk kendaraan lain seperti Car dan Bike,
yang dapat memperluas fungsionalitas dengan menambahkan atribut dan metode
spesifik.

Output:
b. Guided 2

Gambar Kode Animal

Penjelasan kode animal:

Kelas Animal mendefinisikan sebuah metode sound() yang mencetak "Suara


Hewan" sebagai suara umum untuk hewan. Ini merupakan bentuk sederhana dari
sebuah metode yang nantinya bisa di-override oleh kelas turunannya untuk
mendefinisikan suara yang lebih spesifik sesuai jenis hewannya.
Gambar kode Cat

Penjelasan Kode cat:

Kelas Cat merupakan turunan dari kelas Animal dan meng-override metode
sound(). Alih-alih mencetak "Suara Hewan" seperti pada kelas Animal, metode
sound() di kelas Cat mencetak "Kucing Mengeong" untuk memberikan suara yang
lebih spesifik dari kucing. Ini merupakan contoh polymorphism di mana metode
yang sama dapat memiliki implementasi berbeda pada kelas turunan.

Gambar Kode Dog

Penjelasan kode Dog:

Kelas Dog merupakan turunan dari kelas Animal dan meng-override metode
sound() untuk mencetak suara yang spesifik dari anjing, yaitu "Anjing
Menggonggong:". Ini adalah contoh polymorphism di mana metode yang sama,
yaitu sound(), dapat berperilaku berbeda tergantung pada jenis objek (Dog atau
Animal).
Gambar Kode Main

Penjelasan Kode Main:

Kode ini menunjukkan konsep polymorphism, di mana metode yang sama, yaitu
sound(), dapat dipanggil dari objek dengan tipe induk Animal, tetapi menghasilkan
perilaku yang berbeda tergantung pada instance sebenarnya (apakah itu Animal,
Dog, atau Cat). Ini karena metode sound() di-override dalam kelas turunan (Dog
dan Cat), sehingga implementasi yang spesifik pada kelas turunanlah yang
dipanggil saat metode tersebut dieksekusi.

Output:
III. UNGUIDED
1. Soal 1 : Sistem Pembayaran (Inheritance & Polymorphism)

Buatlah sebuah program yang menerapkan inheritance dan polymorphism

untuk sistem pembayaran di sebuah toko online.

Deskripsi:

1. Buat kelas induk Payment yang memiliki:

• Field: double amount.


• Method: pay(), untuk melakukan pembayaran.

2 Buat dua kelas turunan dari Payment yaitu:

• CashPayment: Pembayaran menggunakan uang tunai.


• Method: pay() menampilkan "Pembayaran Tunai sebesar
Rp[amount]".
• CreditCardPayment: Pembayaran menggunakan kartu kredit.
• Field tambahan: String cardNumber.
• Method: pay() menampilkan "Pembayaran Kartu Kredit sebesar
Rp[amount] menggunakan kartu [cardNumber]".

3. Buatlah kelas Main untuk menguji:


• Buat objek dari tipe Payment yang dapat menyimpan jenis
pembayaran CashPayment dan CreditCardPayment.
• Panggil method pay() untuk setiap objek menggunakan
polymorphism.

Petunjuk:

• Gunakan super() pada constructor untuk mengatur amount dari


kelas Payment.
• Manfaatkan polymorphism untuk memanggil method pay() pada
objek yang berbeda

Jawab :

Gambar Kode Payment

Penjelasan kode payment:

Kelas payment adalah kelas dasar untuk merepresentasikan transaksi pembayaran.


Ini memiliki atribut amount yang menyimpan jumlah yang akan dibayar, dan
metode pay() yang mencetak detail pembayaran. Modifier protected pada atribut
amount memungkinkan akses terbatas ke dalam paket yang sama atau subclass,
menjadikan kelas ini fleksibel untuk diperluas oleh kelas turunan yang mungkin
mendefinisikan metode pembayaran yang lebih spesifik.

Gambar Kode CashPayment

Penjelasan kode CashPayment:

Kelas CashPayment merupakan subclass dari kelas payment yang mendefinisikan


pembayaran tunai secara spesifik. Melalui konsep inheritance, kelas ini mewarisi
atribut amount dari kelas induk. Dengan meng-override metode pay(),
CashPayment menyediakan implementasi khusus yang mencetak "Pembayaran
Tunai" beserta jumlah yang dibayarkan, menunjukkan bahwa transaksi dilakukan
secara tunai. Ini adalah contoh dari penggunaan polymorphism dan inheritance di
mana subclass dapat memiliki perilaku yang berbeda dari kelas induknya.
Gambar Kode CreditCardPayment

Penjelasan Kode CreditCardPaymet:

Kelas CreditCardPayment merupakan subclass dari payment yang menambahkan


kemampuan untuk melakukan pembayaran melalui kartu kredit. Atribut
cardNumber menyimpan nomor kartu kredit, dan metode pay() di-override untuk
mencetak informasi pembayaran khusus untuk kartu kredit. Dengan konsep
inheritance dan polymorphism, kelas ini memperluas fungsionalitas kelas payment,
menyediakan implementasi spesifik untuk metode pembayaran yang berbeda.

Output:

Penjelasan Output:
Kode ini menunjukkan penggunaan polymorphism di mana objek dari subclass
(CashPayment dan CreditCardPayment) diperlakukan sebagai objek dari kelas
induk (payment). Dengan memanfaatkan metode pay() yang telah di-override di
masing-masing subclass, hasil yang berbeda dicetak tergantung pada tipe objek
yang sebenarnya, meskipun objek-objek tersebut direferensikan sebagai tipe
payment. Hal ini menunjukkan fleksibilitas polymorphism dalam pemrograman
berorientasi objek.

2. Soal 2: Manajemen Kendaraan (Inheritance & Polymorphism)


Buatlah sebuah program manajemen kendaraan yang menggunakan
inheritance dan polymorphism.
Deskripsi:
1. Buat kelas induk Vehicle yang memiliki:
• Field: String name, int speed.
• Method: move(), untuk menampilkan "Kendaraan [name] bergerak
dengan kecepatan [speed] km/jam".
2. Buat tiga kelas turunan:
• Car: Mewarisi dari Vehicle, dan move() menampilkan "Mobil
[name] bergerak dengan kecepatan [speed] km/jam".
• Bike: Mewarisi dari Vehicle, dan move() menampilkan "Sepeda
[name] bergerak dengan kecepatan [speed] km/jam".
• Truck: Mewarisi dari Vehicle, dan move() menampilkan "Truk
[name] bergerak dengan kecepatan [speed] km/jam".
3. Buat kelas Main untuk menguji:
• buat objek dari tipe Vehicle yang dapat menyimpan jenis
kendaraan Car, Bike, dan Truck.
• Gunakan polymorphism untuk memanggil method move() pada
objek-objek yang berbeda.
Petunjuk:
• Gunakan inheritance dan method overriding untuk mengubah
perilaku method move() pada setiap jenis kendaraan.
• Gunakan polymorphism untuk memanggil method yang sesuai
dengan objek kendaraan
Jawab:

Gambar Kode Bike

Penejelasan kode Bike:

Kelas Vehicle merupakan kelas dasar yang mendefinisikan atribut umum dan
metode untuk kendaraan. Ini menyediakan struktur dasar yang dapat diperluas oleh
kelas-kelas turunan (misalnya, Car, Bike, dll.) untuk menambahkan perilaku atau
atribut tambahan yang lebih spesifik. Dengan menggunakan konsep inheritance,
kelas ini memungkinkan pembuatan hierarki kelas yang mencakup berbagai jenis
kendaraan yang dapat memiliki keunikan masing-masing, tetapi tetap berbagi
perilaku dasar yang didefinisikan dalam kelas Vehicle.

Gambar Kode Car

Penjelasan Kode Car:


Kelas Car adalah subclass dari Vehicle yang menambahkan spesifikasi untuk
kendaraan bertipe mobil. Dengan menggunakan inheritance, kelas ini mewarisi
atribut dan metode dasar dari Vehicle, dan dengan meng-override metode move(),
kelas Car dapat memberikan deskripsi yang lebih spesifik dan informatif tentang
perilaku mobil saat bergerak. Ini menunjukkan penerapan konsep polymorphism, di
mana metode move() memiliki perilaku yang berbeda tergantung pada objek yang
memanggilnya.

Gambar Kode Bike

Penjelasan Kode Bike:

Kelas Bike adalah subclass dari Vehicle yang menambahkan spesifikasi untuk
kendaraan bertipe sepeda. Dengan menggunakan inheritance, kelas ini mewarisi
atribut dan metode dasar dari Vehicle. Dengan meng-override metode move(), kelas
Bike dapat memberikan deskripsi yang lebih spesifik tentang perilaku sepeda saat
bergerak. Ini merupakan contoh dari penerapan konsep polymorphism, di mana
metode move() berperilaku berbeda tergantung pada jenis objek yang
memanggilnya, dalam hal ini antara mobil dan sepeda.
Gambar Kode Truck

Penjelasan Kode Truck:

Kelas Truck adalah subclass dari Vehicle yang menambahkan spesifikasi untuk
kendaraan bertipe truk. Dengan menggunakan inheritance, kelas ini mewarisi
atribut dan metode dasar dari Vehicle. Dengan meng-override metode move(), kelas
Truck dapat memberikan deskripsi yang lebih spesifik tentang perilaku truk saat
bergerak. Ini merupakan contoh penerapan konsep polymorphism, di mana metode
move() berperilaku berbeda tergantung pada jenis objek yang memanggilnya,
dalam hal ini antara mobil, sepeda, dan truk.
Gambar Kode Main

Penjlasan Kode Main:

Kelas Main menunjukkan bagaimana polymorphism memungkinkan program


untuk memanfaatkan kelas induk (Vehicle) untuk mereferensikan objek dari kelas
turunan (Car, Bike, dan Truck). Metode move() yang dipanggil pada masing-
masing objek akan menghasilkan keluaran yang sesuai dengan implementasi
spesifiknya, meskipun semua objek tersebut direferensikan sebagai tipe Vehicle.
Ini menggambarkan fleksibilitas dan kekuatan penggunaan inheritance dan
polymorphism dalam pemrograman berorientasi objek.

Output:

Anda mungkin juga menyukai