Pemrogramman Berbasis Objek
SOAL 1. [Score : 75]
Pilihan 1 (NIM berakhiran ganjil mengerjakan soal pilihan 1. Contoh: Achmad Anwar 20220100017 maka mengerjakan pilihan 1)
Buatlah sebuah class dengan nama ‘Buku’ yang merepresentasikan informasi buku. Class ini harus memiliki property berikut:
a. ‘judul’ (string)
b. ‘penulis’ (string)
c. ‘tahunTerbit’ (int)
Buatlah method constructor untuk menginisialisasi nilai dari property tersebut saat objek dibuat.
Selain itu, tambahkan method ‘displayInfo’ yang menampilkan informasi lengkap tentang buku, seperti judul, penulis, dan tahun terbit.
Jawaban kode program yang sudah dibuat bisa dicopy-paste serta screenshot hasil yang dijalankan.
Kemudian jelaskan alur program yang sudah dibuat dari pembuatan class sampai pembuatan/instansiasi objek.
Pilihan 2 (NIM berakhiran genap mengerjakan soal pilihan 2. Contoh: Alif Priambodo 20220100026 maka mengerjakan pilihan 2)
Buatlah sebuah class dengan nama ‘Karyawan’ yang merepresentasikan informasi karyawan. Class ini harus memiliki property berikut:
a. ‘nama’ (string)
b. ‘gaji’ (int)
c. ‘departemen’ (string)
Buatlah method constructor untuk menginisialisasi nilai dari property tersebut saat objek dibuat.
Selain itu, tambahkan method ‘tampilkanInfo’ yang menampilkan informasi lengkap tentang karyawan, seperti nama, gaji, dan departemen.
Jawaban kode program yang sudah dibuat bisa dicopy-paste serta screenshot hasil yang dijalankan.
Kemudian jelaskan alur program yang sudah dibuat dari pembuatan class sampai pembuatan/instansiasi objek.
Jawab:
Berikut adalah contoh kode program dalam bahasa PHP untuk class 'Buku':
<?php
class Buku {
// Properties
public $judul;
public $penulis;
public $tahunTerbit;
// Constructor
public function __construct($judul, $penulis, $tahunTerbit) {
$this->judul = $judul;
$this->penulis = $penulis;
$this->tahunTerbit = $tahunTerbit;
}
// Method untuk menampilkan informasi buku
public function displayInfo() {
echo "Informasi Buku:<br>";
echo "Judul: {$this->judul}<br>";
echo "Penulis: {$this->penulis}<br>";
echo "Tahun Terbit: {$this->tahunTerbit}<br>";
}
}
// Membuat objek buku
$buku1 = new Buku("Judul Buku 1", "Penulis 1", 2020);
$buku2 = new Buku("Judul Buku 2", "Penulis 2", 2022);
// Menampilkan informasi buku
$buku1->displayInfo();
echo "<br>";
$buku2->displayInfo();
?>
Penjelasan Alur Program:
1. Deklarasi Class 'Buku':
- Class 'Buku' dibuat dengan memiliki tiga properties: 'judul', 'penulis', dan 'tahunTerbit'.
- Terdapat constructor (`__construct`) yang digunakan untuk menginisialisasi nilai dari properties saat objek dibuat.
2. Constructor:
- Constructor menerima tiga parameter (`$judul`, `$penulis`, dan `$tahunTerbit`) yang digunakan untuk menginisialisasi nilai properties.
3. Method 'displayInfo':
- Method `displayInfo` digunakan untuk menampilkan informasi lengkap tentang buku, yaitu judul, penulis, dan tahun terbit.
4. Pembuatan Objek:
- Objek buku (`$buku1` dan `$buku2`) dibuat dengan menggunakan class 'Buku'.
- Saat objek dibuat, constructor dijalankan untuk menginisialisasi nilai properties.
5. Pemanggilan Method 'displayInfo':
- Method `displayInfo` dipanggil untuk menampilkan informasi lengkap tentang buku.
Tangkapan layar hasil eksekusi program ini:
SOAL 2. [Score : 25]
Jelaskan keuntungan penggunaan konsep Pemrograman Berorientasi Objek (OOP) dalam pengembangan perangkat lunak! Berikan setidaknya tiga alasan mengapa OOP dianggap menguntungkan.
Jawab:
Pemrograman Berorientasi Objek (OOP) adalah paradigma pemrograman yang didasarkan pada konsep objek. Dalam OOP, program dikembangkan dengan memodelkan dunia nyata sebagai objek yang memiliki atribut dan perilaku, dan interaksi antara objek dapat direpresentasikan sebagai pesan atau panggilan metode. Keuntungan penggunaan konsep OOP dalam pengembangan perangkat lunak meliputi:
Modularitas:
OOP memungkinkan pengembang memecah program menjadi modul atau bagian yang lebih kecil yang disebut objek. Setiap objek dapat memiliki atribut dan metode yang terkait dengannya sendiri. Hal ini membuat pengembangan dan pemeliharaan perangkat lunak menjadi lebih mudah, karena perubahan pada satu bagian tidak akan memengaruhi seluruh sistem. Objek dapat digunakan kembali (reusable) dalam konteks yang berbeda, meningkatkan efisiensi dan memudahkan pengelolaan kompleksitas.
Abstraksi:
OOP memungkinkan pengembang untuk menggunakan abstraksi, yaitu menyembunyikan detail implementasi dan hanya mengekspos fitur-fitur yang relevan atau penting. Dengan abstraksi, pengembang dapat fokus pada antarmuka objek tanpa harus memahami setiap detail implementasinya. Ini mempermudah pemahaman dan penggunaan objek, serta memungkinkan kolaborasi antar pengembang yang berbeda.
Encapsulation:
Encapsulation melibatkan pembungkusan (enclosing) atribut dan metode ke dalam satu unit yang disebut objek. Dengan cara ini, akses ke data dan fungsionalitas objek dapat dibatasi hanya pada bagian-bagian tertentu yang relevan. Ini membantu dalam membangun sistem yang aman dan memastikan integritas data. Selain itu, encapsulation juga menyederhanakan penggunaan objek karena pengguna hanya perlu tahu cara menggunakan antarmuka objek tanpa perlu mengetahui implementasi internalnya.
Inheritance (Pewarisan):
Konsep inheritance dalam OOP memungkinkan pembuatan objek baru yang mengambil sifat dan perilaku dari objek yang sudah ada (parent class). Ini memungkinkan penggunaan kembali kode yang sudah ada dan memperluas fungsionalitas tanpa harus menulis ulang kode. Pewarisan juga meningkatkan struktur hierarki dalam program, membuatnya lebih terstruktur dan mudah dipahami.
Polimorfisme:
Polimorfisme memungkinkan objek untuk memiliki banyak bentuk atau perilaku. Dengan menggunakan polimorfisme, suatu metode dapat memiliki nama yang sama namun memberikan implementasi yang berbeda dalam setiap objek. Ini memudahkan penanganan berbagai jenis objek dengan cara yang konsisten, meningkatkan fleksibilitas dan keberlanjutan kode.
Penggunaan OOP dapat meningkatkan kualitas perangkat lunak, mempercepat pengembangan, dan memudahkan pemeliharaan. Selain itu, OOP juga mendukung pendekatan pengembangan perangkat lunak yang lebih terstruktur dan modular, yang sesuai dengan kompleksitas aplikasi modern.
SOAL 1. [Score : 75]
Pilihan 1 (NIM berakhiran ganjil mengerjakan soal pilihan 1. Contoh: Achmad Anwar 20220100017 maka mengerjakan pilihan 1)
Anda diminta untuk membuat sistem manajemen kendaraan sederhana menggunakan konsep pemrograman berorientasi objek. Terdapat dua jenis kendaraan utama: Mobil dan Motor. Setiap kendaraan memiliki atribut berupa merek (brand) dan tahun produksi.
a. Buatlah kelas bernama ‘Kendaraan’ yang memiliki dua atribut public: ‘merek’ dan ‘tahunProduksi’. Tambahkan juga konstruktor
untuk menginisialisasi atribut tersebut.
b. Turunkan satu kelas, yaitu ‘Mobil’ dari kelas Kendaraan. Tambahkan konstruktor pada kelas tersebut untuk menginisialisasi atribut
yang diwarisi dari kelas Kendaraan.
c. Tambahkan metode bernama ‘informasiKendaraan()’ pada kelas Kendaraan yang mencetak informasi umum tentang kendaraan,
yaitu "Ini adalah sebuah kendaraan merek [merek] tahun [tahun produksi]".
d. Override metode ‘informasiKendaraan()’ pada kelas Mobil sehingga mencetak informasi spesifik mobil, yaitu "Ini adalah mobil
merek [merek] tahun [tahun produksi]".
Jawaban kode program yang sudah dibuat bisa dicopy-paste serta screenshot hasil yang dijalankan.
Kemudian jelaskan alur program yang sudah dibuat dari pembuatan class sampai pembuatan/instansiasi objek.
Pilihan 2 (NIM berakhiran genap mengerjakan soal pilihan 2. Contoh: Alif Priambodo 20220100026 maka mengerjakan pilihan 2)
Anda diminta untuk membuat sistem manajemen buah sederhana menggunakan konsep pemrograman berorientasi objek. Terdapat dua jenis
kendaraan utama: Mangga dan Apel. Setiap kendaraan memiliki atribut berupa jenis dan tahun panen.
a. Buatlah kelas bernama ‘Buah’ yang memiliki dua atribut public: ‘jenis’ dan ‘tahunPanen’. Tambahkan juga konstruktor untuk
menginisialisasi atribut tersebut.
b. Turunkan satu kelas, yaitu ‘Mangga’ dari kelas Buah. Tambahkan konstruktor pada kelas tersebut untuk menginisialisasi atribut yang
diwarisi dari kelas Buah.
c. Tambahkan metode bernama ‘InformasiBuah()’ pada kelas Buah yang mencetak informasi umum tentang buah, yaitu " Ini adalah
sebuah buah jenis $this->jenis yang panen tahun $this->tahunPanen.".
d. Override metode ‘informasiBuah()’ pada kelas Mangga sehingga mencetak informasi spesifik mangga, yaitu " Ini adalah mangga jenis $this->jenis yang panen tahun $this->tahunPanen.".
Jawaban kode program yang sudah dibuat bisa dicopy-paste serta screenshot hasil yang dijalankan.
Kemudian jelaskan alur program yang sudah dibuat dari pembuatan class sampai pembuatan/instansiasi objek.
Jawab:
Berikut adalah implementasi program PHP untuk sistem manajemen kendaraan sederhana menggunakan konsep pemrograman berorientasi objek:
<?php
class Kendaraan {
public $merek;
public $tahunProduksi;
public function __construct($merek, $tahunProduksi) {
$this->merek = $merek;
$this->tahunProduksi = $tahunProduksi;
}
public function informasiKendaraan() {
echo "Ini adalah sebuah kendaraan merek {$this->merek} tahun {$this->tahunProduksi}\n";
}
}
class Mobil extends Kendaraan {
public function __construct($merek, $tahunProduksi) {
parent::__construct($merek, $tahunProduksi);
}
public function informasiKendaraan() {
echo "Ini adalah mobil merek {$this->merek} tahun {$this->tahunProduksi}\n";
}
}
// Instansiasi objek Kendaraan
$kendaraan_umum = new Kendaraan("Toyota", 2022);
// Memanggil metode informasiKendaraan pada objek Kendaraan
$kendaraan_umum->informasiKendaraan();
// Instansiasi objek Mobil
$mobil_toyota = new Mobil("Avanza", 2022);
// Memanggil metode informasiKendaraan pada objek Mobil
$mobil_toyota->informasiKendaraan();
?>
Penjelasan Alur Program:
1. Kelas `Kendaraan`:
- Membuat kelas `Kendaraan` dengan konstruktor (`__construct`) yang menginisialisasi atribut `merek` dan `tahunProduksi`.
- Menyertakan metode `informasiKendaraan` yang mencetak informasi umum tentang kendaraan.
2. Kelas `Mobil` (turunan dari `Kendaraan`):
- Membuat kelas `Mobil` yang merupakan turunan dari kelas `Kendaraan`.
- Menggunakan konstruktor kelas induk (`parent::__construct($merek, $tahunProduksi)`) untuk menginisialisasi atribut yang diwarisi.
3. Instansiasi Objek:
- Membuat objek `$kendaraan_umum` dari kelas `Kendaraan` dengan merek "Toyota" dan tahun produksi 2022.
- Membuat objek `$mobil_toyota` dari kelas `Mobil` dengan merek "Avanza" dan tahun produksi 2022.
4. Memanggil Metode:
- Memanggil metode `informasiKendaraan` pada objek `$kendaraan_umum`, yang mencetak informasi umum tentang kendaraan.
- Memanggil metode `informasiKendaraan` pada objek `$mobil_toyota`, yang telah dioverride untuk mencetak informasi khusus tentang mobil.
5. Hasil Eksekusi:
- Output program akan mencetak informasi sesuai dengan metode yang dipanggil pada objek, menunjukkan penggunaan konsep pewarisan dan override dalam OOP.
Hasil tangkapan layar:
SOAL 2. [Score : 25]
Jelaskan konsep "object type" dalam pemrograman berorientasi objek dan bagaimana objek tipe ini berbeda dengan tipe data konvensional.
Jawab:
Dalam pemrograman berorientasi objek (OOP), konsep "object type" mengacu pada jenis data yang digunakan untuk mendefinisikan objek. Objek dalam OOP adalah instansiasi dari suatu kelas, dan kelas sendiri dapat dianggap sebagai tipe data yang mendefinisikan struktur dan perilaku objek yang akan dibuat.
Berikut adalah beberapa poin kunci terkait dengan konsep "object type" dalam pemrograman berorientasi objek:
1. Instansiasi dari Kelas:
- Dalam OOP, tipe data utama adalah kelas. Ketika Anda membuat objek, Anda menginstansiasi (membuat instance dari) kelas tersebut.
- Objek yang dihasilkan dari instansiasi kelas memiliki tipe yang disebut "object type." Sebagai contoh, jika Anda memiliki kelas `Car`, maka setiap objek yang dibuat dari kelas tersebut memiliki tipe "Car."
2. Properti dan Metode:
- Setiap objek tipe memiliki properti (atribut) dan metode yang didefinisikan oleh kelasnya. Properti adalah data yang dimiliki objek, sementara metode adalah fungsi atau perilaku yang dapat dijalankan oleh objek.
- Misalnya, objek tipe "Car" mungkin memiliki properti seperti warna, model, dan metode seperti "startEngine()" atau "drive()".
3. Enkapsulasi:
- Konsep enkapsulasi dalam OOP memungkinkan pembungkusan data dan perilaku bersama dalam objek tipe tersebut.
- Objek tipe ini memungkinkan penggunaan hak akses (seperti public, private, dan protected) untuk mengontrol akses ke properti dan metode objek.
4. Pewarisan (Inheritance):
- Objek tipe juga dapat memiliki hubungan pewarisan, di mana satu kelas dapat mewarisi properti dan metode dari kelas lain.
- Misalnya, jika Anda memiliki kelas "Sedan" dan "SUV," objek tipe "SUV" dapat mewarisi properti dan metode dari kelas "Car" atau "Vehicle."
Dibandingkan dengan tipe data konvensional:
- Tipe data konvensional: Umumnya merujuk pada jenis data primitif seperti integer, float, string, dll.
- Objek tipe: Lebih kompleks karena mencakup properti dan metode yang terkait dengan suatu konsep atau entitas tertentu.
Dengan menggunakan objek tipe, pengembang dapat mengorganisir dan mengelola kode dengan lebih terstruktur, mendukung konsep OOP seperti enkapsulasi, pewarisan, dan polimorfisme. Objek tipe ini memungkinkan abstraksi yang lebih tinggi dan membuat pengembangan perangkat lunak menjadi lebih modular dan mudah dipahami.
Komentar
Posting Komentar
Semoga bermanfaat dunia dan akhirat