Perbedaan antara Class dan Struct Perbedaan Antara

Anonim

Sebelum kita memahami perbedaan antara Kelas dan Struktur, kita harus tahu beberapa konsep dasar yang terkait dengannya. Tanpa memahami konsep, sulit untuk memahami perbedaan antara keduanya.

Apa itu Kelas dan Objek:

Inilah dua konsep penting yang terkait dengan Pemrograman Berorientasi Objek, dan mereka membentuk dasar untuk membingkai fungsi dan data yang lolos ke fungsi lainnya. Untuk pemahaman yang lebih baik, kita dapat menghubungkannya dengan contoh kehidupan nyata. Kelas bisa dianggap sebagai toko, dan Objek bisa berupa toko individu, toko khusus seperti toko kelontong, alat tulis, buah, dll. Semua benda berbagi sifat umum kelas utama - toko -, dan pada gilirannya, objek mungkin memiliki sifat eksklusif mereka sendiri seperti desain, pencahayaan, dll. Melalui objek, kita benar-benar dapat menggunakan kelas; mereka membentuk contoh kelas.

Sintaks Kelas

Kelas Store {

barang string publik;

desain string publik;

}

Sintaks dari Objek

Toko kelontong = toko baru ();

Store Stationery = toko baru ();

Apa itu Struct?

Sebuah struct hanya mencakup data, dan oleh karena itu sangat membantu dalam membingkai persyaratan data individual melalui objek Struct. Tidak seperti kelas, tidak ada fungsi. Inilah sintaksnya:

struct grocery_entrance {

char entrance_name [50];

int entrance_size;

} grocery_entrance;

Semua toko dapat menggunakan 'pintu masuk' Struct dengan nama dan ukuran individual.

Apa itu Warisan?

Hal serupa dengan bagaimana seorang anak mewarisi harta milik ayahnya dan, pada gilirannya, anak itu juga dapat menambahkan beberapa barang miliknya sendiri. Kelas dapat berupa kelas dasar atau kelas turunan, di mana yang pertama dapat dianggap sebagai dasar untuk membentuk yang terakhir. Kelas turunan menambahkan beberapa properti lainnya untuk dirinya sendiri terlepas dari apa yang didapatnya dari kelas dasar. Bila kita mempertimbangkan contoh di atas, toko kelontong masih bisa diturunkan ke toko bahan makanan tertentu, seperti toko bahan makanan XYZ.

Sekarang setelah kita mengenal konsep dasar, kita bisa masuk ke perbedaan sebenarnya antara Class dan Struct.

Bagaimana Mereka Berbeda?

  • Re-usability: Sebagai Kelas membentuk kerangka dasar, mereka dapat digunakan kembali; Struktur, bagaimanapun, adalah elemen individu dengan sifat tertentu, sehingga tidak dapat digunakan kembali. Misalnya, kelas toko kelontong dapat digunakan untuk semua jenis toko bahan makanan, tapi bahan pembungkusnya khusus untuk itu saja dan tidak ada gunanya menggunakannya kembali di kelas lain.
  • Visibilitas: Semua fungsi dalam Kelas tersedia untuk objek publik.Sebagai contoh, kita memiliki sebuah fungsi bernama 'things' di dalam class 'store'. Fungsi 'benda' dapat dilihat oleh semua Objeknya, seperti 'toko kelontong', toko alat tulis ', dan lain-lain. Visibilitas semacam itu tidak mungkin dilakukan oleh struct karena data struct terbatas pada dirinya sendiri dan tidak terlihat oleh Struct lainnya. Untuk memperbaikinya, kita bisa mengatakan bahwa data 'grocery_entrance' tidak terlihat oleh semua toko lainnya.
  • Pass by Reference & Pass by Value: Pass by Reference hanya mengirim lokasi memori dan bukan data sebenarnya ke fungsi. Ini berarti bahwa setiap kali nilai berubah, perubahan tersebut tercermin dalam fungsi yang sesuai. Pass by value, pada gilirannya, hanya mengirim nilai ke fungsi. Dalam hal ini, perubahan nilai setelah dikirim tidak akan tercermin dalam fungsi. Class menggunakan pass by reference, dan struct menggunakan nilai pass.
  • Warisan: Kelas dapat diwariskan lebih lanjut untuk membentuk sub kelas, namun Structs tidak dapat memanfaatkan warisan. Misalnya, Class Store memberikan fungsinya ke subkelas 'toko kelontong'. Tapi struct 'grocery_entrance' tidak bisa mewarisi fungsi apapun. Kita dapat mengatakan bahwa tidak ada konsep seperti sub-struct disini.
  • Visibilitas default: Semua anggota Kelas dipertahankan sebagai entitas swasta secara default, sedangkan anggota Struct disimpan sebagai entitas publik secara default.
  • Ukuran Class dan Struct yang kosong: Kelas menggunakan ukuran 1 Byte bahkan saat kosong, sedangkan Struct tidak pernah menggunakan memori saat kosong. Ini berarti kita bisa mengatakan bahwa ukuran struct kosong sama dengan 0 Bytes.
  • Pengumpulan sampah: Pengumpulan sampah dimungkinkan dengan Kelas, karena mereka menggunakan referensi lewat. Oleh karena itu, lebih mudah melakukan pembersihan di satu lokasi dimana data disimpan. Di sisi lain, pengumpulan sampah tidak mungkin dilakukan dengan Struct, karena menggunakan nilai pass dan data tersebar di lokasi yang berbeda.
  • Manajemen memori: Karena Kelas memungkinkan pengumpulan sampah, manajemen memori juga efektif; Namun, itu tidak efektif dengan Structs.
  • Pembuat: Konstruktor umumnya menginisialisasi kelas dengan nilai tertentu. Kita bisa melihatnya seperti sesuatu yang telah diinisialisasi dengan nilai. Jika kelas baru harus dibuat, konstruktor dipanggil untuk mengalokasikan memori untuk instance itu. Kita bahkan bisa melewati nilai sebagai argumen saat memanggil konstruktor. Mari kita sampai pada pembahasan kita sekarang. Kelas memungkinkan konstruktor dari semua jenis, seperti dengan atau tanpa argumen, sedangkan struct hanya mengizinkan konstruktor dengan argumen, i. e. konstruktor parameterized
  • Destructor: Penghancur disebut kapan pun kita perlu menghapus sebuah instance dari sebuah kelas. Penghancur, pada gilirannya, menghapus instance tersebut dan membebaskan memori. Kelas bisa menggunakan destruktor, sedangkan Struct tidak bisa.
  • Variabel Anggota Inisialisasi: Di Kelas, kita dapat menginisialisasi variabel anggota secara langsung; Inisialisasi seperti itu tidak mungkin dilakukan oleh Structs.
  • Penciptaan Objek: Sintaks umum untuk pembuatan objek di kelas adalah:

Demo obj = new Demo ();

Ini berarti kita harus menggunakan kata kunci 'baru' sambil membuat objek kelas.Ini tidak diperlukan saat membuat objek dari Structs. Lihat saja sintaksnya:

Demo obj;

Ia bekerja sempurna meski tanpa kata kunci 'baru'.

Kapan Menggunakan Kelas dan Kapan Menggunakan Struct?

Karena Kelas lebih fleksibel dalam menyerahkan data dan fungsi bersama, kita bisa mencapainya saat objek yang digunakan rumit dan besar. Dalam contoh kita, Mall bisa menggunakan 'toko' kelas untuk mengekspresikan sistem dengan lebih baik. Struktur, bagaimanapun, dibatasi pada benda-benda yang lebih kecil, karena mereka relatif kurang efektif daripada Kelas. Karena itu, jika Anda merancang toko sendiri, struct adalah pilihan yang lebih baik.

Bagaimana Mengkonversi sebuah Str untuk Kelas dan Wakil Versa?

Anda mungkin pernah mendengar istilah 'tinju' dan 'unboxing' untuk mengubah Struct menjadi Kelas, dan sebaliknya. Meskipun ini adalah proses yang efektif untuk membantu kita dalam pertobatan, namun harus ditangani dengan hati-hati. Karena ini secara langsung mempengaruhi lokasi memori, ada dampak yang sangat besar pada kinerja sistem kami. Selain itu, hal itu 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 Re-usability Benar-benar dapat digunakan kembali Tidak dapat digunakan lagi
2 Visibilitas < Semua fungsi Kelas dapat dilihat oleh objeknya Data dari Object of a Struct tidak terlihat oleh objek lain dari Struct yang sama 3
Pass by Reference & pass by Value > Penggunaan Pass by Reference Menggunakan Pass by Value 4 Warisan
Fungsi kelas dapat diwarisi oleh subclassnya; memungkinkan pewarisan Jangan pernah mengizinkan pewarisan 5 Visibilitas Default
Semua anggota Kelas bersifat pribadi secara default Semua anggota sebuah Strem adalah publik secara default 6 Ukuran Saat Kosong
Ukuran Kelas kosong adalah 1 Byte Ukuran Struktur kosong adalah 0 Bytes 7 Koleksi Sampah
Karena menggunakan referensi, diperlukan pengumpulan sampah. Karena menggunakan nilai lulus, pengumpulan sampah tidak mungkin 8 Manajemen Memori
Kemudahan dalam proses pengumpulan sampah membantu pengelolaan memori yang efektif Kurangnya hasil pengumpulan sampah di masyarakat miskin Manajemen memori 9 Konstruktor
Mengizinkan konstruktor dari semua jenis, seperti dengan atau tanpa parameter Hanya mengizinkan konstruktor parameterized 10 Destructors
Dapat menggunakannya Tidak dapat gunakan 11 Inisialisasi Anggota Variabel
Mengizinkan inisialisasi langsung variabel anggota Tidak mengizinkan inisialisasi kata langsung dari variabel anggota 12 < Penciptaan Objek Merupakan keharusan untuk menggunakan kata kunci 'baru' selama pembuatan objek
Adalah opsional untuk menggunakan kata kunci 'baru' selama pembuatan objek 13 Kapan Harus Gunakan? Lebih baik untuk benda yang lebih besar dan kompleks dimana pewarisan diperlukan
Lebih baik untuk benda yang lebih kecil dan sederhana dimana warisan tidak begitu penting. Kami hampir menutupi semua perbedaan antara Kelas dan Struktur, dan jika Anda merasa ada sesuatu yang hilang, beri tahu kami. Mari belajar bersama dan manfaatkan pengetahuan itu sebaik-baiknya!