C# ta Sınıflar

24 Mart 2007 – 00:39
      Nesne tabanlı
programcılıkta olmazsa olmazlardan biri nesnelerdir . Günlük yaşantımıza
da baktığı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("\t\nDemir
Aksam Fiyatını Giriniz"
);
demiraksam = Double.Parse(Console.ReadLine());
Console.WriteLine("\t\nCant
Birim Fiyatını Giriniz"
);
cant = Double.Parse(Console.ReadLine());
Console.WriteLine("\t\nPedal
Fiyatını Giriniz"
);
pedal = Double.Parse(Console.ReadLine());
satisF=yeniBisiklet.satisFiyatiHesapla(tekerlek,demiraksam,cant,pedal);
Console.WriteLine("\t\nBisikletin
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 . Yazımızı burada tamamlıyoruz . Umarım
faydalı olur .
 
Bookmark and Share

Post a Comment

Subscribe without commenting