c concepts constructor
Bu Öğretici C # Programlamadaki Oluşturucu, Yıkıcılar, Statik Sınıf, Yapılar ve Numaralandırmalar gibi Bazı Önemli Kavramları Açıklar:
Nesneler ve Sınıflar hakkındaki önceki eğitimlerimizden birinde, bir sınıfın ve nesnenin ne olduğunu öğrendik.
Bir nesne, gerçek dünyadaki bir nesneye benzer ve bir sınıf, benzer türdeki nesnelerin mantıksal bir koleksiyonudur. C # 'da bulunan en temel türlerden biridir. Bu eğitimde, diğer ilgili C # kavramlarını derinlemesine inceleyeceğiz.
=> Eksiksiz C # Eğitim Serisini Buradan Keşfedin
Bu eğitimde, sınıfların bazı önemli yönlerini ve bunları programlarımızda nasıl kullanabileceğimizi öğreneceğiz. Önceki eğitimlerimizde öğrendiğimiz kavramlara dayalı olarak basit C # programları oluşturmaya çalışacağız.
Ne öğreneceksin:
- C # 'da Oluşturucu Nedir?
- Yıkıcılar C #
- Bir Sınıftaki Statik Üyeler
- Statik Sınıf C #
- C # Yapılar
- Struct ve Sınıf Arasındaki Fark
- Struct: Tanım
- C # 'da numaralandırmalar
- C # 'da Özellikler
- Sonuç
- Önerilen Kaynaklar
C # 'da Oluşturucu Nedir?
Yapıcı, belirli bir sınıfın bir nesnesi oluşturulduğunda otomatik olarak çağrılan veya çağrılan C # programlama dilinde özel bir yöntem türüdür.
Ana işlevi, yeni oluşturulan nesnenin veri üyelerini başlatmaktır. Yapıcının en ayırt edici özelliklerinden biri de adıdır. Sınıf ile aynı isme sahiptir.
Yapıcılar temelde iki türdendir:
- Varsayılan
- Parametreli
C # Varsayılan Oluşturucu
Adından da anlaşılacağı gibi varsayılan kurucu, bir sınıfın temel yapıcısıdır. Herhangi bir argümanı yoktur ve doğrudan nesne oluşturma sırasında çağrılır.
public class Program { public Program(){ Console.WriteLine('Constructor has been invoked'); } public static void Main(string() args) { Program p = new Program(); } }
Aşağıdaki programın çıktısı:
Oluşturucu çağrıldı
Açıklama
'Program' sınıfının içinde bir kurucu 'Program' tanımladık. Şimdi ana yöntemin içindeki sınıfı başlattığımızda, yapıcı otomatik olarak çağrılır.
Bu nedenle, yapıcı içinde sakladığımız kod parçacığı çağrılacaktır. Burada, yapıcı küme parantezleri içinde 'Yapıcı çağrıldı' mesajını yazdırdık, böylece sınıfı başlattığımızda, kurucu varsayılan olarak başlatılacak ve mesaj çıktı olarak yazdırılacaktır.
Parametreli Yapıcı
Adından da anlaşılacağı gibi parametreleştirilmiş yapıcılar, parametrelere sahip kuruculardır. Bu kurucular, nesnelere farklı değerler iletmek için kullanılır.
public class Details { public Details(int a, int b){ int c = a+b; Console.WriteLine('The sum is: '+ c); } } public class Program { public static void Main(string() args) { Details d = new Details(2, 3); } }
Aşağıdaki programın çıktısı:
neden c ++ java'dan daha iyidir
Toplam: 5
Açıklama
Varsayılan kurucu ile önceki örneğimizde, aynı sınıfta ana yöntemimiz var. Bu örnekte, ana yöntemi farklı bir sınıfta görüyoruz.
İki tamsayı değerini kabul eden parametreleştirilmiş bir kurucu içeren 'Ayrıntılar' adlı bir sınıfımız var. Yapıcının içinde, tamsayıların toplamını yazdırıyoruz. Ana yöntemimizi içeren 'Program' adında başka bir sınıfımız var. Ana yöntemin içinde, 'Ayrıntılar' sınıfını başlattık.
Daha önce açıklandığı gibi, bir sınıf başlatıldığında, kurucuları otomatik olarak çağrılır. Bu nedenle, bu durumda, yapıcı yöntemimiz 'Ayrıntılar' çağrılmıştır ve ilklendirme sırasında parametreyi geçtiğimizde çıktıyı yazdırır.
Yıkıcılar C #
Yıkıcılar, kurucuların tam tersidir. Bir sınıf nesnesi kapsam dışına çıktığında çağrılan sınıfın özel bir yöntemidir. Bir kurucuya benzer şekilde, yıkıcı adı da sınıf adınınki ile tam olarak aynıdır, ancak '~' (yaklaşık işareti) önekine sahiptir.
Destructor hiçbir parametreyi kabul etmez, herhangi bir değer döndürmez. Destructor, sınıf nesnelerini yok eder, bu nedenle genellikle program çalıştırıldıktan sonra belleği serbest bırakmak için kullanılır. Yıkıcı hakkında dikkat edilmesi gereken bir diğer önemli nokta da, yıkıcıya aşırı yüklenemeyeceği veya miras alınamayacağıdır.
Yıkıcılar Örneği:
public class Program { public Program(){ Console.WriteLine('Constructor has been invoked'); } ~Program(){ Console.WriteLine('Destructor has been invoked'); } public static void Main(string() args) { Program p = new Program(); } }
Aşağıdaki programın çıktısı:
Oluşturucu çağrıldı
Destructor çağrıldı
Açıklama
Yapıcıyı öğrenmek için kullandığımız örneği kullandık. Program sınıfına (~ Program) bir yıkıcı ekledik. Sınıfın nesnesini başlattığımızda, kurucu çağrılır ve sınıfın nesnesi yaratılır. Bu, konsola 'Oluşturucu çağrıldı' ifadesini yazdırır.
Yürütme tamamlandığında ve sınıf nesnesi kapsam dışına çıktığında, program yıkıcıya doğru hareket eder. Yıkıcı daha sonra çağrılır ve bu da nesneyi yok eder. Burada, yıkıcının içinde, yıkıcı çalıştırıldıktan sonra konsola yazdırılan bir mesaj yazdırdık.
Bir Sınıftaki Statik Üyeler
Sınıfın üyeleri, static anahtar sözcüğü kullanılarak statik olarak bildirilebilir. Bir nesne statik olarak bildirildiğinde, oluşturulan nesnelerin sayısına bakılmaksızın, statik nesnenin yalnızca bir kopyası olacaktır.
Statik olmak, belirli bir sınıf için var olacak üyenin tek bir örneği olacağı anlamına gelir. Bu, sınıf içindeki statik fonksiyon veya değişkenlerin değerinin onlar için bir nesne oluşturmadan çağrılabileceği anlamına gelir.
Statik değişkenler, sabitleri bildirmek için kullanılır, çünkü değerleri, sınıfın bir örneğini oluşturmak yerine doğrudan çağırarak elde edilebilir.
Misal:
public class Details { public static void stat(){ Console.WriteLine('Static method invoked'); } } public class Program { public static void Main(string() args) { Details.stat(); } }
Aşağıdaki programın çıktısı:
Statik yöntem çağrıldı
Açıklama
Yukarıdaki örnekte, statik bir yöntem olan 'stat' içeren bir 'Ayrıntılar' sınıfı oluşturduk. Ana yöntemi içeren başka bir 'Program' sınıfımız var. Önceki konularımızda, yöntemlere erişmek için bir sınıfı nasıl başlatabileceğimizi gördük. Ancak tartıştığımız gibi, sınıfın statik üyelerine sınıf nesnesi başlatmayla erişilebilir.
Böylece, ana yöntemde, herhangi bir nesne oluşturmadan doğrudan sınıfı kullanarak yöntemi çağırdık. Programın çıktısı, statik yöntemin içine yazılan kodu çalıştırdı. Bu durumda konsola bir mesaj yazdırdık.
Statik Sınıf C #
Statik bir sınıf, C # 'daki normal bir sınıfa benzer. Statik sınıf yalnızca statik üyelere sahip olabilir ve somutlaştırılamaz. Sınıfın somutlaştırılmadığından emin olmak için statik bir sınıf kullanılır. Statik bir sınıf, bildirim sırasında anahtar kelime sınıfından önce static anahtar sözcüğü kullanılarak bildirilir.
Misal:
public static class Details { public static void multiply(int a, int b){ int c = a*b; Console.WriteLine('Multiplication result is: '+c); } } public class Program { public static void Main(string() args) { Details.multiply(2,8); } }
Aşağıdaki programın çıktısı:
Çarpma sonucu: 16
Açıklama
Yukarıdaki örnekte, statik bir sınıf 'Ayrıntılar' oluşturduk ve statik sınıfın içinde başka bir 'çarpma' statik yöntemi oluşturduk. Yöntemin içinde, yürütmek istediğimiz bazı kod parçacıkları var. Ayrıca ana yöntemle başka bir sınıf “Programımız” var.
Ana yöntemin içinde, statik sınıf içinde bulunan çarpma yöntemini çağırdık. Ana yöntemimize bakarsanız, statik sınıf için bir nesne oluşturmadığımızı veya oluşturmadığımızı göreceksiniz, bunun yerine sınıfı doğrudan ana yöntemden çağırdığımızı göreceksiniz.
Böylece, sınıf adını kullanarak ve parametreleri sağlayarak çarpma yöntemini doğrudan çağırdığımızda, kodu çalıştırır ve çıktıyı yazdırır.
C # Yapılar
C # 'daki değer türü varlığa yapı denir. Kullanıcının birkaç farklı veri türünün ilgili verilerini tek bir değişkende saklamasına yardımcı olur. Belirtildiği gibi bir yapı, alanları, yöntemleri, kurucuları, işleçleri, olayları vb. Tutan değer türü bir varlıktır. Bir yapı, 'struct' anahtar sözcüğü kullanılarak bildirilir.
Yapıların Özellikleri:
- Sabitler, Yöntemler, Özellikler, Dizin, İşleçler, Oluşturucular vb. İçerebilir.
- Herhangi bir varsayılan kurucu olamaz.
- Bir arabirim uygulayabilir ancak diğer yapılar veya sınıflarla miras alamaz.
- Yapılar, kullanım için yeni bir anahtar sözcük kullanılarak başlatılmalıdır.
Struct ve Sınıf Arasındaki Fark
Struct ve Class bir şekilde birbirine benzeyebilir, ancak birkaç farklılıkları vardır.
temel teknik destek mülakat soruları ve cevapları
Farklılıklar şunları içerir:
- Yapı bir değer türüdür, oysa sınıf bir başvuru türüdür.
- Yeni anahtar kelime yapıları başlatmak için gereklidir.
- Yapılar yalnızca parametreleştirilmiş kurucuya sahip olabilir ve diğer yandan, bir sınıf hem varsayılan hem de parametreli oluşturuculara sahip olabilir.
Struct: Tanım
Struct anahtar sözcüğü kullanılarak bir yapı tanımlanabilir. Bir yapı, program için birkaç farklı üyeye sahip yeni bir veri türü tanımlayabilir.
Bir yapı, bir nesne başlatmaya benzer bir şekilde, yani new anahtar sözcüğü kullanılarak başlatılabilir. Yapı, değer türü bir varlık olduğundan, çalışması bir sınıf nesnesine göre daha hızlıdır. Verileri depolamaya ihtiyaç duyulan her yerde, bir yapı kullanmamız gerekir. Öte yandan, verileri aktarmanız gerekiyorsa, bir yapı yerine sınıf kullanmanız önerilir.
Misal:
public struct Cuboid { public int length; public int width; public int height; } public class Program { public static void Main(string() args) { Cuboid cb = new Cuboid(); cb.length = 10; cb.width = 20; cb.height = 30; Console.WriteLine('The volume of cuboid is: {0}', (cb.length*cb.width*cb.height)); } }
Aşağıdaki programın çıktısı:
Küboidin hacmi: 6000
Açıklama
Yukarıdaki örnekte, içinde küboidin uzunluğu, genişliği ve yüksekliği için veri türlerini sakladığımız bir yapı küpü tanımladık. Ana yöntemimizin olduğu başka bir sınıf programımız var.
Ana yöntemde, new anahtar sözcüğünü kullanarak “Cuboid” yapısını başlatıyoruz. Daha sonra nesneyi yapı içinde depolanan veri türlerine değer atamak için kullandık. Daha sonra yapıdaki değişkenler üzerinde bir işlem yaptık ve sonucu konsola yazdırdık.
Bu nedenle, herhangi bir özelliği, olayı veya yöntemi kullanmak istiyorsanız, yapı new anahtar sözcüğü kullanılarak başlatılmalıdır, aksi takdirde size bir derleme hatası verir.
C # 'da numaralandırmalar
Enum, bir tamsayı sabitleri kümesidir ve bir yapıya benzer şekilde, aynı zamanda bir değer türü varlıktır. Esas olarak bir isim alanı, sınıf veya hatta yapı içinde “enum” anahtar sözcüğünü kullanarak bir tamsayı listesi bildirmek için kullanılır. Enum'da, tamsayı sabitlerinin her birine bir ad veriyoruz, böylece onlara ilgili adlarını kullanarak başvurabiliriz.
Enum sabit sayıda sabit içerebilir. Güvenliği artırmaya yardımcı olur ve ayrıca geçilebilir.
Enum'un Özellikleri
- Enum, sabitlere anlamlı adlar sağlayarak kodun okunabilirliğini ve sürdürülebilirliğini artırır.
- Enum, dize türü sabitleriyle kullanılamaz.
- Enum, int, long, short, byte, vb. Gibi sabitleri içerebilir.
- Varsayılan olarak, enum sabitlerinin değeri sıfırla başlar
Bir numaralandırma bildirmek
Enum bildirmek için sözdizimi aşağıda verilmiştir.
enum { list of integer constants };
Tüm enum sabitlerinin varsayılan değerleri vardır. Değer 0'dan başlar ve birer birer yükselir.
Misal:
public enum Cuboid{ length, width, height } public class Program { public static void Main(string() args) { int l = (int)Cuboid.length; int w = (int)Cuboid.width; int h = (int)Cuboid.height; Console.WriteLine('The length is :{0}”, l); Console.WriteLine('The width is :{0}”, w); Console.WriteLine('The height is :{0}”, h); } }
Aşağıdaki programın çıktısı:
Uzunluk: 0
Genişlik: 1
Yükseklik: 2
Açıklama
Yapı sırasında öğrendiğimiz benzer bir örnekle çalıştık. Bu örnekte Cuboid adlı bir enum oluşturduk. Bu numaralandırma üç üye içerir, yani uzunluk, genişlik ve yükseklik.
İçinde ana yöntemimizin bulunduğu başka bir sınıf programımız var. Enum türü değişkenleri tamsayı türüne dönüştürmek için açık bir atama kullanıldı, ardından değerlerini ana yöntemin içinde farklı değişkenlerde sakladık ve konsola yazdırdık.
Varsayılan olarak, ilk numaralamanın değeri sıfır olacak, ikincisi 1 olacak ve bu böyle devam edecek. Dolayısıyla, değerleri yazdırdığımızda yukarıda belirtilen çıktıyı aldık.
Enum Değerini Değiştirme
Enum ayrıca, kullanıcıların üyelerin varsayılan başlangıç dizinini değiştirmesine izin verir. Değişkenin başlangıç endeksini değiştirdiğinizde, sonraki üyelerin değerleri artan sırayla güncellenir.
Önceki örneğimizde tanımladığımız numaralandırmanın ilk üyesine bir değer atayalım ve ne olacağını görelim:
public enum Cuboid { length = 10, width, height } public class Program { public static void Main(string() args) { int l = (int)Cuboid.length; int w = (int)Cuboid.width; int h = (int)Cuboid.height; Console.WriteLine('The length is :{0}”, l); Console.WriteLine('The width is :{0}”, w); Console.WriteLine('The height is :{0}”, h); } }
Aşağıdaki programın çıktısı:
Uzunluk: 10
Genişlik: 11
Yükseklik: 12
Açıklama
Numaralamanın ilk üyesine bir değer atadığımızda, numaralandırmanın sonraki tüm üyelerine bu değerin artışı atanacaktır. Tanımladığımız gibi, ilk değer 10, sonraki değer 11 ve sonraki değer 12 olur.
Kullanıcı, seçimine göre herhangi bir değer atayabilir ve numaralandırmanın tüm üyeleri, kullanıcı tanımlı değerlerin artışı ile otomatik olarak atanır.
C # 'da Özellikler
C # 'daki özellikler temelde arabirimin, sınıfların ve yapının adlandırılmış üyesidir. Özellikler, yapı veya sınıfın üye değişkenlerinin / yönteminin bir uzantısıdır. Özel alanların değerini okumak, yazmak veya değiştirmek için kullanılırlar.
Mülklere tıpkı alanlar gibi erişilir. Değerleri almak, ayarlamak ve hesaplamak için kullanılabilecek erişimcileri vardır. Özelliklerdeki değerleri ayarlarken mantık da koyabiliriz. Dışarıdan erişimi kısıtlayan özel sınıfla da kullanılabilir, ancak aynı zamanda kullanıcının değerleri almak veya ayarlamak için özellikleri kullanmasına izin verir.
Erişimciler Nelerdir?
Mülkiyet erişimcileri, belirli bir özelliği okumak, yazmak veya hesaplamak için kullanılabilen ifadeleri oluşturur. Özellik beyanı get, set veya her ikisini içerebilir.
Misal:
public class Cube { private int side; //Declare a Side property of type integer public int Side{ get{ return side; } set{ side = value; } } } public class Program { public static void Main(string() args) { Cube cb = new Cube(); cb.Side = 5; Console.WriteLine('The volume of cube is :{0}', (cb.Side * cb.Side* cb.Side)); } }
Yukarıdaki kod parçacığı başarıyla derlendiğinde ve çalıştırıldığında, aşağıdaki çıktı gözlemlenir.
Küpün hacmi: 125
Açıklama
Yukarıdaki örnekte, içinde tamsayı türünde bir 'Side' özelliğini tanımladığımız bir 'Cube' sınıfımız var. Bundan sonra, döndürdüğümüz ve değişken tarafına değeri sağladığımız özelliği elde edip ayarladık.
bir dizüstü bilgisayar için en iyi işletim sistemi nedir
İçinde Cube sınıfını başlattığımız ve Side özelliği için değer sağladığımız ana yöntemle başka bir 'Program' sınıfımız var ve ardından hesaplanan sonucu konsola yazdırdık.
Sonuç
Bu eğitimde, sınıfın üye işlevlerini öğrendik. Bir üye işlevi, bulunduğu sınıfın herhangi bir nesnesi üzerinde çalışabilir. İnşaatçılar ve yıkıcılar hakkında da bilgi edindik.
Oluşturucular, sınıf nesnesi oluşturma sırasında otomatik olarak başlatılırken, yıkıcılar sınıfı yok eder ve esas olarak yürütme tamamlandıktan sonra bellek tahsisini kaldırmak için kullanılır. Yapıcılar iki tipte olabilir, yani varsayılan ve parametreleştirilmiş.
Yıkıcı herhangi bir parametreyi kabul etmez ve herhangi bir değer döndürmez. Hem Oluşturucu hem de Yıkıcılar, sınıf adıyla tamamen aynı adlara sahiptir. Ayrıca statik değişkenler ve statik sınıf hakkında ve herhangi bir sınıf örneği kullanmadan bunlara nasıl erişilebileceğini öğrendik. Statik bir sınıfın yalnızca statik üyelere sahip olabileceğini öğrendik.
Ayrıca Yapılar veya yapıları da tartıştık. Yapılar değer türü varlıklardır ve erişim için başlatılmaları gerekir.
Enum ve C # özellikleri de tartışıldı. Enum, adlandırılmış tam sayı sabiti kümesidir. Yapıya benzer şekilde, aynı zamanda değer tipi bir varlıktır. Numaralamanın üyeleri olacak ve her üyenin kendi varsayılan değeri olacaktır.
Sonunda, yapı veya sınıfın üye değişkenlerinin / yönteminin bir uzantısı olan özellikleri tartıştık. Özel alanların değerini almak, ayarlamak veya değiştirmek için kullanılırlar.
=> Komple C # Eğitim Serimizi Buradan Görün
Önerilen Kaynaklar
- C ++ 'da Statik
- C ++ 'da Kalıtım
- C ++ 'da Sınıflar ve Nesneler
- Bir Web Sayfasındaki Açılır Öğeleri Kullanmak için Selenium Select Sınıfı Kullanımı - Selenium Eğitimi # 13
- C ++ 'da Çalışma Zamanı Polimorfizmi
- C ++ 'da Arkadaş İşlevleri
- Mockito Kullanarak Özel, Statik ve Geçersiz Yöntemleri Alay Etmek
- C # Sınıfları ve Nesneleri: Örneklerle Derinlemesine Bir Eğitim