Gerçek hayatta karşılaştığımız bir problemi çözerken nasıl adım adım ilerlersek program geliştirirken de bu şekilde ilerleğiz. Problemi önce küçük parçalara böler daha sonra her birini ayrı ayrı geliştiririz. Sonrada her bir parçaya birleştirerek bir bütün haline gelmesini sağlarız.
Sınıfları da programlama dünyasında tam olarak bu amaçla kullanırız. Programın her bir aşaması için ayrı sınıflar yazarız. Hatta bazen önceden bir başkası tarafından hazırlanmış bir sınıfı kullanırız. Daha sonrasında da ayrı ayrı geliştirilen bu sınıfları birleştirerek ortaya yeni bir program çıkartırız.
Bu şekilde gerçekleştirilen görev dağılımı (böl ve birleştir) nesne tabanlı programlamanın da ana mantığıdır.
Geliştirilen programı mümkün olduğu kadar küçük parçalara bölerek, her parçayı bir türde nesne haline getirip ve daha sonra bu nesneleri gerekli yerlerde çağırarak kullanmaktır. Nesneleri yazmak için önce bir şablon (kalıp) oluşturulur. Daha sonra bu şablondan istenilen sayıda nesne çıkarılır. Programlama dilinde bu şablonlara class, nesnelere de object adı verilir.
.Net’de Sınıf (Class) ve Nesne (Object) Kavramları
Nesne yönelimli bir uygulamada sınıf (class) ve nesne (object) kavramları çok önemli olgulardır. Dolayısıyla bu kavramlar net bir şekilde tanımlamak önemlidir. Sınıf (class), nesnenin özelliklerini ve davranışlarını tanımlar. Nesne (Object) ise sınıfın aktif bir örneğidir.
Sınıf
Sınıf (class), veriler içeren (değişken) ve bu verileri işleyen yapılardır. Ayrıca metotlar ile iş mantığı fonksiyonelliğini sağlarlar.
Sınıfları programlama ortamına aktarmak için kullanılan proje taslağına benzetebiliriz. Bu taslak verinin nasıl saklanacağını, işleneceğini ve erişilebileceğini tanımlar.
Örnek verecek olursak, sınıf olarak bir araba düşünün. Arabanın rengi, kapı sayısı, motor gücü gibi özellikleri vardır. Birde motoru çalıştırmak, kapıları kilitlemek gibi işlemleri (davranışları) vardır. Bu örnekten yola çıkarsak arabanın özellikleri uygun tiplerde ki değişkenleri, davranışları metotları, Arabanın bütünü ise sınıf ile temsil edilebilir.
Nesne
Nesneler, sınıflar ile yazılmış programın çalıştığı ortamda ki halidir. Sınıf bir yada bir den fazla nesnenin oluşturulması için altyapı olarak kullanılır.
Bir sınıf kod yazma aşamasında tanımlanır ve her zaman var olur. Ancak nesne ise çalışma zamanında oluşturulur ve uygulama çalıştığı sürece kullanılabilir.
Örnek verecek olursak, Bir bina yapımında önce mimarlar ve mühendisler tarafından çizimler ve hesaplamalar yapılarak taslaklar oluşturulur. Daha sonrasında yapılan bu taslaklar üzerinden bina yapım aşamasına geçilir. İşte bu örnekte hazırlanan taslakları Sınıf (Class) dır. Taslaklar üzerinden yani sınıf üzerinden yapılan bina ise Nesne (Object) dir. Ayrıca bu taslağa bakılarak birden fazla ve birbirinin de farklı binalar yapılabilir. Yani bir sınıftan istenilen sayıda ve farklı özelliklere sahip nesne oluşturulup kullanılabilir.
C#’da Sınıf Nasıl Tanımlanır ve Nesne Nasıl Oluşturulur?
Class IlkSınıfım
{
}
Class anahtar kelimesi oluşturulur. Anahtar kelimeden sonra sınıfımıza bir isim veririz ve süslü parantezlerimizi açarız. Süslü parantezler içerinde yazdığımı her kod o sınıfın bir öğesidir. Ayrıca Başlarına erişim belirleyicisi alabilirler. (Public, Private) Ayırca, her sınıfın bir .cs dosyası olabileceği gibi bir .cs dosyası içinde birden fazla class oluşturulabilir.
Sınıflar referans tipli ve kullanıcı tanımlı oldukları için new anahtar kelimesi ile oluşturulurlar.
IlkSınıfım sinifim = new IlkSınıfım();
Örnek Kullanım
using System.Threading.Tasks; namespace HelloWorld { public class Personel { // Parametre almayan metot. public Personel() { Isim = "unknown"; } // Paramatre alan metot. public Personel(string _isim) { Isim = _isim; } // Get metotu ile string değişken alma. public string Isim { get; } // System.Object üzerinden Get Methodu ile alınan Name değişkenini override etme. public override string ToString() { return Isim; } } class Program { static void Main(string[] args) { // Sınıf üzerinden parametre almayan metotu çağırma. var personel1 = new Personel(); Console.WriteLine(personel1.Isim); // Sınıf üzerinden parametre bir parametre alan metotu çağırma. var personel2 = new Personel("Fatih ALKAN"); Console.WriteLine(personel2.Isim); // person2 tanımı üzerinden override edilen stringi değerini alır. Console.WriteLine(personel2); Console.WriteLine("Press any key to exit."); Console.ReadKey(); } } } // Output: // unknown // Fatih ALKAN // Fatih ALKAN
Oldukca basarili aciklamissiniz ama sadece ilk baslayanlara yonelik bir rehber var.
Umarim orta seviye ve biraz daha ileri seviye rehberler ile bulusuruz.
Hiç bir şey anlamadım
Anlamadığınız yer neresidir tam olarak. Yardımcı olmak isterim.