Perbedaan antara Kelas dan Struktur

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.

Apa itu Kelas dan Objek:

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 ();

Apa itu Struct?

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.

Apa itu Warisan?

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.

Bagaimana Mereka Berbeda?

  • Penggunaan kembali: Sebagai Kelas membentuk kerangka dasar, mereka dapat digunakan kembali; Struct, bagaimanapun, adalah elemen individual dengan properti spesifik, sehingga mereka tidak dapat digunakan kembali. Misalnya, Kelas toko kelontong dapat digunakan untuk semua jenis toko kelontong, tetapi Struct grocery_entrance khusus untuk itu saja dan tidak ada gunanya menggunakannya kembali di kelas lain.
  • Visibilitas: Semua fungsi dalam Kelas tersedia untuk umum untuk Obyeknya. Sebagai contoh, kita memiliki fungsi bernama 'barang' di bawah 'toko' Kelas. Fungsi 'benda' dapat dilihat oleh semua Objeknya, seperti 'toko kelontong,' toko alat tulis ', dll. Visibilitas seperti itu tidak dimungkinkan dengan Structs karena data struct dibatasi untuk dirinya sendiri dan tidak terlihat oleh Structs lain. Untuk memperjelas, kita dapat mengatakan bahwa data 'grocery_entrance' tidak dapat dilihat secara publik oleh semua toko lainnya.
  • Lewati dengan Referensi & Lewati dengan Nilai: Pass by Reference hanya mengirim lokasi memori dan bukan data aktual ke fungsi. Ini berarti bahwa setiap kali nilai berubah, perubahan tersebut tercermin dalam fungsi terkait. Pass by value, pada gilirannya, hanya mengirimkan nilai ke fungsi. Dalam hal ini, perubahan nilai setelah dikirim tidak akan tercermin dalam fungsi. Kelas menggunakan pass by reference, dan Struct menggunakan nilai pass.
  • Warisan: Kelas dapat diwarisi lebih lanjut untuk membentuk sub-kelas, tetapi Structs tidak dapat memanfaatkan warisan. Misalnya, Class Store memberikan fungsinya ke 'toko bahan makanan' di bawah kelas. Tetapi Struct 'grocery_entrance' tidak dapat mewarisi fungsi apa pun. Kita dapat mengatakan bahwa tidak ada konsep seperti sub-struct di sini.
  • Visibilitas default: Semua anggota Kelas disimpan sebagai entitas pribadi secara default, sedangkan anggota Struct disimpan sebagai entitas publik secara default.
  • Ukuran Kelas dan Struktur kosong: Kelas menggunakan ukuran 1 Byte bahkan ketika itu kosong, sedangkan Struct tidak pernah menggunakan memori apa pun ketika itu kosong. Ini berarti kita dapat mengatakan bahwa ukuran struct kosong sama dengan 0 Bytes.
  • Pengumpulan sampah: Pengumpulan sampah dimungkinkan dengan Kelas, karena mereka menggunakan referensi lewat. Karena itu, lebih mudah melakukan pembersihan di satu lokasi tempat data disimpan. Di sisi lain, pengumpulan sampah tidak dimungkinkan dengan Struct, karena menggunakan nilai by pass dan data tersebar di lokasi yang berbeda.
  • Manajemen memori: Karena Class memungkinkan pengumpulan sampah, manajemen memori juga efektif; Namun, itu tidak efektif dengan Structs.
  • Konstruktor: Konstruktor umumnya menginisialisasi kelas dengan nilai-nilai tertentu. Kita dapat melihatnya seperti sesuatu yang telah diinisialisasi dengan nilai-nilai. Jika kelas baru harus dibuat, konstruktor dipanggil untuk mengalokasikan memori untuk instance itu. Kami bahkan dapat meneruskan nilai sebagai argumen saat memanggil konstruktor. Mari kita datang ke diskusi aktual kita sekarang. Kelas memungkinkan konstruktor dari semua jenis, seperti dengan atau tanpa argumen, sedangkan struct hanya mengizinkan konstruktor dengan argumen, mis. Konstruktor parameterized.
  • Destructor: Destructor dipanggil setiap kali kita perlu menghapus instance kelas. Destructor, pada gilirannya, menghapus instance itu dan membebaskan memori. Kelas A dapat menggunakan destruktor, sedangkan Struct tidak bisa.
  • Inisialisasi Variabel Anggota: Di Kelas, kita dapat menginisialisasi variabel anggota secara langsung; inisialisasi seperti itu tidak dimungkinkan dengan Structs.
  • Pembuatan objek: Sintaks umum untuk pembuatan objek di kelas adalah:

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'.

Kapan Menggunakan Kelas dan Kapan Menggunakan Struct?

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.

Cara Mengkonversi Struktur ke Kelas dan Sebaliknya?

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!