4 Pilar OOP

Aul
Amikom Computer Club
5 min readMar 13, 2024

Sebelumnya teman-teman telah mempelajari tentang OOP (Object Oriented Programming) nih. Sudah tahu mengenai definisi dari OOP dan juga mempelajari tentang Class, Object, Properties, Methods dan Contructors. Nah selanjutnya kita akan melanjutkan pembahasan mengenai OOP yaitu tentang Inheritance, Getter dan Setter, Abstraction dan Polymorphism. Yuk simak lebih lanjut!

Inheritance

Inheritance atau pewarisan adalah kemampuan untuk menurunkan sebuah class ke class lain. Dalam artian, kita bisa membuat class Parent dan class Child. Class Child, hanya bisa punya satu class Parent, namun satu class Parent bisa punya banyak class Child. Saat sebuah class diturunkan, maka semua field dan method yang ada di class Parent, secara otomatis akan dimiliki oleh class Child untuk melakukan pewarisan. Di class child, kita harus menggunakan kata kunci extends lalu diikuti dengan nama class parent nya. Berikut contohnya :

Dan jika dipraktikan seperti ini contohnya :

Disini terlihat bahwa Class Sedan, Balap, dan Angkut tidak memiliki isi kodingan namun dia tetap bisa menghasilkan output. Hal ini karena ke-3 class diatas adalah child dari Mobil. Jadi kita tidak perlu menuliskan ulang 3 kali, cukup menggunakan extend [nama Parent]. Maka Ouput dari code diatas adalah :

Overriding Inheritance

Method overriding adalah kemampuan mendeklarasikan ulang method di child class, yang sudah ada di parent class. Saat kita melakukan proses overriding tersebut, secara otomatis ketika kita membuat object dari class child, method yang di class parent tidak bisa diakses lagi. Saat melakukan method overriding, kita harus pastikan deklarasi method nya harus sama dengan di parent class nya.

Kita bisa lihat disini, pada class Angkut diberi void merk() lagi sama seperti parent classnya yaitu class Mobil. Yang berbeda disini adalah isi String dari printnya.

Jika di run, maka hasilnya akan seperti ini

Getter dan Setter

Dalam pemrograman berorientasi objek (OOP), getter dan setter adalah metode yang digunakan untuk mengakses dan mengubah nilai properti suatu object secara aman. Oke, mari kita bahas satu persatu

Getter

Getter adalah metode yang digunakan untuk mengambil nilai properti dari suatu objek. Getter digunakan untuk mengakses properti tanpa mengubahnya. Nah biar gak bingung, mari kita coba codingan berikut:

Dari contoh diatas, dalam class ‘Mobil’, kita mendefinisikan sebuah properti bernama ‘_warna’ yang bersifat privat, ditandai dengan awalan ‘_’. Ini berarti properti tersebut hanya dapat diakses oleh class ‘Mobil’ itu sendiri dan tidak dapat diakses dari luar class.

Selanjutnya kita mendefinisikan sebuah getter untuk properti ‘_warna’ menggunakan sintaks String get warna => warna; yang berarti ketika kita memanggil ‘warna’, kita sebenarnya memanggil metode ‘get’ yang akan mengembalikan nilai properti dari ‘_warna’.

Dengan menggunakan getter, kita dapat mengakses nilai properti _warna tanpa harus mengekspos langsung properti tersebut ke luar kelas, menjaga prinsip enkapsulasi dalam pemrograman berorientasi objek.

Setter

Setter merupakan metode yang digunakan untuk mengubah nilai properti suatu objek. Setter memungkinkan kita untuk menerapkan logika atau pembatasan saat mengubah nilai properti. Contohnya :

Output yang dihasilkan :

Nah, bagaimana jika kita mencoba mengatur warna mobil menjadi ‘Hijau’?

Apa yang akan terjadi jika warna mobilnya diubah menjadi hijau? Apakah tetap menghasilkan biru? Atau hijau? Atau output lainnya?

Dari output diatas, kita dapat melihat bahwa pesan “Warna yang diberikan tidak valid”, akan dicetak karena pembatasan yang diterapkan, warna mobil hanya bisa ‘merah’ dan ‘biru’ dalam setter.

Dengan menggunakan getter dan setter, kita dapat mengontrol akses ke properti objek dan memastikan bahwa perubahan nilai properti terjadi sesuai dengan aturan yang ditetapkan.

Abstraction

Saat kita membuat class, kita bisa menjadikan sebuah class sebagai abstract class. Abstract class artinya, class tersebut tidak bisa dibuat sebagai object secara langsung, hanya bisa diturunkan. Untuk membuat sebuah class menjadi abstract, kita bisa menggunakan kata kunci abstract sebelum kata kunci class. Kita bisa kembali ke kodingan kita di materi Inheritance tadi, sebenarnya jika kita mendeklarasikan mobil itu bisa bisa saja.

Namun, jika kita mengubah class Mobil menjadi abstract class Mobil

Maka kita sudah tidak bisa mendeklarasikan mobil lagi.

Polymorphism

Polymorphism atau yang sering kita kenal dengan pewarisan ini adalah sebuah konsep dimana suatu objek dapat memiliki bentuk atau tipe. Dengan kata lain, objek dari kelas yang lebih khusus dapat digunakan dimana saja dari kelas yang lebih umum.

Mari kita lihat bagaimana konsep polymorphism dapat diimplementasikan dalam Dart, berikut :

Dalam contoh diatas, kita melihat kelas abstrak ‘Kendaraan’ yang memiliki satu metode abstrak ‘bergerak()’. Kemudian, kita memiliki dua kelas yang mewarisi ‘Kendaraan’ yaitu ‘Mobil’ dan ‘SepedaMotor’. Kedua kelas ini mengimplementasikan metide ‘bergerak()’ sesuai dengan perilaku yang sesuai dengan jenis kendaraan.

Dalam ‘main’ function, kita membuat sebuah object ‘kendaraan’ yang bertipe ‘Kendaraan’. Kita dapat mengalokasikan objek ‘Mobil’ atau ‘SepedaMotor’ ke dalam variabel ‘kendaraan’, menunjukkan polymorphism. Meskipun variabel ‘kendaraan’ memiliki tipe ‘Kendaraan’, ia bisa merujuk ke objek dari kelas turunannya. Kemudian kita memanggil metode ‘bergerak()’ yang akan dipanggil dari kelas sesuai dengan objek yang sebenarnya.

--

--