C#nedir?com
 
YAZAR HAKKINDA
Orhan Albay
Orhan Albay
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
3 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: belirtmeye durumlarda metoda nesneyi object return sinifindan sinifinin siniflarin string tipine tipini tipinin values zamaninda C# / VC#/.NET Orhan Albay
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : C# / VC#/.NET
Yayınlanma Tarihi : 19.7.2004
Okunma Sayısı : 18969
Yorum Sayısı : 0     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
XML - Deniz Kılınç
emre TAŞ
yazının devamı >
emre TAŞ
Decompiling and Reverse Engineering .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Masaüstü mü ? İnternet Mi? .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
.Net Kavramları - .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Yeni Başlayanlar için - .Net Radyo
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 12.4.2021
Turhal Temizer
Mac OS/X Removing CUDA 12.4.2021
Burak Selim Şenyurt
Tie Fighter Değil, Project Tye! 12.4.2021
Burak Selim Şenyurt
Stackoverflow Sevgi Anketinde Yıllardır Bir Numara Çıkan Programlama Dili Rust Kimdir? 12.4.2021
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Herşey Bir Nesnedir
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
.NET framework sınıf hiyerarşisinde bütün sınıflar birer nesnedir. Diğer yandan tüm nesneler, object sınıfından türetilmiştir. Fakat kalıtımın (inherit) direkt olarak object sınıfından yapıldığını belirtmeye gerek yoktur. Şöyleki;

public class BenimNesnem : Object  -> Açık bir şekilde belirtmeye gerek yok.
{
    //private – public - protected değişkenler
    //methodlar

}
Her sınıfın birer object olduğunu artık bildiğimize göre Nesne Tipini çalışma zamanında tam olarak bilemediğimiz durumlarda metoda object parametresini göndererek dinamik olarak nesneyi tanımlamak işimizi kolaylaştıracaktır.

public void Method(object obj)
{
   …
   …

}
Method içerisinde obj tipinin tam olarak açığa çıkartılabilmesi için birden fazla yöntem mevcut. Bunlardan en basiti obj tipinin istediğiniz object tipinde olup olmadığına bakarak metodun ne yapacağına karar vermek. Bunu yukarıda da bahsettiğim gibi bütün sınıfların dolaylı olarak türetildiği Object sınıfının GetType() metodu ile yapıyoruz.

if ( obj.GetType() == typeof(BenimNesnem) )
    //aradığımı buldum. birşeyler yap.
Else
   //istediğim nesne bu değil.
typeof operatörü bir tip hakkında bilgi edinmemiz için kullanılıyor. GetType() haricinde Object sınıfında tanımlı 3 method daha var. Bunlar;

bool Equals(object, [object])  -> iki nesneyi karşılaştır eşit ise true, değilse false dönder
int GetHashCode() -> nesneyi aynı gruptaki diğer nesnelerden ayırmak için kullanılabilir.
(Tablo PrimaryKeyID si dönderilebilinir mesela.)
string ToString() -> bu method ise türetilen sınıfta ezilmediği (override edilmediği) durumlarda sınıf adını verir.
Bizim örnekte : BenimNesnem

Bu metodların türetilen sınıfta ezilmesi ise şu şekilde gerçekleşiyor. Böylece Object sınıfına "ben bu methodları kendime göre uyarladım, sen kendinde tanımlı metodu unut , benim metod ne söylüyorsa itiraz etme, dediğini yap" demiş oluyoruz.

public override string ToString()
{
     return "Nesnenin adı = BenimNesnem";
}

public override int GetHashCode()
{
     return 1;
}
Konudan sapmadan tekrar obj tipine geri dönelim.

"Ben bu obj nin tipini metoda parametre olarak gönderirken zaten biliyorum" dediğinizi duyar gibiyim. Haklısınız. Bu objectin en basit kullanım şekli idi.
 
Çalışma zamanında (run-time) object tipine göre programın akışını yönlendirmek çok daha basit ama biraz da olsa karmaşık kodlama tekniği ile her nesneye uygulanabilir bir hale getirilebilir. Şimdi biraz brain-storming (beyin fırtınası) yapalım. Beynimizi zorlayalım. :) Aşağıda 2 sınıf tanımı yapacağım ve sizden istediğim şey ise her sınıf için veritabanında sınıf ismi ile belirtilen tablolara sınıfların özellikleri ile tablo alanlarının uyumunu sağlayıp kaydettirmek. Sorunun cevabını bir başka makalede yazacağım. Böylece Object sınıfının önemini daha iyi anlamış ve başka bir konuya da giriş yapmış olacağız.

// 1. sınıfımız
public class User
{
 int user_id;
 string adi;

 public int UserID
 {
    get { return user_id;  }
    set { user_id = value; }
 }

 public string Adi
 {
    get { return adi; }
    set { adi = value; }
 }
}

// 2. sınıfımız
public class Password
{
 int user_id;
 string sifre;

 public int UserID
 {
    get  { return user_id; }
    set { user_id = value; }
 }

 public string Sifre
 {
    get { return sifre; }
    set { sifre = value; }
 }
}

//Bütün objectler için kullanılacak olan method.
public void Kaydet(object obj)
{
    //obj tipine göre ilgili sql cümlesini oluştur.
      sql = INSERT INTO User (Alan1, Alan2, ….. ,AlanN) VALUES (Deger1, Deger2, …., DegerN)      
   //veritabanına sql cümlesini gönder. Böylece obj ilgili tabloya kaydedilmiş olacak.
}
Kullanımı :

User yeni_kullanici = new User();
yeni_kullanici.UserID = 1;
yeni_kullanici.Adi = "orhan";

Kaydet(yeni_kullanici); //INSERT INTO User (UserID, Adi) VALUES (1, "orhan")

Password sifre = new Password();
sifre.UserID = yeni_kullanici.UserID;
sifre.Sifre = "bilinbakalım";

Kaydet(sifre); // INSERT INTO Password (UserID, Sifre) VALUES (1, "bilinbakalım")

Gelecek makalede hem bir başka konuyu öğrenmek hem de bu sorunun cevabı üzerinde tartışmak üzere  görüşmek ümidiyle. Orhan ALBAY
o_albay@yahoo.com
Makale:
Herşey Bir Nesnedir C#, Visual C# ve .NET Orhan Albay
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor