Ana sayfa › Forumlar › PROGRAMLAMA › C# › C# TA SINIF YAPISI
- Bu konu 0 yanıt içerir, 1 izleyen vardır ve en son 12 yıl 7 ay önce özgür tarafından güncellenmiştir.
-
YazarYazılar
-
26 Nisan 2012: 08:43 #13209özgürİzleyici
——————————————————————————–
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,de miraksam,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 . Yazımızı burada tamamlıyoruz . Umarım faydalı olur .
-
YazarYazılar
- Bu konuyu yanıtlamak için giriş yapmış olmalısınız.