Sınıf ve Yapı arasındaki farkı anlamadan önce, onlarla ilişkili birkaç temel kavramı bilmeliyiz. Kavramlar anlaşılmadan, ikisi arasındaki farkları anlamak zordur.
Bunlar Nesneye Yönelik Programlama ile ilgili iki önemli kavramdır ve diğer işlevlere geçen işlevleri ve verileri çerçevelemek için temel oluştururlar. Daha iyi bir anlayış için, bunu gerçek hayattan bir örnekle ilişkilendirebiliriz. Bir Sınıf bir mağaza olarak düşünülebilir ve bir Nesne, bakkal, kırtasiye, meyve vb. Gibi bireysel, belirli mağazalardan herhangi biri olabilir. Tüm nesneler ana sınıfın - mağaza - ve ortak özelliklerini paylaşır ve nesnelerin belirli bir tasarım, ışıklandırma, vs. gibi kendine özgü özellikleri olabilir. Nesneler aracılığıyla sınıfı gerçekten kullanabiliriz; bir sınıfın örneklerini oluştururlar.
Sınıfın Sözdizimi
Sınıf Mağazası
halka açık şeyler;
halka açık tel tasarımı;
Bir Nesnenin Sözdizimi
Mağaza bakkal = yeni Mağaza ();
Mağaza Kırtasiye = new Store ();
Bir Yapı yalnızca verileri içerir ve bu nedenle tek tek veri gereksinimlerinin Struct nesneleri aracılığıyla çerçevelenmesinde yardımcı olur. Bir sınıfın aksine, işlevlerden yoksundur. İşte sözdizimi:
struct grocery_entrance
karakter giriş_adı [50];
int giriş_boyutu;
bakkaliye-giriş;
Tüm mağazalar Yapı 'girişini' bireysel isimler ve boyutlarla kullanabilir.
Bir oğlun babasının mallarını nasıl miras aldığına benzer ve oğul da kendine ait başka eşyaları da ekleyebilir. Sınıf, bir baz sınıfı veya türetilmiş bir sınıf olabilir, burada birincisi, ikincisini oluşturmak için taban olarak alınabilir. Türetilmiş sınıf, taban sınıftan aldığından ayrı olarak, kendisi için birkaç özellik daha ekler. Yukarıdaki örneği göz önüne aldığımızda, bakkal hala XYZ bakkal gibi belirli bir bakkaldan türetilebilir.
Artık temel kavramları bildiğimize göre, Sınıf ve Yapı arasındaki asıl farka gidebiliriz..
Demo obj = yeni Demo ();
Bu, bir sınıfın nesnelerini oluştururken 'yeni' anahtar kelimesini kullanmamız gerektiği anlamına gelir. Yapıların nesneleri oluşturulurken bu gerekli değildir. Sadece onların söz dizimine bir göz atın:
Demo obj;
'Yeni' anahtar kelimesi olmadan bile mükemmel çalışır.
Sınıflar veri ve işlevleri bir arada ele alma konusunda daha esnek olduklarından, kullanılan nesneler karmaşık ve büyük olduğunda buna gidebiliriz. Örneğimizde, bir AVM sistemi daha iyi ifade etmek için 'mağaza' sınıfını kullanabilir. Bununla birlikte, yapılar Sınıflardan nispeten daha az etkili oldukları için daha küçük nesnelerle sınırlıdır. Bu nedenle, kendi mağazanızı tasarlarsanız, Yapılar daha iyi bir seçimdir.
Bir Yapıyı Sınıfa dönüştürmek için 'boks' ve 'kutudan çıkarma' terimlerini duymuş olabilirsiniz; Bunlar, dönüşümde bize yardımcı olacak etkili süreçler olmasına rağmen, dikkatle ele alınmalıdır. Bu, bellek konumlarını doğrudan etkilediğinden, sistemimizin performansı üzerinde büyük bir etkisi vardır. Ayrıca, çöp toplama süreçlerini etkiler ve genel sistem verimsizliği ile sonuçlanır. Bu nedenle, bu dönüşümleri yalnızca gerektiğinde kullanın.
Yukarıda belirtilen farklılıklara tablo biçiminde bakalım.
S.No | Kavramlar | farklılıklar | |
Sınıf | struct | ||
1 | Tekrar Kullanılabilirlik | Tamamen yeniden kullanılabilir | Yeniden kullanılamaz |
2 | görünürlük | Bir Sınıfın tüm işlevleri nesneleri tarafından görülebilir | Bir Yapının Nesnesinin verileri, aynı Yapının diğer nesneleri tarafından görülemez |
3 | Referans ile Geç ve Değerle Geç | Referans ile Geçiş Kullanır | Değere Göre Geçiş Kullanır |
4 | miras | Bir sınıfın işlevleri alt sınıfları tarafından miras alınabilir; kalıtım sağlar | Asla kalıtıma izin vermez |
5 | Varsayılan Görünürlük | Bir Sınıfın tüm üyeleri varsayılan olarak gizlidir | Bir Yapının tüm üyeleri varsayılan olarak herkese açıktır |
6 | Boş Olduğunda Boyut | Boş bir sınıfın boyutu 1 bayttır | Boş Yapının boyutu 0 Bayttır |
7 | Çöp toplama | Referans olarak pass kullandığından, çöp toplama mümkündür | Değere göre geçiş kullandığından, çöp toplama mümkün değildir |
8 | Hafıza yönetimi | Çöp toplama işleminin kolaylığı, etkin bellek yönetimine yardımcı olur | Çöp toplama eksikliği, yetersiz bellek yönetimine neden olur |
9 | Kurucular | Parametreli veya parametresiz gibi her türden kurucuya izin verir | Yalnızca parametrelenmiş kuruculara izin verir |
10 | Yıkıcılar | Kullanabilirsiniz | Kullanılamaz |
11 | Üye Değişkenleri Başlatma | Üye değişkenlerin doğrudan başlatılmasına izin verir | Üye değişkenlerinin doğrudan sözcük başlatılmasına izin vermez |
12 | Nesne Oluşturma | Nesne oluşturma sırasında 'yeni' anahtar kelimesini kullanmak şarttır | Nesne oluşturma sırasında 'yeni' anahtar kelimesini kullanmak isteğe bağlıdır |
13 | Ne Zaman Kullanılır? | Kalıtımın gerekli olduğu daha büyük ve karmaşık nesneler için daha iyi | Kalıtımın daha az önemli olduğu daha küçük ve daha basit nesneler için daha iyi. |
Class ve Struct arasındaki neredeyse tüm farkları kapladık ve bir şeyin eksik olduğunu düşünüyorsanız, lütfen bize bildirin. Birlikte öğrenelim ve bu bilgiden en iyi şekilde yararlanalım!