Kelas Abstrak vs Kelas Beton
Sebagian besar bahasa pemrograman berorientasi objek modern yang populer seperti Java dan C # berbasis kelas. Mereka mencapai konsep berorientasi objek seperti enkapsulasi, pewarisan dan polimorfisme melalui penggunaan kelas. Kelas adalah representasi abstrak dari objek dunia nyata. Kelas dapat berupa konkret atau abstrak tergantung pada tingkat implementasi fungsionalitas metode mereka. Kelas konkret sepenuhnya mengimplementasikan semua metodenya. Kelas abstrak dapat dianggap sebagai versi terbatas dari kelas reguler (konkret), di mana ia mungkin berisi metode yang diimplementasikan sebagian. Biasanya, kelas konkret disebut sebagai (hanya) kelas.
Apa itu Kelas Beton?
Kelas default adalah kelas konkret. Kata kunci kelas digunakan untuk mendefinisikan kelas (mis. Di Jawa). Dan biasanya mereka hanya disebut sebagai kelas (tanpa kata sifat beton). Kelas beton menggambarkan representasi konseptual dari objek dunia nyata. Kelas memiliki properti yang disebut atribut. Atribut diimplementasikan sebagai variabel global dan instance. Metode dalam kelas mewakili atau mendefinisikan perilaku kelas ini. Metode dan atribut kelas disebut anggota kelas. Biasanya, enkapsulasi dicapai dengan membuat atribut menjadi pribadi, sambil menciptakan metode publik yang dapat digunakan untuk mengakses atribut tersebut. Objek adalah turunan dari kelas. Warisan memungkinkan pengguna untuk memperluas kelas (disebut sub kelas) dari kelas lain (disebut kelas super). Polimorfisme memungkinkan pemrogram untuk mengganti objek suatu kelas sebagai pengganti objek kelas supernya. Biasanya, kata benda yang ditemukan dalam definisi masalah langsung menjadi kelas dalam program. Dan demikian pula, kata kerja menjadi metode. Publik, pribadi, dan terlindungi adalah pengubah akses tipikal yang digunakan untuk kelas.
Apa itu Kelas Abstrak?
Kelas abstrak dideklarasikan menggunakan kata kunci Abstrak (mis. Di Jawa,). Biasanya, kelas Abstrak, juga dikenal sebagai Kelas Dasar Abstrak (ABC), tidak dapat dipakai (contoh dari kelas itu tidak dapat dibuat). Jadi, kelas abstrak hanya bermakna untuk dimiliki jika bahasa pemrograman mendukung pewarisan (kemampuan untuk membuat subclass dari perluasan kelas). Kelas abstrak biasanya mewakili konsep atau entitas abstrak dengan implementasi parsial atau tanpa implementasi. Oleh karena itu, kelas abstrak bertindak sebagai kelas induk dari mana kelas anak diturunkan sehingga kelas anak akan berbagi fitur yang tidak lengkap dari kelas induk dan fungsionalitas dapat ditambahkan untuk melengkapi mereka.
Kelas abstrak dapat berisi metode abstrak. Subkelas yang memperluas kelas abstrak dapat mengimplementasikan metode-metode abstrak (yang diwarisi) ini. Jika kelas anak mengimplementasikan semua metode abstrak tersebut, itu menjadi kelas yang konkret. Tetapi jika tidak, kelas anak juga menjadi kelas abstrak. Apa artinya semua ini adalah bahwa, ketika programmer mencalonkan sebuah kelas sebagai Abstrak, ia mengatakan bahwa kelas tersebut tidak lengkap dan akan memiliki elemen yang perlu diselesaikan oleh subclass yang mewarisi. Ini adalah cara yang bagus untuk membuat kontrak antara dua programmer, yang menyederhanakan tugas dalam pengembangan perangkat lunak. Programmer, yang menulis kode untuk diwarisi, harus mengikuti definisi metode dengan tepat (tapi tentu saja dapat memiliki implementasinya sendiri).
Apa perbedaan antara Kelas Abstrak dan Kelas Beton?
Kelas abstrak biasanya memiliki implementasi parsial atau tidak sama sekali. Di sisi lain, kelas konkret selalu memiliki implementasi penuh perilakunya. Tidak seperti kelas konkret, kelas abstrak tidak dapat dipakai. Oleh karena itu kelas abstrak harus diperluas untuk menjadikannya bermanfaat. Kelas abstrak mungkin berisi metode abstrak, tetapi kelas beton tidak bisa. Ketika kelas abstrak diperluas, semua metode (baik abstrak maupun konkret) diwariskan. Kelas yang diwariskan dapat menerapkan salah satu atau semua metode. Jika semua metode abstrak tidak diterapkan, maka kelas itu juga menjadi kelas abstrak.