Sebelum kita memahami perbedaan antara Kelas dan Struktur, kita harus mengetahui beberapa konsep dasar yang terkait dengannya. Tanpa pemahaman konsep, sulit untuk memahami perbedaan antara keduanya.
Ini adalah dua konsep penting yang terkait dengan Pemrograman Berorientasi Objek, dan mereka membentuk dasar untuk membingkai fungsi dan meneruskan data ke fungsi lainnya. Untuk pemahaman yang lebih baik, kita bisa menghubungkannya dengan contoh kehidupan nyata. Kelas A dapat dianggap sebagai toko, dan Obyek dapat berupa individu, toko tertentu seperti bahan makanan, alat tulis, buah, dll. Semua objek berbagi properti umum dari kelas utama - toko -, dan pada gilirannya, objek mungkin memiliki sifat eksklusif mereka sendiri seperti desain tertentu, pencahayaan, dll. Melalui objek, kita dapat benar-benar menggunakan kelas; mereka membentuk instance dari sebuah kelas.
Sintaks Kelas
Toko Kelas
hal-hal string publik;
desain string publik;
Sintaks suatu Obyek
Toko kelontong = Toko baru ();
Toko Alat Tulis = Toko baru ();
Struct hanya menyertakan data, dan oleh karena itu membantu dalam membingkai persyaratan data individual melalui objek Struct. Tidak seperti kelas, ia tidak memiliki fungsi. Berikut ini sintaksnya:
struct grocery_entrance
char entrance_name [50];
int entrance_size;
grocery_entrance;
Semua toko dapat menggunakan 'pintu masuk' Struct dengan nama dan ukuran tersendiri.
Ini mirip dengan bagaimana seorang anak lelaki mewarisi harta ayahnya dan, pada gilirannya, si anak juga dapat menambahkan beberapa harta miliknya sendiri. Kelas dapat berupa kelas dasar atau kelas turunan, di mana yang pertama dapat diambil sebagai basis untuk membentuk yang terakhir. Kelas turunan menambahkan beberapa properti lain untuk dirinya sendiri selain dari apa yang didapatnya dari kelas dasar. Ketika kita mempertimbangkan contoh di atas, toko kelontong masih dapat diturunkan ke toko kelontong tertentu, seperti toko kelontong XYZ.
Sekarang kita sudah akrab dengan konsep-konsep dasar, kita bisa masuk ke perbedaan yang sebenarnya antara Kelas dan Struktur.
Demo obj = Demo baru ();
Ini berarti bahwa kita harus menggunakan kata kunci 'baru' sambil membuat objek kelas. Ini tidak diperlukan saat membuat objek Structs. Lihatlah sintaks mereka:
Demo keberatan;
Ini berfungsi dengan baik bahkan tanpa kata kunci 'baru'.
Karena Kelas lebih fleksibel dalam memberikan data dan fungsi bersama-sama, kita bisa menggunakannya ketika objek yang digunakan kompleks dan besar. Dalam contoh kami, Mal dapat menggunakan kelas 'toko' untuk mengekspresikan sistem dengan cara yang lebih baik. Structs, bagaimanapun, terbatas pada objek yang lebih kecil, karena mereka relatif kurang efektif daripada Kelas. Karena itu, jika Anda merancang toko sendiri, Structs adalah pilihan yang lebih baik.
Anda mungkin pernah mendengar istilah 'boxing' dan 'unboxing' untuk mengkonversi Struct ke Class, dan sebaliknya. Meskipun ini adalah proses yang efektif untuk membantu kami dalam pertobatan, mereka harus ditangani dengan hati-hati. Karena ini secara langsung mempengaruhi lokasi memori, ada dampak besar pada kinerja sistem kami. Selain itu, ini mempengaruhi proses pengumpulan sampah dan menghasilkan inefisiensi sistem secara keseluruhan. Karena itu, gunakan konversi ini hanya bila diperlukan.
Mari kita lihat perbedaan yang disebutkan di atas dalam bentuk tabel.
S.Tidak | Konsep | Perbedaan | |
Kelas | Struct | ||
1 | Penggunaan kembali | Dapat digunakan kembali sepenuhnya | Tidak dapat digunakan kembali |
2 | Visibilitas | Semua fungsi Kelas terlihat oleh objeknya | Data dari suatu Objek Struct tidak terlihat oleh objek-objek lain dari Struct yang sama |
3 | Lulus dengan Referensi & lewati Nilai | Menggunakan Referensi Lewat | Menggunakan Pass by Value |
4 | Warisan | Fungsi suatu kelas dapat diwarisi oleh subkelasnya; memungkinkan warisan | Tidak pernah mengizinkan warisan |
5 | Visibilitas Default | Semua anggota Kelas bersifat pribadi secara default | Semua anggota Struct bersifat publik secara default |
6 | Ukuran Saat Kosong | Ukuran Kelas kosong adalah 1 Byte | Ukuran Struct kosong adalah 0 Bytes |
7 | Pengumpulan Sampah | Karena menggunakan pass by reference, pengumpulan sampah dimungkinkan | Karena menggunakan nilai lewat, pengumpulan sampah tidak dimungkinkan |
8 | Manajemen memori | Kemudahan proses pengumpulan sampah membantu dalam manajemen memori yang efektif | Kurangnya pengumpulan sampah menghasilkan manajemen memori yang buruk |
9 | Konstruktor | Mengizinkan konstruktor dari semua jenis, seperti dengan atau tanpa parameter | Hanya membolehkan konstruktor berparameter |
10 | Destructors | Bisa menggunakannya | Tidak bisa menggunakannya |
11 | Inisialisasi Variabel Anggota | Mengizinkan inisialisasi langsung variabel anggota | Tidak mengizinkan inisialisasi kata langsung dari variabel anggota |
12 | Penciptaan Obyek | Ini adalah suatu keharusan untuk menggunakan kata kunci 'baru' selama pembuatan objek | Ini opsional untuk menggunakan kata kunci 'baru' selama pembuatan objek |
13 | Kapan Harus Digunakan? | Lebih baik untuk objek yang lebih besar dan kompleks di mana warisan diperlukan | Lebih baik untuk objek yang lebih kecil dan lebih sederhana di mana warisan kurang penting. |
Kami hampir membahas semua perbedaan antara Kelas dan Struct, dan jika Anda merasa ada sesuatu yang hilang, beri tahu kami. Mari belajar bersama dan memanfaatkan pengetahuan itu sebaik-baiknya!