BAB 9-14
Disusun Oleh:
NIM : 2022903430082
10.1 Konstruktor......................................................................................................9
BAB 11 Pewarisan................................................................................................13
ii
11.9 Ikatan dimanis pada variabel bertipe kelas....................................................21
BAB 12 Paket........................................................................................................22
BAB 13 Interface..................................................................................................25
iii
BAB 9 Pemograman Berorientasi Objek
1
metode (fungsi) yang akan digunakan oleh objek tersebut. Misalnya, jika
Anda ingin membuat objek "Mobil", Anda dapat membuat kelas "Mobil"
yang memiliki atribut seperti "warna" dan "kecepatan" serta metode
seperti "maju" dan "berhenti".
3. Mengakses atribut dan metode objek: Setelah objek dibuat, Anda dapat
mengakses atribut dan metode objek tersebut. Anda dapat mengubah nilai
atribut, memanggil metode untuk melakukan operasi, atau mendapatkan
informasi dari objek tersebut. Misalnya, Anda dapat mengakses atribut
"warna" objek "mobilMerah" dan mengubahnya menjadi "biru", atau
memanggil metode "maju" pada objek "mobilMerah" untuk membuatnya
bergerak maju.
class Mahasiswa:
def __init__(self, nama, nim):
self.nama = nama
self.nim = nim
def perkenalan(self):
print("Halo, nama saya", self.nama)
print("NIM saya adalah", self.nim)
2
print(mahasiswa1.nama) # Output: John Doe
print(mahasiswa1.nim) # Output: 123456
mahasiswa1.perkenalan() # Output: Halo, nama saya John Doe \n NIM saya
adalah 123456
1. Membuat objek: Kita dapat membuat objek baru dari suatu kelas
dengan menggunakan sintaks nama_objek = NamaKelas(). Objek yang
dibuat akan memiliki atribut dan metode yang telah didefinisikan dalam
kelas.
3
Dengan menggunakan kelas, kita dapat mengorganisasi dan mengelompokkan
kode program ke dalam struktur yang lebih teratur dan terorganisir. Setiap
objek yang dibuat dari kelas akan memiliki karakteristik dan perilaku yang
spesifik sesuai dengan atribut dan metode yang telah didefinisikan dalam kelas
tersebut. Hal ini memungkinkan untuk membuat program yang lebih modular,
dapat digunakan kembali, dan lebih mudah untuk dikelola.
Lebih lanjut, berikut adalah pengertian dari kelas dan metode dalam pemrograman
berorientasi objek:
4
kelas dan dapat mengubah atau mengakses data yang dimiliki oleh objek.
Metode juga dapat melakukan operasi tertentu atau mengembalikan nilai
berdasarkan logika dan fungsionalitas yang telah didefinisikan dalam
metode tersebut. Metode memungkinkan objek untuk melakukan tindakan
atau berinteraksi dengan lingkungan sekitarnya.
Dengan menggunakan kelas dan metode, kita dapat mengorganisasi kode program
menjadi unit-unit yang lebih terstruktur dan terorganisir. Setiap objek yang dibuat
dari kelas akan memiliki atribut-atribut yang sesuai dengan kelas tersebut, serta
dapat memanggil metode-metode yang telah didefinisikan dalam kelas untuk
melakukan tugas-tugas yang relevan. Hal ini memungkinkan untuk menciptakan
program yang lebih modular, mudah dipahami, dan dapat digunakan kembali.
1. Merujuk pada atribut objek: Dalam metode kelas, kata kunci "this"
digunakan untuk merujuk pada atribut objek saat ini. Ini memungkinkan
untuk mengakses atau memanipulasi nilai atribut objek. Misalnya,
this.nama akan merujuk pada atribut "nama" dari objek saat ini.
5
this.metodeLain() akan memanggil metode "metodeLain()" dari objek saat
ini.
3. Mencegah konflik nama: Jika ada konflik nama antara parameter metode
dan atribut kelas, "this" digunakan untuk membedakan antara atribut kelas
dan parameter lokal. Misalnya, jika ada parameter "nama" dalam metode
dan juga atribut "nama" dalam kelas, menggunakan "this.nama" akan
merujuk pada atribut kelas.
6
2. Variabel Kelas (Class Variable): Variabel kelas adalah variabel yang
nilainya sama untuk semua objek yang dibuat dari kelas. Variabel ini
dideklarasikan di dalam kelas tetapi di luar metode dengan menggunakan
kata kunci "static" (pada beberapa bahasa pemrograman). Variabel kelas
bersifat bersama dan dapat diakses melalui kelas atau objek. Variabel ini
umumnya digunakan untuk menyimpan data yang bersifat bersama atau
terbagi di antara semua objek. Contoh: atribut "jumlahMahasiswa" dalam
kelas "Mahasiswa".
7
1. Private: Ketika suatu atribut atau metode dinyatakan sebagai private, itu
berarti hanya dapat diakses dan dimodifikasi dari dalam kelas tersebut.
Atribut atau metode private tidak dapat diakses langsung dari luar kelas
atau objek yang dibuat dari kelas tersebut. Tujuan penggunaan private
adalah untuk menerapkan konsep encapsulation (enkapsulasi) dalam
pemrograman berorientasi objek, di mana detail internal dari suatu kelas
disembunyikan dari luar. Dalam beberapa bahasa pemrograman, biasanya
ditandai dengan kata kunci "private" atau simbol khusus seperti tanda garis
bawah ("_") di depan nama atribut atau metode.
2. Public: Ketika suatu atribut atau metode dinyatakan sebagai public, itu
berarti dapat diakses dan dimodifikasi dari luar kelas tersebut. Atribut atau
metode public dapat diakses secara langsung melalui objek yang dibuat
dari kelas tersebut. Penggunaan public memungkinkan objek lain atau
bagian dari program lain untuk berinteraksi dengan kelas dan mengakses
atau menggunakan atribut serta metode yang dinyatakan sebagai public.
Dalam beberapa bahasa pemrograman, biasanya ditandai dengan kata
kunci "public".
8
biasanya menggunakan kata kunci khusus, seperti "class method" (pada beberapa
bahasa pemrograman), untuk menandai bahwa mereka adalah metode kelas.
2. Akses Tanpa Membuat Objek: Salah satu fitur utama metode kelas adalah
kemampuan untuk diakses tanpa membuat objek dari kelas tersebut.
Metode kelas dipanggil langsung melalui nama kelasnya, tanpa perlu
membuat objek terlebih dahulu. Ini berguna jika Anda ingin menggunakan
fungsionalitas kelas tanpa memerlukan objek spesifik.
10.1 Konstruktor
Konstruktor adalah sebuah method atau fungsi khusus yang ada di dalam
suatu class di dalam bahasa pemrograman yang digunakan untuk membuat objek
baru dari class tersebut. Konstruktor ini biasanya memiliki nama yang sama
9
dengan nama classnya, dan dapat memiliki parameter atau tidak. Konstruktor
dijalankan otomatis ketika objek baru dibuat dari class, dan biasanya digunakan
untuk menginisialisasi nilai awal dari atribut-atribut (properties) yang dimiliki
oleh objek tersebut.i awal dari atribut-atribut (properties) yang dimiliki oleh objek
tersebut. akan otomatis dipanggil untuk melakukan inisialisasi nilai-nilai awal dari
objek tersebut.
Setiap kelas pada Java minimal memiliki satu konstruktor, yaitu konstruktor
bawaan (default constructor). Konstruktor bawaan ini akan dibuat otomatis oleh
Java jika tidak ada konstruktor yang didefinisikan oleh pengguna. Konstruktor
bawaan hanya melakukan inisialisasi nilai-nilai awal dari objek dengan nilai-nilai
default dari tipe data masing-masing.
Konstruktor pada Java sangat penting dalam pembuatan objek, karena dengan
konstruktor, pengguna bisa memastikan bahwa nilai-nilai awal dari objek sudah
terinisialisasi dengan benar, sehingga objek tersebut dapat digunakan dengan
benar pada saat program dijalankan.panjang konstruktor pada bahasa
pemrograman Java merujuk pada jumlah parameter yang diterima oleh
konstruktor tersebut. Jumlah parameter ini dapat bervariasi tergantung dari
kebutuhan dalam inisialisasi objek dari suatu class.
10
1. Nama yang Sama, Parameter yang Berbeda: Konstruktor-overloading
memungkinkan Anda menggunakan nama yang sama untuk beberapa
konstruktor dalam kelas, tetapi dengan daftar parameter yang berbeda. Ini
memungkinkan Anda membuat konstruktor yang dapat menerima jenis
atau jumlah parameter yang berbeda untuk menginisialisasi objek dengan
cara yang berbeda.
Berikut adalah beberapa hal yang perlu diperhatikan tentang overloading pada
metode:
11
metode dalam kelas, tetapi dengan daftar parameter yang berbeda. Anda
dapat memiliki metode dengan nama yang sama tetapi menerima jenis atau
jumlah parameter yang berbeda.
3. Pemanggilan Metode yang Sesuai: Saat Anda memanggil metode yang di-
overload, compiler akan memilih metode yang sesuai berdasarkan
argumen yang Anda berikan. Compiler akan mencocokkan argumen yang
Anda berikan dengan tipe parameter yang dideklarasikan dalam metode
yang di-overload dan memilih implementasi yang sesuai.
Variabel kelas dikenal juga sebagai variabel statik (static variables) karena
mereka memiliki nilai yang sama di antara semua objek kelas dan dapat diakses
melalui nama kelas tanpa perlu membuat objek.
12
2. Sifat Bersama: Variabel kelas bersifat bersama di antara semua objek yang
dibuat dari kelas tersebut. Ini berarti bahwa nilai variabel kelas sama untuk
semua objek dan berlaku untuk kelas secara keseluruhan.
BAB 11 Pewarisan
Dengan pewarisan, kelas anak dapat mewarisi semua atribut dan metode dari
kelas induk, termasuk variabel, metode, dan perilaku kelas induk. Hal ini
memungkinkan kita untuk membuat hierarki kelas yang lebih terstruktur dan
memanfaatkan kembali kode yang sudah ada.
Beberapa hal yang perlu diperhatikan tentang pewarisan adalah sebagai berikut:
13
1. Hubungan Hierarki: Pewarisan menciptakan hubungan hierarki antara
kelas anak dan kelas induk. Kelas anak mewarisi semua karakteristik kelas
induk dan dapat menambahkan atau mengubah perilaku atau properti yang
diwarisi.
14
Anda dapat mewariskan sebuah kelas ke kelas lain menggunakan konsep
pewarisan dalam pemrograman berorientasi objek. Berikut adalah langkah-
langkah umum untuk mewariskan kelas:
1. Tentukan Kelas Induk (Superclass): Pilih kelas yang akan menjadi kelas
induk atau superclass. Kelas ini akan memberikan warisan properti dan
metode kepada kelas anak.
2. Tentukan Kelas Anak (Subclass): Buat kelas baru yang akan menjadi kelas
anak atau subclass. Kelas ini akan mewarisi properti dan metode dari kelas
induk.
3. Gunakan Kata Kunci "extends": Dalam deklarasi kelas anak, gunakan kata
kunci "extends" diikuti dengan nama kelas induk yang ingin Anda warisi.
Misalnya, class Anak extends Induk.
4. Akses Properti dan Metode Kelas Induk: Setelah mewarisi kelas induk,
kelas anak dapat mengakses properti dan metode kelas induk dengan
menggunakan operator titik (.). Anda dapat menggunakan properti dan
metode kelas induk seolah-olah mereka adalah milik kelas anak.
15
Penentu akses "protected" adalah salah satu penentu akses yang dapat
digunakan dalam pemrograman berorientasi objek. Dalam konteks pewarisan
(inheritance), penggunaan penentu akses "protected" memberikan akses yang
lebih terbatas daripada "public", tetapi lebih luas daripada "private". Berikut
adalah pengertian dan ciri-ciri dari penentu akses "protected":
1. Akses di dalam Kelas Itu Sendiri: Ketika sebuah anggota (atribut atau
metode) dideklarasikan sebagai "protected", anggota tersebut dapat
diakses oleh metode dalam kelas itu sendiri. Dalam hal ini, tidak ada
perbedaan antara "protected" dan "private" karena keduanya dapat diakses
hanya dalam lingkup kelas yang sama.
16
Dalam pemrograman berorientasi objek, ketika sebuah kelas anak
mewarisi sebuah kelas induk, kita dapat menggunakan kata kunci super untuk
memanggil metode dari kelas induk tersebut. Dengan memanggil metode
superkelas, kita dapat menjalankan logika dari metode di kelas induk dan
kemudian menambahkan logika tambahan di kelas anak. Berikut adalah beberapa
hal yang perlu diperhatikan saat memanggil metode superkelas:
17
1. Notasi super(...): Untuk memanggil konstruktor dari kelas induk, gunakan
notasi super(...), diikuti dengan argumen yang sesuai dengan parameter
konstruktor kelas induk yang ingin Anda panggil. Anda dapat
menyediakan argumen yang diperlukan untuk inisialisasi kelas induk.
1. Penentu Akses final pada Kelas Induk: Ketika sebuah kelas dideklarasikan
dengan penentu akses final, artinya kelas tersebut tidak dapat diwariskan
oleh kelas lain. Ini berarti tidak ada kelas anak yang dapat mewarisi kelas
tersebut. Jika kita mencoba untuk membuat kelas anak dari kelas yang
diberi penentu akses final, maka akan terjadi kesalahan kompilasi.
Contoh:
inal class Parent {
// Implementasi kelas Parent
18
}
Ketika sebuah objek dibuat dari kelas anak, objek tersebut dapat memiliki objek
yang terkait dengan kelas induk atau kelas lain dalam hierarki pewarisan. Objek
dalam kelas ini dapat digunakan untuk mengakses properti dan metode yang
terkait dengan objek tersebut, serta untuk menjalankan logika yang terkait dengan
objek dalam konteks kelas tersebut.
19
Dengan menggunakan objek dalam kelas dalam pewarisan, kita dapat
menciptakan struktur yang lebih kompleks dan fleksibel. Objek dalam kelas dapat
mewakili hubungan antarobjek, komposisi, atau agregasi antara objek dalam
hierarki pewarisan.
Dengan menggunakan penentu akses abstract, kita dapat membuat struktur kelas
abstrak dan metode abstrak yang dapat diwarisi oleh kelas-kelas turunannya.
Kelas abstrak dan metode abstrak membantu dalam menciptakan kerangka kerja
20
yang lebih umum dan memungkinkan implementasi khusus di dalam kelas-kelas
turunan.
Ikatan (binding) pada variabel bertipe kelas terjadi ketika sebuah variabel
diberikan nilai atau di-ikat (bind) dengan objek yang merupakan instance dari
kelas tersebut. Dalam konteks ini, variabel bertipe kelas berperan sebagai
referensi atau "penunjuk" ke objek yang sesungguhnya berada di memori.
Ketika variabel bertipe kelas diikat dengan objek, variabel tersebut akan mengacu
pada objek yang sama. Perubahan yang dilakukan pada objek akan terlihat melalui
variabel yang mengacunya. Dalam hal ini, ikatan variabel bertipe kelas
memungkinkan manipulasi dan akses ke data dan metode objek yang sebenarnya
ikatan variabel bertipe kelas sangat penting dalam pemrograman berorientasi
objek, karena memungkinkan penggunaan dan manipulasi objek secara efisien
melalui referensi atau "penunjuk" yang diwakili oleh variabel.
Jika Anda merujuk pada "ikatan manis" atau "binding manis" dalam
konteks variabel bertipe kelas, hal tersebut merujuk pada mekanisme ikatan
variabel dengan objek yang spesifik pada saat runtime. Dalam pemrograman
berorientasi objek, ikatan manis atau binding manis dikenal sebagai late binding
atau dynamic binding.
Dalam late binding, penentuan metode atau properti yang akan dipanggil terjadi
pada saat runtime, berdasarkan tipe objek yang sesuai dengan variabel yang
digunakan. Ini berarti saat Anda memiliki variabel dengan tipe kelas dan Anda
memanggil metode atau mengakses properti melalui variabel tersebut, metode
atau properti yang tepat akan dipilih berdasarkan jenis objek yang diikat dengan
variabel pada saat runtime.
21
BAB 12 Paket
Berikut adalah beberapa konsep dasar yang perlu dipahami tentang paket dalam
Java:
22
4. Impor: Dalam Java, Anda dapat mengimpor paket-paket dan kelas-kelas
yang ada di dalamnya untuk digunakan dalam kode Anda. Dengan
menggunakan pernyataan import, Anda dapat mempersingkat penulisan
nama kelas dan member dalam kode Anda dan membuatnya lebih mudah
dibaca dan dikelola.
Contoh:
package com.example.data;
23
sesuai. Setiap bagian dari nama paket akan menjadi subdirektori dalam
struktur direktori. Misalnya, paket com.example.data akan memiliki
struktur direktori com/example/data.
4. Impor Paket atau Kelas (Opsional): Jika Anda ingin menggunakan kelas
atau sumber daya dari paket lain, Anda perlu mengimpor paket atau kelas
yang diperlukan dalam kode Java. Dalam kode Java lainnya, gunakan
pernyataan import untuk mengimpor paket atau kelas tersebut agar dapat
digunakan.
Contoh:
import java.util.*;
24
2. Mengimpor Kelas Tertentu:
Jika Anda hanya ingin mengimpor satu kelas dari paket tertentu, Anda
dapat menggunakan pernyataan import diikuti oleh nama kelas yang ingin
Anda impor. Ini memungkinkan Anda menggunakan kelas tersebut tanpa
harus menyebutkan nama paket secara eksplisit.
Contoh:
import java.util.ArrayList;
BAB 13 Interface
25
1. Kontrak: Interface berfungsi sebagai kontrak antara objek yang
menggunakan interface dan objek yang mengimplementasikan interface
tersebut. Interface menentukan metode-metode yang harus ada dalam
kelas yang mengimplementasikannya, tetapi tidak mengatur implementasi
detail metode tersebut.
2. Tipe Abstrak: Interface dianggap sebagai tipe data abstrak yang dapat
digunakan untuk menyatakan bahwa suatu objek dapat memenuhi kontrak
yang didefinisikan oleh interface tersebut. Dalam bahasa pemrograman
Java, sebuah objek dapat memiliki banyak tipe, termasuk tipe interface.
26
(interface) dan implementasi (kelas), dan membuat kode lebih fleksibel dan
mudah diubah.
contoh:
27
public interface Drawable {
void draw();
void resize(int width, int height);
}
Berikut adalah beberapa hal yang perlu diperhatikan tentang pewarisan interface:
1. Kata Kunci extends: Untuk mewarisi interface lain, gunakan kata kunci
extends diikuti oleh nama interface yang ingin diwarisi. Sebuah interface
anak hanya dapat mewarisi dari satu atau lebih interface induk.
28
deklarasi metode, tetapi juga harus memberikan implementasi konkret
untuk semua metode yang diwarisi.
29
objek dengan tipe interface dapat digunakan secara generik untuk
berinteraksi dengan objek yang mengimplementasikan interface tersebut.
30
BAB 14 Penanganan Eksepsi
3. Blok Finally: Blok finally adalah opsional dan berada setelah blok try-
catch. Blok finally akan dijalankan terlepas dari apakah pengecualian
terjadi atau tidak. Blok ini sering digunakan untuk membersihkan sumber
daya atau menyelesaikan tugas terakhir sebelum keluar dari metode.
31
Penanganan eksepsi memungkinkan program untuk menghadapi situasi tidak
terduga dan memberikan kesempatan untuk mengatasi pengecualian secara elegan
atau melakukan tindakan yang sesuai dengan kebutuhan aplikasi.
Dalam beberapa kasus, Anda juga dapat menggunakan blok catch yang
lebih umum untuk menangkap pengecualian dari jenis yang lebih luas, seperti
Exception, untuk menangani berbagai jenis pengecualian sekaligus. Namun,
sebaiknya diusahakan untuk menangkap pengecualian dengan tipe yang lebih
spesifik agar penanganan eksepsi dapat dilakukan dengan lebih tepat.
32
(exceptions) dalam satu blok catch menggunakan mekanisme pola penanganan
eksepsi yang diperkenalkan dalam Java 7
Untuk melontarkan eksepsi, Anda menggunakan kata kunci "throw" diikuti oleh
objek pengecualian yang sesuai. Objek pengecualian harus merupakan turunan
dari kelas Exception atau turunannya. Saat melontarkan eksepsi, Anda dapat
menyertakan pesan yang menjelaskan alasan pengecualian dengan menggunakan
33
kata kunci "new" untuk membuat objek pengecualian dan memberikan pesan
melalui konstruktor.
34
Klausa "throws" dalam Java digunakan untuk menyatakan bahwa suatu
metode atau konstruktor dapat menghasilkan atau melemparkan pengecualian
tertentu kepada pemanggilnya. Dengan menggunakan klausa "throws", Anda
memberikan informasi kepada pengguna metode tentang jenis pengecualian yang
mungkin terjadi saat memanggil metode tersebut.
35