eceyucel307
  C# Sınıf Yapısı
 

C# Sınıf Yapısı 
Nesne tabanlı program yazarken mutlaka kullandığımız yapılardan biri de nesnelerdir . Günlük yaşantımızda aslında her şey bir nesnedir . Programcılığın amaçları arasında da hayatımızı kolaylaştırmak olduğuna göre ürettiğimiz çözümlerde nesnelerden yararlanmalıyız . Hayatımızda ki nesneleri programlarımızda sınıflar olarak nitelendiriyoruz . Örnek vermek gerekirse çalışanlar , öğrenciler , banka hesabı gibi . Basit bir uygulama ile sınıfların nasıl tanımlandığına bir göz atalım .

 

   class sinifin_adi
   {
      //sınıfın üyeleri
    }

   class ogrenci
   {
      public int ogrID;
      ...
      ...
   }

       Öğrenci adında basit bir sınıf tanımladık ve bu sınıfımızın ogrID adında tekbir üyesi oldu . Bu üyemizi tanımlarken public anahtar sözcüğü kullandık . Bu sözcüğe erişim değiştirici denir . Buna benzer dört farklı erişim değiştiricisi vardır . Bu konuya yeri gelmişken deyineyim .

 Erişim Değiştiricisi

Özelliği

 private : Bu tür üyelere tanımlayıcı sınıf dışında erişilemez , türetilen sınıflardan bile . 

 protected : Bu tür üyelere sınıf dışında görünmezler . Sadece türetilen sınıflardan erişilebilir .

 public : Bu tür üyelere her yer den erişilebilir .

 internal : Kodun bulunduğu göre public ve protected türlerinin bir karışımıdır .

       Bu bilgileri de verdikten sonra şimdide sınıfların üyelerinden bahsedelim . Aklınızı karıştırmamak için basit tanımlarını verip bu konuyu hemen geçmek istiyorum . Çünkü verecek olduğum her başlık nesne yönelimli programlamada birer konu başlığı .

  Alanlar : Sınıf içerisinde tanımlanan değişkenlere denir .

  Yöntemler : Sınıfın alanları üzerinde çalışan gerçek koddur . Sınıflara davranış özelliklerini verir .

  Özellikler : Bunlar sayesinde bir sınıfın alanlarına bir erişimci yönteminin var olup olmadığını bilmeden public alanlarmış gibi erişilebilen bir istemci yazabiliriz .

  Sabitler : Değiştirilmeyen bir değeri olan bir alandır .

  Dizinleyiciler : Değerleri almak , ayarlamak için bir nesneyi kolayca dizinlememizi sağlar .

  Olaylar : Bir kod parçasının çalışmasını sağlayan şeylerdir . Fare hareketi , tıklama işlemi gibi .

   İşleçler : Standart matematiksel işleçleri bir sınıfa ekleyerek  , bu işleçler sayesinde daha yetenekli yazabilmemize olanak sağlar .

       Sınıflar ve nesne yönelimli yazılım hakkındaki bu temel bilgileri aldıktan sonra örnek uygulamalar ile pekiştirelim . İlk örneğimizde basit bir uygulama yapalım . Sınıfımızın bir fonksiyonu olsun ve ekrana herhangi bir metni yazdıralım bu fonksiyon sayesinde .

 static void Main(string[] args)
{
ilkSinif.ilkFonksiyon();
}
}
class ilkSinif
{
public static void ilkFonksiyon()
{
Console.WriteLine("İlk Sınıf Uygulaması");
Console.ReadLine();
}

}

       Öncelikle gördüğümüz gibi hazırlamış olduğumuz bir sınıf içerisindeki bir fonksiyona , eğer erişim değiştiricisinden dolayı bir engel verilmemiş ise sinif_adi.fonksiyon_adi şeklinde ulaşabiliriz . Bu örneğimizde birde önemli bir nokta var oda static kelimesi . Eğer örneğimizde fonksiyonumuzu static olarak tanımlamamış olsa idik uygulamamızı derlerken şu hata ile karşılaşırdık : "Error 1 An object reference is required for the nonstatic field, method, or property 'classmakale_1.ilkSinif.ilkFonksiyon()' " Bu hatayı Main() fonksiyonumuz static bir fonksiyon olduğu için static bir fonksiyon içinden static olmayan çağıramıyor olmamızdan verir . Eğer static yapmadan çağırmak istiyorsak o zaman Main() içerisinde yavru bir üye tanımlamamız gerekir . Oda şu şekilde yapılıyor :

 static void Main(string[] args)
{
ilkSinif yavruUye = new ilkSinif();
yavruUye.ilkFonksiyon();
}
}

       Yavru üye tanımlamayı da öğrendikten sonra makalemize daha detaylı bir örnek ile devam edelim . Bir bisiklet sınıfımız olsun bu sınıfa ait bazı üyeler olsun bu üyeler sayesinde bisikletin maliyet ve satış fiyatlarını hesaplayalım .

 static void Main(string[] args)
{
double tekerlek;
double demiraksam;
double cant;
double pedal;
double satisF;
bisiklet yeniBisiklet = new bisiklet();

Console.WriteLine("tTekerlek Birim Fiyatını Giriniz");
tekerlek = Double.Parse(Console.ReadLine());
Console.WriteLine("tnDemir Aksam Fiyatını Giriniz");
demiraksam = Double.Parse(Console.ReadLine());
Console.WriteLine("tnCant Birim Fiyatını Giriniz");
cant = Double.Parse(Console.ReadLine());
Console.WriteLine("tnPedal Fiyatını Giriniz");
pedal = Double.Parse(Console.ReadLine());
satisF=yeniBisiklet.satisFiyatiHesapla(tekerlek,demiraksam,cant,pedal);
Console.WriteLine("tnBisikletin satış fiyatı = {0} YTL",satisF);
Console.ReadLine();

}
}
class bisiklet
{
private double tekerlekbFiyati;
private double demiraksamFiyati;
private double cantbFiyati;
private double pedalFiyati;
private const double iscilik=52.5;
public double mFiyati;
public double sFiyati;


private double maaliyetFiyatiHesapla()
{
mFiyati = (tekerlekbFiyati * 2) + demiraksamFiyati + pedalFiyati;
mFiyati += (cantbFiyati * 2) + iscilik;
return mFiyati;
}
public double satisFiyatiHesapla(double tekerlek, double demiraksam, double cant, double pedal)
{
tekerlekbFiyati = tekerlek;
demiraksamFiyati = demiraksam;
cantbFiyati = cant;
pedalFiyati = pedal;
return (maaliyetFiyatiHesapla() * 120)/100;
}

}

      Bu uygulamamızda kullanıcıdan alığımız birim fiyatlara göre belirli bir işçilik ekleyerek bir maliyet fiyatı ve bu maliyete de belirli bir kar oranı ekleyerek satış fiyatını bulmaya çalıştık . Burada maaliyetFiyatiHesapla() fonksiyonunu private yapma sebebimiz ise bu fonksiyona dışardan erişilmesini istememizdir

 
 
  Bugün 14360 ziyaretçi (22496 klik) kişi burdaydı!  
 
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol