OOP Pada dart - MIXIN @ Cong Fandi | 2022-10-19T01:00:00+07:00 | 3 minutes read | Update at 2022-10-19T01:00:00+07:00

Kita kembali lagi ke contoh awal kita ya guys, yaitu Object User dan Object Properti sebagai simulasi pada materi mixin kali ini

.

Konsep mixin adalah konsep baru dalam pemrograman berorientasi objek dan tidak dimiliki oleh bahasa pemrograman lainnya.

Konsep sederhananya kan begini ya teman-teman

  1. Sebuah class hanya boleh mengextends satu class saja.
  2. Sebuah class boleh mengimplementasikan banyak interface/abstract class.

ini adalah konsep dasar dari pewarisan atau inheritance.

dan akan terjadi beberapa hal yang harus kita lakukan jika kita mengextends sebuah class dan mengimplementasikan sebuah interface/abstract class.

  1. Saat kita mengextends sebuah class, maka kita akan mendapatkan semua properti dan method yang ada di class tersebut tanpa harus menuliskannya di class anaknya.
  2. Saat kita mengimplementasikan sebuah interface/abstract class, maka kita akan mendapatkan semua properti dan method yang ada di interface/abstract class tersebut dan harus menuliskannya di class anaknya.
  3. Jika sebuah abstract class digunakan dengan kata kunci extends maka kita tetap harus memanggil semua method yang dimiliki dengan tambahan kata kunci @override di atas method tersebut.

ini perbedaan yang sangat mencolok antara kata kunci extends dan kata kunci implements. Namun, ada satu masalah nih guys, yaitu kita ingin ,engextends kelas baru, anggap saja kita punya class jual properti yang akan kita pasang ke class rumah, sedangkan class rumah adalah anak dari class Properti.

Bisa pake metode implement tapi kita harus menuliskan semua method yang ada di class JualProperti, dan ini akan membuat kita menulis kode yang berulang-ulang.

nah, disini lah konsep mixin akan membantu kita untuk mengatasi masalah ini.

Perhatikan kode berikut ini :

    abstract class CaraKerjaProperti {
    void hitungLuasBangunan();

    void hitungLuasTanah();
    }

    mixin JualProperti {
      int hargaProperti = 0;

      void kurangiHarga() {
        hargaProperti -= 1000000;
      }

      void tambahHarga() {
        hargaProperti += 1000000;
      }
    }

    class Properti {
      Properti(
          {this.nama,
          this.alamat,
          this.panjangBangunan,
          this.lebarBangunan,
          this.panjangTanah,
          this.lebarTanah});

      String? nama;
      String? alamat;
      double? panjangBangunan;
      double? lebarBangunan;
      double? panjangTanah;
      double? lebarTanah;
    }

    class Rumah extends Properti with JualProperti implements CaraKerjaProperti{
      @override
      void hitungLuasBangunan() {

      }

      @override
      void hitungLuasTanah() {

      }
    }

Perhatikan class Rumah, kita mengextends class Properti, dan mengimplementasikan interface CaraKerjaProperti, dan juga kita mengmixin class JualProperti.

Kata kunci mixin ini adalah:

  1. class yang akan dimixin diawali dengan kata kunci mixin dan diikuti dengan nama classnya.
  2. class yang akan dimixin tidak boleh mengextends class lain.
  3. class yang akan dimixin tidak boleh mengimplementasikan interface/abstract class lain.
  4. class yang akan dimixin tidak boleh memiliki constructor.
  5. untuk mengimplementasikan class mixin, harus menggunakan kata kunci with diikuti dengan nama class mixinnya.
  6. Kata kunci with harus digunakan sebelum kata implements.

Ilmu adalah dongkrak terbaik untuk merubah nasib hidup manusia. dan ilmu tidak hanya ada dibangku sekolah saja. Belajarlah selagi mampu! Penulis

© 2018 - 2022 The Ngoding

Powered by Hugo with theme Dream.

avatar

The NgodingSebuah cita-cita hanyalah mimpi jika tidak tahu cara mewujudkannya