oops concepts c object oriented programming concept tutorial
Bu Öğretici, C # 'daki OOPS Kavramlarını Açıklar. Polimorfizm, Kapsülleme, Kalıtım ve Soyutlama gibi Nesneye Dayalı Programlama Prensiplerini Öğrenebilirsiniz:
Nesne Yönelimli Programlama, eylem veya mantık yerine nesnelerin etrafında dönen bir ilke üzerine çalışan bir programlama modelidir. Kullanıcıların ihtiyaca göre nesneler oluşturmasına ve ardından bu nesneler üzerinde çalışmak için yöntemler oluşturmasına olanak tanır.
İstenilen sonucu elde etmek için bu nesneler üzerinde çalışmak, nesne yönelimli programlamanın amacıdır.
=> C # Eğitim Öğreticilerinin Tüm Serisini Buradan Keşfedin
Daha önceki eğitimlerimizde öğrendiğimiz bazı kavramları gözden geçirelim !!
Ad alanı
C # 'da bir ad alanı, sınıfların bir koleksiyonudur. Bir sınıf adını farklı bir ad alanında bildirerek başka bir sınıf adından ayrı tutmak için bir yapı sağlar. Böylece aynı ada sahip sınıflar birbiriyle çakışmaz.
Sınıf
Sınıf, bir veri türünün taslağıdır. Aslında bir nesneler koleksiyonudur. Nesneleri ve o nesne üzerinde gerçekleştirilmesi gereken işlemin tanımını içerir.
Nesneler
Nesneler, sınıfın örnekleridir.
Önceki eğitimlerimizde, Sınıf ve Nesneler hakkında ayrıntılı bilgi edindik.
Ne öğreneceksin:
C # 'da OOPS Kavramları
Nesne Tabanlı Programlama, diğer programlama modellerine göre aşağıdakiler gibi çeşitli avantajlar sunar:
- Programlar için kesin ve net modüler yaklaşım, kolay anlaşılma ve bakım sağlar.
- Projede oluşturulan sınıflar ve nesneler proje genelinde kullanılabilir.
- Modüler yaklaşım, farklı modüllerin bağımsız olarak var olmasına izin vererek, birkaç farklı geliştiricinin farklı modüller üzerinde birlikte çalışmasına izin verir.
Bu eğitimde, diğer temel OOPS kavramlarına daha fazla odaklanacağız:
- Kapsülleme
- Polimorfizm
- Miras
- Soyutlama
Kapsülleme
Kapsülleme, programcıların verileri ve kod parçacıklarını bir kasa içine sarmalarına olanak tanıyan nesne yönelimli bir programlama konseptidir. Kapsülleme programını kullanarak, bir sınıfın üyelerini başka bir sınıftan gizleyebilirsiniz. Bir paket içindeki mantıksal bir öğeyi çevrelemek gibidir. Yalnızca ilgili bilgilerin dışarıda bulunmasına ve görünmesine izin verir ve bu da yalnızca belirli üyeler için geçerlidir.
Kapsülleme, erişim belirteçleri kullanılarak gerçekleştirilir. Erişim Belirteci, C # 'da sınıf üyesinin görünürlüğünü ve erişilebilirliğini tanımlamak için kullanılır.
C #, aşağıdaki erişim belirticilerini içerir.
en iyi vr uygulaması nedir
- halka açık
- Özel
- Korumalı
- İç
Erişim belirticileri, sınıfın ve değerlerinin görünürlüğünü tanımlar. Kodun belirli bir bölümü için verileri görünür hale getirmenize ve başka bir bölümden gizlemenize olanak tanır. En yaygın kullanılan görünürlük herkese açık ve özeldir.
Onlara bir göz atalım.
Halka açık: Public anahtar sözcüğü, üyelerinin proje içinde herhangi bir yerden görülebilmesini sağlar. Bu erişim belirticisi en az görünürlük kısıtlamasına sahiptir.
Özel: Özel üyelere yalnızca aynı sınıf içindeki üye erişebilir. Bu, en kısıtlı görünürlüklerden birine sahiptir.
Korumalı: Korumalı erişilebilirlik, üyeye sınıf içinden ve bu sınıfı devralan başka bir sınıftan erişilmesine izin verir.
İç: İç, proje içinden erişilebilirlik sağlar. Başka bir benzer dahili erişilebilirlik, dahili olarak korunmaktadır. Bu, iç ile aynı şeyi sağlar ve tek fark, bir çocuk sınıfın bu sınıfı miras alabilmesi ve üyelerine başka bir projeden bile ulaşabilmesidir.
Polimorfizm
Çok biçimlilik, Yunanca sözlükten türetilmiştir, birçok biçime sahip biri anlamına gelir. Poly birçok anlamına gelir ve Morph, formlar anlamına gelir. C # 'daki sınıfın aynı ada sahip birden çok uygulamaya sahip olmasına izin verir.
Polimorfizm temelde iki kısma ayrılır:
- Derleme zamanı Polimorfizmi
- Çalışma zamanı polimorfizmi
# 1) Statik veya Derleme Zamanı Polimorfizmi
Derleme zamanı polimorfizmi, Statik polimorfizm olarak da bilinir. Yöntem aşırı yükleme, derleme zamanı çok biçimliliğine ulaşmanın yollarından biridir. Karar çağırma yöntemi derleme sırasında verildiği için derleme zamanı polimorfizmi olarak bilinir.
Yöntem adını aynı tutup farklı parametre kümeleri ileterek elde edilir. Yöntem aşırı yüklemesinde, sistem önce kullanılan parametreyi kontrol eder ve parametre setine bağlı olarak uygun yöntemi çağırmaya karar verir.
Misal:
class Program { void print(int i, int j) { Console.WriteLine('Printing int: {0}', (i+j) ); } void print(string a, string b) { Console.WriteLine('Printing String: ' , (a+b)); } static void Main(string() args) { Program prog = new Program(); // Call print for sum of integers prog.print(5, 6); // Call to concatenate strings prog.print('Hello','World'); Console.ReadKey(); } }
Yukarıdaki örnekte, aynı yöntemi farklı parametreler kullanarak iki kez 'yazdır' olarak adlandırdık. İlk önce parametre olarak iki tamsayı geçirdik, sonra iki dizgeyi parametre olarak geçtik. Aynı ada sahip iki 'yazdırma' yöntemi vardır.
Tamsayı sistemi ile bir parametre geçirdiğimizde, iki tamsayı parametresini kabul eden 'print' adlı yöntemi arayacak ve aynı ada sahip diğer yöntemleri yok sayarak yürütecektir.
İkinci bölümde string parametresini geçtik. Yine sistem, iki string parametresini kabul eden yöntemi arayacaktır. Bu nedenle, geçirilen parametrelere bağlı olarak, ilk yöntem iki tamsayı ekleyecek ve bir sonraki yöntem iki dizeyi birleştirecektir.
# 2) Dinamik Polimorfizm veya Çalışma Zamanı Polimorfizmi
Çalışma zamanı polimorfizmi veya dinamik polimorfizmi, hem yöntem adı hem de yöntem imzası aynı ada ve parametrelere sahip olduğunda oluşur. Yöntemin geçersiz kılınması, dinamik polimorfizmin bir örneğidir. Kullanıcının kısmi arabirim uygulamasıyla soyut bir sınıf oluşturmasına izin verir.
Yöntemi geçersiz kılma, kalıtım kullanılarak gerçekleştirilir. Hem temel sınıfı hem de türetilmiş sınıfı geçersiz kılan yöntemi elde etmek için aynı ada ve parametreye sahip olmalıdır. Derleme süresi boyunca, derleyici geçersiz kılma yöntemini tanıyamaz, dolayısıyla herhangi bir hata vermez. Bir yöntemi çalıştırma kararı, çalışma süresi sırasında alınır.
Misal:
class Program { public void print() { Console.WriteLine('Printing from class Program'); } } class Execute : Program { public void print() { Console.WriteLine('Printing from class Execute'); } public static void Main(string() args) { Execute exe = new Execute(); exe.print(); Console.ReadLine(); } }
Yukarıdaki programı çalıştırırsak aşağıdaki çıktıyı alacağız:
Printing from class Execute
Execute sınıfı, Program sınıfının tüm yöntemlerini miras almış olsa da, her iki sınıfta da mevcut olan print yöntemini çağırdığımızda, alt sınıfta bulunan yöntem, üst sınıfın yöntemini geçersiz kılacaktır.
Soyutlamayı uygulamak için dinamik polimorfizm kullanılır. Kullanıcının, türetilmiş bir sınıf tarafından miras alındığında bir arabirim için bir uygulama sağlamak için kullanılan soyut bir sınıf oluşturmasına olanak tanır. Soyut sınıf, yöntemlerin adlarını / imzasını içerebilir ve türetilmiş sınıf, yöntem için daha özel bir tanıma sahip olabilir.
Miras
Kalıtım, OOPS konseptinin önemli bir parçasıdır. Kalıtımda, ebeveyn ve alt sınıfları tanımlarız. Alt sınıf, ana sınıfın tüm yöntemlerini, nesnelerini ve özelliklerini miras alabilir. Bir çocuk sınıfın kendi yöntemleri ve özel uygulamaları da olabilir.
Ana sınıf, temel sınıf olarak da bilinir ve temel sınıfı miras alan alt sınıf, türetilmiş sınıf olarak da bilinir.
Misal:
class Program { public void print() { Console.WriteLine('Printing from class Program'); } } class Execute : Program { public static void Main(string() args) { Execute exe = new Execute(); exe.print(); Console.ReadLine(); } }
Burada, tek yöntemi olan bir program olarak adlandırılan bir sınıfımız var. Program sınıfını miras alan başka bir Execute sınıfımız var. Execute sınıfı türetilmiş sınıftır ve sınıf programı temel sınıf olarak bilinir.
Şimdi, sınıf programı için bir nesne örneği oluşturmak yerine, Execute sınıfı için bir nesne örneği oluşturduk. Bu örneği kullanarak, yazdırma yöntemine temel sınıftan erişebiliriz.
Dolayısıyla, yukarıdaki kodun çıktısı şöyle olacaktır:
Printing from class Program
Türetilmiş sınıf yalnızca yöntemleri miras almaz, aynı zamanda görünürlüğe bağlı olarak alanlar, özellikler vb. Gibi neredeyse tüm sınıf üyelerini de miras alır. C #'daki kalıtım, birden çok kalıtımın kullanımına izin vermez, yani bir sınıf birkaç farklı sınıftan miras alamaz, ancak bir sınıf başka bir sınıftan miras alabilen başka bir sınıftan miras alabilir.
Soyutlama
Soyutlama, Nesne yönelimli programlamanın ana ilkelerinden biridir. Soyutlama, programcının diğerlerini gizlerken yalnızca gerekli ayrıntıları dünyaya göstermesine izin verir. Soyutlama, Abstract sınıfı ve arabirimi kullanılarak C # ile elde edilir.
Bir sınıf, 'Abstract' anahtar sözcüğü kullanılarak soyut bir sınıf olarak bildirilebilir. C # 'teki Abstract sınıfı her zaman hiyerarşideki temel sınıftır. Onları diğer sınıftan farklı kılan, somutlaştırılamamalarıdır. Soyut bir C # sınıfının miras alınması gerekir.
Misal:
class Program { static void Main(string() args) { Hyundai hyn = new Hyundai(); String descp = hyn.Describe(); Console.WriteLine(descp); Console.ReadKey(); } } abstract class Car { public void Describe() { return 'Description of the car'; } } class Hyundai : Car { }
Aşağıdakilerin çıktısı:
Description of the car
Kalıtım veya dinamik polimorfizm sırasında önceki örneklerimizle karşılaştırırsanız, benzerlikleri bulacaksınız. En belirgin fark, araba sınıfından önce abstract anahtar kelimenin kullanılmasıdır. Bunu geçersiz kılmak veya dinamik polimorfizmde yaptığımıza benzer kendi uygulamanızı sağlamak istemeniz durumunda. O zaman bunu aşağıdakilerle başarabilirsiniz.
class Program { static void Main(string() args) { Hyundai hyn = new Hyundai(); String descp = hyn.Describe(); Console.WriteLine(descp); Console.ReadKey(); } } abstract class Car { public virtual string Describe() { return 'Description of the car'; } } class Hyundai : Car { public override string Describe() { return 'Description of the car is now Hyundai'; } }
Yani, bu kodu şimdi çalıştırırsanız, aşağıdaki çıktıyı verecektir:
Description of the car is now Hyundai
Türetilmiş sınıf yöntemi, temel sınıf yöntemini geçersiz kılar. Bu şekilde, kendi uygulama yöntemleriyle Ferrari, Porsche, BMW vb. Gibi farklı bir türetilmiş sınıf oluşturabilirsiniz.
Yakından bakarsanız, soyut sınıftaki açıklama yöntemimizin herhangi bir uygulama içermediğini görebilirsiniz.
Öyleyse neden boş yöntemler tanımlıyoruz?
Bunun nedeni, bir Soyut sınıfın yöntemlerin imzasını sağlaması ve alt sınıfların tüm bu yöntemler için bir uygulama oluşturmasını zorunlu kılmasıdır. Bu, temel sınıfın paylaşılmasına izin verir, ancak aynı zamanda, türetilmiş sınıfın yöntem uygulamasını da kontrol eder.
Arayüz
C # 'da arayüz, bir sınıfın taslağıdır. Arayüz soyut bir sınıfa benzer ve yüzde yüz soyutlama elde etmek için kullanılır. Arayüzde açıklanan tüm yöntemler varsayılan olarak soyuttur. Herhangi bir yöntem gövdesi yoktur ve somutlaştırılamaz.
Arayüz esas olarak çoklu kalıtım ve tam soyutlama elde etmek için kullanılır. Arabirim içinde bildirilen tüm yöntem imzası, sınıftan veya onu uygulayan yapıdan uygulama ile sağlanmalıdır.
Misal:
class Program { static void Main(string() args) { Hyundai hyn = new Hyundai(); String descp = hyn.Describe(); Console.WriteLine(descp); Console.ReadKey(); } } interface Car { string Describe(); } class Hyundai : Car { public string Describe() { return 'Description of the car is now Hyundai'; } }
Yukarıdaki kodun çıktısı şöyle olacaktır:
Description of the car is now Hyundai
Burada bir arayüz Car oluşturduk. Arayüzde herhangi bir yöntem tanımı olamayacağından, arayüzde sadece yöntem adını ve dönüş türünü sağladık. Daha sonra Car arayüzünü başka bir Hyundai sınıfına uyguladık. Uygulanan sınıfta, arayüz içinde tanımlanan yöntemlerin tanımını sağladık.
Sonuç
Nesne Tabanlı Programlama konseptinde, programın her parçası bir nesne olarak ele alınır. Sınıf, benzer türde öğelerin bir koleksiyonudur ve bir nesne, sınıfın örneğidir.
C # 'ta kapsülleme, kullanıcının sınıfın ve üyelerinin görünürlüğünü oluşturmasına olanak tanır. Çok biçimlilik, yöntemlerin aynı ada sahip olmasına, ancak aynı sınıf içinde farklı parametrelere veya farklı bir sınıfta aynı parametreye sahip olmasına izin verir.
Kalıtım, türetilmiş sınıf olarak da bilinen bir alt sınıfın, temel sınıf olarak da bilinen ana sınıfın yöntemleri, nesneleri, alanları vb. Dahil tüm özelliklerini miras almasıdır. Soyutlama, programın uygulama ayrıntılarını gizlerken yalnızca imzayı görüntülemesini sağlar.
Konsolide Program
class Program { void print(int i, int j) { Console.WriteLine('Printing int: {0}', (i + j)); } void print(string a, string b) { Console.WriteLine('Printing String '+ a + b); } static void Main(string() args) { Program prog = new Program(); // Call print for sum of integers prog.print(5, 6); // Call to concatenate strings prog.print('Hello', 'World'); Hyundai hyn = new Hyundai(); String descp = hyn.Describe(); Console.WriteLine(descp); Console.ReadKey(); } } abstract class Car { public virtual string Describe() { return 'Description of the car'; } } class Hyundai : Car { public override string Describe() { return 'Description of the car is now Hyundai'; } }
=> C # Eğitim Öğreticilerinin Tüm Serisini Buradan Keşfedin
Önerilen Kaynaklar
- OOP Java: Java'da Nesne Tabanlı Programlamaya Giriş
- C ++ 'da Nesne Tabanlı Programlama
- Unix Borular Eğitimi: Unix Programlamada Borular
- Örneklerle Python DateTime Eğitimi
- QTP'de Nesne Deposu - Öğretici # 22
- Python OOPs Kavramları (Python Sınıfları, Nesneler ve Kalıtım)
- QTP Eğitimi # 7 - QTP’nin Nesne Tanımlama Paradigması - QTP Nesneleri Nasıl Benzersiz Şekilde Tanımlar?
- Gelişmiş SoapUI Harika Komut Dosyası Kavramlarını Öğrenin - SoapUI Eğitimi # 9