‫Dalam pelajaran ini, Anda akan belajar cara membuat dan mengimplementasikan antarmuka Anda sendiri dengan contoh nyata, dan
‫Anda akan mendapatkan ide tentang mengapa antarmuka digunakan, terutama ketika kelas kita tidak memiliki hubungan satu sama lain
‫dan oleh karena itu mereka tidak' t berbagi kelas dasar.
‫Jadi warisan seperti itu bukanlah suatu pilihan.
‫Bayangkan kita sedang mengerjakan sebuah video game di mana pemain dapat menghancurkan barang-barang, tetapi semua yang kita
‫hancurkan akan memiliki perilaku yang berbeda tergantung pada apa yang dihancurkan.
‫Misalnya, menghancurkan kursi akan memainkan beberapa suara penghancuran dan akan menelurkan bagian kursi yang hancur.
‫Tapi menghancurkan mobil akan mengeluarkan suara ledakan, membuat api dan menghancurkan benda-benda lain di dekatnya.
‫Untuk permainan kami, kami memiliki kelas berikut, kursi yang diwarisi dari furnitur kelas dan mobil yang
‫diwarisi dari kendaraan kelas.
‫Jadi mari kita lihat kelas-kelas itu dengan cepat.
‫Jadi kita punya kursi ini yang mewarisi dari furnitur, dan kursi hanya memiliki konstruktor sederhana
‫di sini di mana kita mengatur warna serta bahan berdasarkan apa yang diberikan pada objek yang dibuat.
‫Tapi sekarang, tentu saja, kelas ini mewarisi furnitur, itulah sebabnya kami memiliki properti itu di sini, warna
‫dan bahan yang baru saja kami gunakan di kelas kursi.
‫Dan kemudian kita memiliki konstruktor di sini, yang merupakan konstruktor default, di mana nilai-nilai itu akan ditetapkan
‫secara default.
‫Jadi warna dan bahannya akan putih dan akan secara default.
‫Dan kemudian kami juga memiliki konstruktor sederhana yang menggunakan warna serta bahan untuk mengaturnya secara
‫default.
‫Oke, jadi tidak ada yang terlalu mewah, tapi tentunya kita juga punya mobil dan kita ingin bisa menghancurkan kursi dan mobil
‫itu, seperti yang saya katakan tadi.
‫Jadi mari kita lihat mobilnya dengan cepat.
‫Jadi di sini kita memiliki cerita yang sama, sebuah mobil subclass yang memperpanjang kendaraan di mana kita mengatur kecepatan mobil serta
‫warnanya.
‫Jadi sekarang kita menggunakan, omong-omong, konstruktor sederhana seperti yang kita lakukan di sini.
‫Tapi tentu saja, kita bisa menggunakan berbasis di sini juga, melewati kecepatan serta warna.
‫OK, jadi itu juga merupakan opsi yang valid dan kita tidak perlu menggunakan ini di sini.
‫Jadi ada dua cara berbeda, tentu saja, untuk melakukannya.
‫Oke, lalu mobil ini mewarisi dari kendaraan yang tentunya kecepatan dan warna harus ditentukan.
‫Jadi mari kita lihat kelas kendaraannya.
‫Dan kita dapat melihat di sini bahwa kendaraan kelas dasar ini memiliki kecepatan, warna, konstruktor default, yang menetapkan
‫dua nilai kecepatan dengan 120 kilometer per jam dan warna dengan putih.
‫Dan kemudian kita memiliki konstruktor sederhana yang akan mengatur kecepatan dan warna berdasarkan
‫nilai yang diberikan pada objek kendaraan.
‫Juga, tentu saja, ke objek warisan, seperti mobil, misalnya.
‫Oke, jadi sekarang kita memiliki semua kelas yang berbeda itu dan kita melihat bagaimana strukturnya, mari
‫kita lihat fitur penghancuran yang sebenarnya.
‫Jadi apa pendekatan terbaik untuk membuat fitur penghancuran seperti itu?
‫Jika kita memikirkannya, kita tidak dapat menambahkan kelas untuk membuat kelas kita mewarisinya karena ini adalah
‫bahasa pewarisan tunggal dan bukan bahasa pewarisan ganda yang sudah kita warisi dari satu kelas.
‫Jadi mobil sudah mewarisi dari kendaraan dan kursi sudah mewarisi dari furnitur.
‫Jadi tidak bisa mewarisi dari sesuatu yang lain.
‫Seperti, misalnya, kendaraan di sini yang Anda lihat C Sharp tidak mengizinkan ini karena tidak dapat memiliki banyak
‫kelas dasar.
‫Sebuah kelas tidak dapat memiliki beberapa kelas dasar dalam C sharp.
‫Jadi plus tidak ada hubungan konkrit antara mobil dan kursi untuk berbagi satu kelas dasar, karena mereka
‫sama sekali berbeda dengan dua hal, bukan?
‫Jika kita menerapkan metode normal yang disebut metode penghancuran, misalnya, di setiap kelas yang kita miliki
‫di sini, akan sulit untuk mempertahankannya.
‫Bagaimana jika kita memutuskan untuk mengubah sistem penghancuran seluruhnya atau menambahkan efek visual ke objek yang dapat
‫dirusak di masa depan, akan sangat merepotkan untuk benar-benar melalui setiap kelas dan memodifikasinya.
‫Karena dalam kasus ini, kami hanya memiliki dua subkelas, jadi bisa dikatakan, benar, tetapi bayangkan Anda memiliki
‫50 atau bahkan 100 kelas yang berbeda, 100 jenis objek yang berbeda dalam permainan Anda, maka Anda
‫harus melewati setiap satu dari mereka dan sesuaikan kodenya.
‫Jadi itu benar-benar beban dan kami tidak ingin melalui itu.
‫Karena itu kita perlu mencari solusi yang lebih baik.
‫Yang kita butuhkan adalah cara untuk menegakkan perilaku yang dapat dirusak pada setiap kelas yang menggunakannya, seperti halnya
‫kontrak.
‫Dan jika Anda telah menonton video kami di antarmuka, Anda tahu bahwa itu adalah kontrak yang dapat kami buat.
‫Jadi pendekatan terbaik dalam hal ini adalah menggunakan antarmuka dan kami akan menyebutnya I destroyable.
‫Dan setiap kelas yang mengimplementasikan antarmuka ini akan dipaksa untuk mengikuti persyaratan penghancuran kami dan menyesuaikannya
‫pada saat yang sama, tergantung pada kelas itu sendiri.
‫Jadi mari kita lanjutkan dan buat antarmuka seperti itu, oleh karena itu Anda dapat pergi ke sini untuk proyek Anda,
‫tambahkan item baru dan kemudian pilih antarmuka di sini dan beri nama.
‫Jadi saya akan menyebut yang ini I.
‫D stroy Elbo sehingga Anda dapat melihat saat menggunakan antarmuka, Anda menambahkan AI di awal nama file
‫untuk menunjukkan bahwa ini akan menjadi antarmuka.
‫Jadi mari kita tambahkan antarmuka ini.
‫Jadi antarmuka ini hanya akan memiliki properti untuk menyimpan file audio yang akan dijalankan setelah kita melakukan penghancuran,
‫yang akan menjadi suara penghancuran, dan kemudian kita hanya memiliki metode yang akan menghancurkan sebuah objek dan
‫kita akan menyebutnya ini metode menghancurkan.
‫Itu tidak akan mengembalikan apa pun.
‫Itu hanya akan menghancurkan sesuatu.
‫Jadi bisa, misalnya, mengembalikan grafik yang Anda miliki.
‫Jadi objek AI yang ingin ditampilkan setelah item dihancurkan, misalnya mobil dihancurkan atau kursi
‫dihancurkan dan lain sebagainya.
‫Jadi sekarang mari kita pastikan bahwa kelas kita sebenarnya akan mengimplementasikan antarmuka ini dan kemudian tentu saja, mengimplementasikan
‫konten antarmuka, yang berarti suara penghancuran serta metode penghancuran.
‫Bagaimana kita bisa melakukan itu?
‫Nah, mari kita ke mobil kita, misalnya.
‫Dan di sini mobil kita perlu menambahkan koma di sini di bagian atas kelas, definisi di atas dan menggunakan
‫antarmuka yang bisa dihancurkan seperti ini.
‫Jadi sekarang jika Anda menambahkan itu, Anda dapat melihat bahwa Anda mendapatkan kesalahan yang mengatakan mobil tidak
‫mengimplementasikan suara penghancuran anggota antarmuka serta menghancurkan.
‫Jadi kami dapat menunjukkan perbaikan potensial dan menerapkan semua anggota.
‫Misalnya, ini akan membuat kode otomatis ini untuk kita.
‫Jadi itu akan menciptakan kekosongan yang bisa dihancurkan dan itu akan menciptakan suara kehancuran untuk kita.
‫Jadi itu akan menjadi versi yang dibuat secara otomatis.
‫Tapi kita juga bisa melakukannya secara manual.
‫Tidak ada masalah dengan itu.
‫Jadi di sini, misalnya, kita dapat menerapkan suara penghancuran.
‫Dan kemudian apa yang ingin saya lakukan adalah saya ingin memiliki properti untuk menyimpan benda-benda yang dapat dihancurkan di
‫dekatnya.
‫Jadi ketika sebuah mobil dihancurkan, itu juga harus menghancurkan objek di dekatnya.
‫Dan daftar ini juga akan menjadi Tipe I yang dapat dihancurkan, yang berarti dapat menyimpan objek apa pun yang mengimplementasikan antarmuka
‫ini dan kita hanya dapat mengakses properti dan metode dalam antarmuka itu.
‫Jadi untuk membuatnya, saya akan membuat daftar publik dari objek-objek yang sangat mudah dihancurkan dan saya akan menyebutnya
‫sebagai objek yang bisa dihancurkan di dekat sini.
‫Jadi sekarang kita dapat melanjutkan dan memperluas konstruktor kita, jadi di satu sisi kita ingin memastikan bahwa
‫kita menginisialisasi suara sehingga kita memastikan bahwa kita memiliki suara ledakan.
‫Sebagai contoh, katakanlah kita memiliki suara yang disebut suara ledakan mobil dan tiga, dan kemudian kita ingin
‫menginisialisasi daftar objek yang dapat dihancurkan.
‫Jadi ini akan, misalnya, hanya menjadi daftar baru dari objek yang dapat dihancurkan.
‫Dan kemudian kita hanya perlu menerapkan metode penghancuran.
‫Jadi ini saya hancurkan di sini di atas, Anda bisa melihatnya masih tidak bahagia.
‫Itu masih mengharapkan kita untuk menerapkan metode penghancuran.
‫Jadi Anda lihat, ketika Anda mengimplementasikan antarmuka, Anda perlu mengimplementasikan anggotanya karena antarmuka di
‫sini memiliki dua anggota.
‫Kita perlu menerapkan keduanya.
‫Oke, jadi itu artinya kita harus kembali ke sini dan kita harus benar-benar menerapkan metode penghancuran.
‫Jadi mari kita benar-benar cepat melakukannya untuk melakukannya.
‫Apa yang ingin saya tambahkan di sini adalah, pertama-tama, dua pernyataan.
‫Saya hanya akan menggunakan pernyataan baris yang benar.
‫Saya akan membuatnya sederhana karena kami tidak membuat game di sini, tetapi kami hanya
‫mencoba memahami konsep antarmuka.
‫Jadi ketika mobil hancur, kita harus memainkan suara penghancuran dan membuat efek api.
‫Jadi di sini kita hanya meniru seolah-olah itu benar-benar memainkan suara dan itu hanya akan berkata,
‫OK, memainkan ledakan mobil dan tiga suara, dan kemudian kita menciptakan api.
‫Jadi semuanya terbakar.
‫Semuanya terbakar karena mobil hancur.
‫Jadi sekarang mari kita lihat semua yang bisa dihancurkan di sekitar dan benar-benar menghancurkannya.
‫Jadi di sini kita akan membahas setiap objek I yang dapat dihancurkan yang ada di dalam daftar tembok yang hancur
‫di dekatnya.
‫Kami menyebutnya dapat dihancurkan sehingga setiap item akan menjadi dapat dihancurkan, yang pada dasarnya hanyalah
‫nama variabel lokal.
‫Jadi kami katakan, OK, objek yang dapat dihancurkan yang akan mengimplementasikan antarmuka yang dapat dihancurkan hanya akan disebut dapat dihancurkan
‫di setiap loop kami.
‫Jadi kami mengulanginya, yang berarti kami mengulangi koleksi yang dapat dihancurkan di sekitar, yang merupakan
‫daftar objek yang dapat dihancurkan AI, pada dasarnya objek yang mengimplementasikannya, antarmuka AI yang dapat
‫dihancurkan, dan kemudian kami hanya memanggil metode penghancuran.
‫Jadi pada dasarnya kita membuat reaksi berantai di sini, menghancurkan segala sesuatu di sekitar segala sesuatu yang hancur dan itu
‫juga sebuah mobil dan sebagainya.
‫Jadi dalam hal ini, katakanlah kita memiliki dua mobil yang bersebelahan dan mereka memiliki banyak kursi yang
‫bersebelahan.
‫Jadi mobil akan menyebut metode penghancuran ini di mana mereka akan menghancurkan barang-barang di dekatnya karena, yah, itu
‫ledakan besar, kan?
‫Ada suara yang muncul dan setiap item menciptakan suara.
‫Sekarang, Anda tentu saja dapat membuat pengatur waktu yang diperlukan hingga ledakan yang sebenarnya terjadi
‫setelah sesuatu terbakar.
‫Tapi kita akan membuatnya sederhana di sini.
‫Oke, jadi kita menghancurkan mobil lain, tetapi juga sorak-sorai lainnya sehingga setiap mobil akan menginfeksi barang-barang lain di sekitarnya
‫yang ada di dekatnya.
‫Dan ini bisa jadi, katakanlah, segala sesuatu yang berjarak 10 meter atau lima meter atau berapa
‫inci jauhnya jika Anda ingin mengambil sistem Amerika di sini.
‫Tapi pada dasarnya itulah yang akan terjadi.
‫Sekarang, mari kita lihat kursi, karena kursi harus melalui pendekatan yang sama karena kami
‫juga ingin memastikan bahwa kursi dapat dihancurkan, tetapi penghancuran kursi akan sangat
‫berbeda.
‫OK, jadi di sini kita juga akan menambahkan antarmuka.
‫Jadi antarmuka AI yang dapat dihancurkan dan tentu saja, kita perlu menerapkan suara penghancuran dan
‫itu akan menjadi kehancuran yang sangat berbeda karena kursi hanya akan runtuh dan itu akan menghancurkan kayu
‫yang Anda dengar.
‫Jadi itu akan menjadi suara yang sangat berbeda di sini.
‫OK, dan tentu saja, kami ingin mendefinisikan suara penghancuran di dalam konstruktor kami juga.
‫Jadi saya akan mengatakan bahwa suara penghancuran kursi harus dimainkan.
‫Itu akan selalu sama.
‫Itu sebabnya saya tidak menambahkannya di sini dalam deklarasi kursi.
‫Jadi saya membuatnya sederhana di sini.
‫Tentu saja, Anda dapat memiliki kursi berbeda yang memiliki suara ledakan berbeda, kemudian Anda
‫akan menambahkannya di sini di bagian atas sebagai parameter untuk konstruktor Anda.
‫OK, jadi sekarang mari kita terapkan metode penghancuran.
‫Dan dalam hal ini, yang akan terjadi adalah kita akan menghancurkan sesuatu dan pertama-tama kita akan menghancurkan kursi berwarna berdasarkan
‫warna yang dimiliki kursi tersebut, akan menulis itu.
‫Kemudian kita akan memainkan suara penghancuran dan akhirnya kita akan menelurkan bagian-bagian kursi.
‫Oke, jadi dalam kasus kami, kami hanya menulisnya ke konsol.
‫Tapi bayangkan saja dalam gim nyata bagaimana Anda akan melakukannya, karena cara terbaik untuk menghancurkan sesuatu dalam gim
‫video bukanlah dengan benar-benar melakukan hal fisik di mana Anda melakukan semua penghancuran, yang
‫sangat sulit untuk dibangun terutama jika.
‫Tidak memiliki tim besar yang melakukan segala macam hal, maka pada dasarnya Anda hanya akan
‫membuat ledakan besar atau animasi penghancuran dan kemudian Anda akan menelurkan bagian-bagian yang hancur dari bagian-bagian individu yang tergeletak di
‫sekitar.
‫Jadi Anda lihat di sini tidak ada reaksi berantai yang berasal dari metode penghancuran ini.
‫Jadi implementasi metode destroy untuk kursi sangat berbeda dengan yang ada di kendaraan, tetapi
‫keduanya mewarisi dari antarmuka AI yang dapat dihancurkan dan harus menerapkan metode penghancuran dan mereka dapat melakukannya
‫dengan cara mereka sendiri.
‫Jadi pada dasarnya antarmuka memungkinkan kita semacam multi-warisan, meskipun itu tidak benar-benar
‫multi-warisan.
‫OK, jadi sekarang mari kita lanjutkan dan pergi ke program kami.
‫Ya.
‫Dan benar-benar menggunakan kelas kami yang baru dibuat karena.
‫Nah, kalau tidak, itu membosankan.
‫Benar.
‫Jadi mari kita lanjutkan dan buat dua kursi.
‫Jadi kami memiliki kursi kantor yang akan berwarna coklat dan plastik, dan kemudian kami memiliki kursi permainan yang akan
‫berwarna merah dan kayu.
‫Dan kemudian mari kita juga membuat mobil baru.
‫Jadi mobil ini akan memiliki kecepatan 80 dan akan berwarna biru dan akan menjadi mobil yang rusak.
‫Dan kemudian kita akan menambahkan dua kursi di dekat mobil yang rusak ini.
‫Jadi kami menambahkannya sebagai yang dapat dihancurkan di dekat mobil kami yang rusak.
‫Jadi kursi kantor dan kursi game sekarang, jika kita melihatnya di sini sebagai yang dapat dihancurkan ada di dekatnya,
‫karena ketika membuat mobil, daftar ini akan kosong.
‫Tapi kemudian kita bisa, tentu saja, karena ini adalah daftar publik di sini, kita bisa menambahkan item ke dalamnya, yang kita lakukan.
‫Kami menambahkan item yang dapat dihancurkan ke dalamnya.
‫Dan mengapa kita bisa menambahkan kursi ke tempat yang bisa dihancurkan di sekitar kita?
‫Nah, karena kursi mengimplementasikan antarmuka ini.
‫Bahwa kami menyebut saya dapat dihancurkan ini berarti bahwa sebuah kursi sekarang akan diterima sebagai objek yang dapat dihancurkan Tipe II, yang
‫berarti kami sekarang dapat menambahkannya sebagai dapat dihancurkan di sekitar kami.
‫Jadi sekarang kita bisa maju dan menghancurkan mobil.
‫Jadi, sebut saja metode penghancuran untuk mobil kita yang rusak agar ledakan dapat terjadi, suara ledakan dapat
‫dimulai dan semua hal bagus lainnya.
‫Jadi mari kita jalankan ini.
‫Dan tentu saja, ini akan lebih merupakan game petualangan dan bukan game di mana Anda melihat grafik 3D yang sebenarnya
‫atau apa pun.
‫Jadi kami memainkan suara kehancuran, suara ledakan mobil.
‫Kami menciptakan api.
‫Kursi cokelat itu hancur.
‫Kami memainkan suara kehancuran kursi, suara kehancuran dan B3.
‫Kemudian kami memutar bagian kursi untuk kursi cokelat kami.
‫Kemudian kursi merah dihancurkan.
‫Kami memainkan suara kehancuran kursi, kehancuran, suara dan kemarahan dan kemudian merespon bagian kursi
‫untuk kursi merah kami.
‫Jadi Anda lihat, itu cukup banyak.
‫Jadi begitulah cara Anda dapat membuat antarmuka Anda sendiri dan bagaimana Anda dapat menggunakannya.
‫Dan saya harap Anda sekarang memahami apa yang dapat dilakukan antarmuka untuk Anda dan keuntungan antarmuka.
‫Jadi simpul penting di sini oleh antarmuka digunakan untuk komunikasi antara dua kelas serupa atau tidak serupa
‫yang tidak peduli tentang jenis kelas yang mengimplementasikan antarmuka, seperti bagaimana mobil kami berkomunikasi dengan kursi untuk memanggil
‫metode penghancuran, semua karena mereka hanya mengimplementasikan antarmuka yang sama seperti yang saya
‫nyatakan sebelumnya.
‫Jadi, meskipun antarmuka mungkin tampak sulit untuk dipahami, pada pandangan pertama mereka memberi kami keuntungan besar.
‫Fasilitas itu disebut keterbacaan.
‫Jadi antarmuka merupakan deklarasi tentang niat, sehingga mendefinisikan kemampuan kelas Anda.
‫Jadi apa yang kelas Anda mampu lakukan?
‫Jika Anda menerapkan I sortable, misalnya, Anda dengan jelas menyatakan bahwa objek kelas Anda
‫dapat diurutkan, lalu kode semantik.
‫Dengan menyediakan antarmuka dan mengimplementasikannya, Anda secara aktif memisahkan konsep dan antarmuka mendefinisikan model perilaku,
‫definisi tentang apa yang dapat dilakukan objek.
‫Dan memisahkan konsep-konsep itu membuat semantik kode Anda jauh lebih jelas.
‫Kemudian Anda memiliki kode.
‫Antarmuka rawatan membantu mengurangi kopling dan memungkinkan Anda untuk dengan mudah menukar implementasi untuk konsep
‫yang sama tanpa mempengaruhi kode yang mendasarinya.
‫Dan kemudian kami memiliki pola desain.
‫Ini adalah gambaran yang lebih besar dari penggunaan kontrak, abstraksi, dan antarmuka yang sangat penting untuk pemrograman berorientasi
‫objek.
‫Jadi pemahaman manusia dan arsitektur sistem yang kompleks.
‫Jadi pada dasarnya hanya untuk memahaminya lebih baik sebagai manusia dan kemudian pewarisan berganda.
‫Jadi interface bisa menjadi gerbang kita untuk menggunakan multiple inheritance di C sharp.
‫Jadi misalkan Anda menulis perpustakaan dan ingin itu dapat dimodifikasi oleh pengguna.
‫Anda menulis antarmuka dan itu adalah implementasi kelas.
‫Pengembang lain yang akan menggunakan perpustakaan Anda masih dapat menulis kelas implementasi mereka sendiri, yang
‫mungkin menggunakan teknologi atau algoritme berbeda yang mencapai hasil yang sama.
‫Ini juga mengapa kami bertemu begitu banyak antarmuka di perpustakaan.
‫Kami menggunakan, tetapi jarang merasa perlu untuk menulis antarmuka kami sendiri karena kami tidak menulis perpustakaan sendiri.
‫Pada catatan terakhir, yang penting adalah memahami bagaimana antarmuka diimplementasikan pada titik ini.
‫Tentu saja, saat kami mempelajari berbagai teknologi seperti WP dan AP dot net dan kelas master
‫C, kami akan mulai menggunakan lebih banyak antarmuka, yang akan membantu Anda memahaminya dengan lebih baik di masa mendatang.
‫Baiklah.
‫Jadi terima kasih banyak telah menonton video ini.
‫Sampai jumpa di yang berikutnya.