Sınıf ve Yapı Arasındaki Fark

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.

Sınıf ve Nesne Nedir:

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

Yapı Nedir?

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.

Kalıtım Nedir?

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

Nasıl Farklılaşırlar?

  • Tekrar Kullanılabilirlik: Sınıflar temel çerçeveyi oluşturdukları için yeniden kullanılabilirler; Bununla birlikte, yapılar belirli özelliklere sahip ayrı elemanlardır, bu yüzden tekrar kullanılamazlar. Örneğin, bakkal sınıfı herhangi bir bakkal türü için kullanılabilir, ancak Struct grocery_entrance tek başına buna özgüdür ve diğer sınıflarda yeniden kullanmanın bir anlamı yoktur..
  • görüş mesafesi: Bir Sınıftaki tüm işlevler, Nesneleri tarafından herkese açıktır. Örneğin, Sınıf 'mağaza' altında 'şeyler' adlı bir fonksiyonumuz var. 'Şeyler' fonksiyonu, 'bakkal,' kırtasiye mağazası 'vb. Gibi tüm Nesneleri tarafından görülebilir. Her şeyi açıklığa kavuşturmak için, 'bakkaliye-teşkilatı' verilerinin diğer tüm mağazalar tarafından kamuya açık olmadığını söyleyebiliriz.
  • Referans ile Geçiş ve Değere Göre Geçiş: Referansla Geç, işlevlere gerçek verileri değil, yalnızca bellek konumunu gönderir. Bu, değer her değiştiğinde, değişikliğin karşılık gelen işlevlere yansıtıldığı anlamına gelir. Değere göre geç, sırayla, değeri işleve gönderiyor. Bu durumda, gönderildikten sonra değerdeki bir değişiklik işleve yansıtılmaz. Sınıf referansla pass kullanır ve Struct pass değerini kullanır.
  • Kalıtım: Sınıflar ayrıca alt sınıflar oluşturmak için miras alınabilir, ancak Yapılar mirastan yararlanamaz. Örneğin, Sınıf Mağazası işlevlerini 'bakkal' alt sınıfına verir. Ancak 'grocery_entrance' Yapısı herhangi bir işlevi devralamaz. Burada alt yapı gibi bir kavram olmadığını söyleyebiliriz.
  • Varsayılan görünürlük: Bir Sınıfın tüm üyeleri varsayılan olarak özel kuruluşlar, bir Yapının üyeleri varsayılan olarak kamu kurumları olarak tutulur.
  • Boş bir Sınıf ve Yapının boyutu: Class boşken bile 1 Byte'lık bir boyut kullanırken, Struct boşken hiçbir zaman bellek kullanmaz. Bu, boş bir yapının boyutunun 0 Bayt'a eşit olduğunu söyleyebiliriz.
  • Çöp toplama: Çöp toplama, referansla pass kullandıkları için Sınıflar ile mümkündür. Bu nedenle, verilerin depolandığı bir yerde temizleme yapmak daha kolaydır. Öte yandan, yapıya göre değer toplama özelliği kullandığı ve veriler farklı konumlara dağıldığı için çöp toplama mümkün değildir..
  • Hafıza yönetimi: Sınıf çöp toplamalarına izin verdiği için bellek yönetimi de etkilidir; ancak Yapılar ile o kadar etkili değildir.
  • yapıcı: Bir kurucu genellikle sınıfı belirli değerlerle başlatır. Buna değerlerle başlatılan bir şey gibi bakabiliriz. Yeni bir sınıf oluşturulması gerekiyorsa, o örnek için bellek ayırmak üzere yapıcı çağrılır. Bir kurucu çağırırken değerleri argüman olarak da aktarabiliriz. Şimdi gerçek tartışmamıza gelelim. Sınıflar, bağımsız değişkenli veya bağımsız değişken gibi her tür kurucuya izin verirken, yapılar yalnızca bağımsız değişkenli kuruculara, yani parametrelenmiş kuruculara izin verir..
  • Yokedici: Bir sınıf örneğini silmemiz gerektiğinde bir yıkıcı çağrılır. Yıkıcı, sırayla, bu örneği siler ve belleği boşaltır. Bir Sınıf yıkıcı kullanabilirken, Yapılar.
  • Üye Değişkenleri Başlatma: Sınıflarda üye değişkenleri doğrudan başlatabiliriz; Yapılar ile böyle bir başlatma mümkün değildir.
  • Nesne Oluşturma: Sınıflarda nesne oluşturma için genel sözdizimi şöyledir:

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.

Ne Zaman Sınıf ve Ne Zaman Yapı Kullanılı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ürme ve Tersi?

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!