- Mahasiswa mampu mengimplementasikan prinsip polymorphism
- Mahasiswa mampu menggunakan abstract class sesuai dengan kebutuhan
- Platform: .NET 6.0
- Bahasa: C# 10
- IDE: Visual Studio 2022
- Clone repositori project
oop-polymorphism-csharpke direktori lokal git Anda. - Buka Visual Studio, pilih menu File > Open > Project/Solution > Pilih file *.sln.
- Tekan tombol Open untuk untuk membuka solusi.
- Baca soal dengan seksama. Buat implementasi kode sesuai dengan petunjuk.
- Jalankan unit test di project *.Tests
PERINGATAN: Push kode program ke remote repository jika hanya seluruh test case sudah lolos/passed (bertanda hijau).
Buat solusi dari soal ini di project Solution folder PetParade dengan namespace Solution.PetParade.
Buatlah sebuah kelas publik abstrak bernama Hewan yang digunakan untuk merepresentasikan hewan di kebun binatang. Seekor Hewan memiliki satu informasi sebagai variabel instance yaitu: _nama (tipe string). Kelas Hewan harus memiliki sebuah konstruktor yang menginisialisasi variabel instance tersebut. Sediakan properti dengan metode setter dan getter public untuk variabel instance yaitu Nama. Kelas Hewan juga memiliki sebuah metode abstrak Bersuara yang akan mengembalikan suara (tipe string) dari hewan tersebut.
Dari kelas Hewan, turunkan dua kelas konkrit publik yaitu Kucing dan Anjing. Buat implementasi dari metode abstrak Bersuara di kedua kelas ini. Kelas Kucing mengembalikan suara "Meong" saat metode Bersuara dipanggil. Sedangkan kelas Anjing mengembalikan suara "Guk" saat metode Bersuara dipanggil.
Buat kelas publik ParadeHewan. Deklarasikan atribut private _listHewan (tipe List<Hewan>) untuk menyimpan daftar hewan yang ikut serta di parade hewan. Buat properti getter publik ListHewan. Buat metode publik TambahHewan yang menerima parameter bertipe Hewan. Ketika metode ini dipanggil simpan hewan di atribut _listHewan. Metode ini digunakan untuk mendaftarkan hewan baru ke parade hewan. Buat metode publik HapusHewan yang menerima parameter bertipe Hewan. Hapus hewan di _listHewan jika metode ini dipanggil. Buat metode MulaiParade yang menerima parameter putaran (tipe int). Jika metode ini dipanggil, maka seluruh hewan yang terdaftar akan bersuara sesuai dengan urutan di _listHewan dan diulang sebanyak n putaran.
Buatlah sebuah kelas publik bernama Program yang didalamnya terdapat metode static Main. Instansiasi beberapa objek dari kelas Kucing dan Anjing, dan ParadeHewan. Daftarkan hewan-hewan tersebut ke objek ParadeHewan kemudian tampilkan suara dari kedua hewan tersebut ke layar dengan memanggil metode MulaiParade dengan format:
"{namaHewan} bersuara: {suaraHewan}"
Catatan: Perhatikan bagaimana alternatif penulisan kode jika tidak menggunakan polymorphism. Metode TambahHewan, HapusHewan, harus dibuat untuk setiap jenis hewan. Anda juga harus mengimplementasikan list hewan untuk semua jenis hewan yang berbeda-beda. Akibatnya metode MulaiParade harus mengiterasi banyak list hewan yang berbeda-beda.
Buat solusi dari soal ini di project Solution folder MusicStudio dengan namespace Solution.MusicStudio.
Sebuah studio musik memiliki berbagai jenis instrumen. Setiap instrumen memiliki karakteristik suaranya masing-masing.
Buatlah sebuah kelas publik abstrak bernama Instrumen yang memiliki informasi sebagai variabel instance yaitu: _nama (tipe string). Kelas Instrumen harus memiliki sebuah konstruktor yang menginisialisasi variabel instance tersebut dan metode abstrak Mainkan yang mengembalikan suara dari instrumen tersebut.
Dari kelas Instrumen, turunkan dua kelas konkrit publik yaitu Gitar dan Piano. Kelas Gitar ketika memainkan metode Mainkan akan mengembalikan "tring tring", sedangkan kelas Piano akan mengembalikan "tink tink".
Buatlah sebuah kelas bernama StudioMusik yang memiliki informasi sebagai variabel instance berupa array instrumen _listInstrumen (tipe List). Buat properti getter publik ListInstrumen. Kelas StudioMusik harus memiliki metode untuk menambahkan instrumen ke dalam array dengan nama TambahInstrumen, dan metode MainkanInstrumen yang mengembalikan nilai bertipe string yang merupakan gabungan seluruh suara instrumen yang ada di dalam array dengan format:
"{namaInstrumen} berbunyi: {suaraInstrumen}"
Buatlah sebuah kelas bernama Program yang didalamnya terdapat metode static Main. Instansiasi objek dari kelas StudioMusik, tambahkan beberapa instrumen ke dalam daftar, dan tampilkan informasi dari semua instrumen yang ada di daftar ke layar dengan memanggil metode MainkanInstrumen.
Buat solusi dari soal ini di project Solution folder Arts dengan namespace Solution.Arts.
Sebuah studio seni memiliki berbagai jenis karya seni. Setiap karya seni memiliki deskripsi dan cara khas untuk menampilkan karyanya.
Buatlah sebuah kelas abstrak publik bernama KaryaSeni yang memiliki informasi sebagai variabel instance yaitu: _judul (tipe string). Kelas KaryaSeni harus memiliki sebuah konstruktor yang menginisialisasi variabel instance tersebut dan metode abstrak Deskripsi yang mengembalikan deskripsi dari karya seni tersebut serta metode abstrak Tampilkan yang mengembalikan cara menampilkan karya seni tersebut.
Dari kelas KaryaSeni, turunkan dua kelas konkrit publik yaitu Lukisan dan Patung. Kelas Lukisan ketika memanggil metode Deskripsi akan mengembalikan "Sebuah gambar yang dilukis di atas kanvas", dan metode Tampilkan mengembalikan "Digantung di dinding". Sedangkan kelas Patung ketika memanggil metode Deskripsi akan mengembalikan "Sebuah objek tiga dimensi yang dibentuk", dan metode Tampilkan mengembalikan "Diletakkan di atas meja atau lantai".
Buatlah sebuah kelas publik bernama StudioSeni yang memiliki informasi sebagai variabel instance berupa daftar karya seni _listKarya (tipe List). Buat properti getter publik ListKarya. Kelas StudioSeni harus memiliki metode untuk menambahkan karya seni ke dalam daftar dengan nama TambahKaryaSeni dan metode TampilkanSemuaKarya yang mengembalikan daftar cara menampilkan semua karya seni yang ada di dalam daftar.
Buatlah sebuah kelas bernama Program yang didalamnya terdapat metode static Main. Instansiasi objek dari kelas StudioSeni, tambahkan beberapa karya seni ke dalam daftar, dan tampilkan cara menampilkan semua karya seni yang ada di daftar ke layar dengan memanggil metode TampilkanSemuaKarya.
Catatan: Fokus pada konsep polymorphism dimana kita dapat memanipulasi objek dari kelas turunan sebagai objek dari kelas induk.
Saatnya Kreatif!
Buat soal Anda sendiri dan solusinya di project Solution folder Extra dengan namespace Solution.Extra di file Extra.cs.
Buat spesifikasi soal Anda sendiri yang memuat hal-hal sebagai berikut:
- Nama kelas abstrak dan kelas konkrit yang dibuat. Jelaskan masing-masing kegunaannya.
- Atribut dan properti apa saja yang harus ada di kelas.
- Metode apa saja yang dibutuhkan.
- Validasi atau aturan apa yang harus dilakukan.
- Penggunaan prinsip polymorphism
Kemudian, implementasikan solusi kelas dari soal Anda di file Extra.cs dan eksekusi implementasinya di Program.cs.
=== Selesai ===