9 Nisan 2010 Cuma

Object Oriented Programming (14) - Class içerisine Enum türünden Field ve Property Eklemek

Class içerisine Enum türünden Field ve Property Eklemek


Enum, sabit elemanlardan oluşan ve bazı özel sözcükleri tam sayı olarak temsil etmemizi sağlayan özel bir tiptir.

Tanımı aşağıdaki gibidir
enum EnumAdi : tur{SOZCUK1,SOZCUK2,....,SOZCUKN}

Enum sabitlerinin türü byte, sbyte, short, ushort, int, uint, long ve ulong türlerinden herhangi biri olabilir. Eğer enum'un tür adı belirtilmediyse ,.NET IDE'si tarafından, varsayılan olarak int kabul edilir.

Enum tanımı Namespace içerisinde yapılır.

Aşağıdaki örnekte, Basit, Kompleks, Ozel sözcüklerinden olusan int tipinde bir enum tanımı yapılmıştır.

enum KarakterTipi
{
Basit,Kompleks,Ozel
}

KarakterTipi enum'u içerisindeki her sözcük bir rakamsal değer ile temsil edilir. Rakamsal bir değer atanmadığı sürece, Basit 0 ,Kompleks 1 , Ozel ise 2 değeri ile temsil edilir.

Eğer sözcüklerin temsil edildiği değerleri değiştirmek isterseniz aşağıdaki gibi bir işlem yapmanız gerekmektedir. Örnekte Basit 0 ,Kompleks 5 , Ozel ise 10 değeri ile temsil edilir.

enum KarakterTipi2 :int
{
Basit=0,Kompleks=5,Ozel=10
}

Aşağıdaki Örnekte, SifreUretici namespace'i altında, SifreKarakterTipi adında; Basit,Ozel ve Kompleks sözcüklerinden oluşan bir enum tanımladık.

namespace SifreUretici
{
//Enum
enum KarakterTipi
{
Basit, Kompleks, Ozel
}
public class Sifre
{

} //Class
} //NameSpace

Enum'u tanımladıktan sonra artık Enum türünden bir property yazabiliriz. Önce field'ı tanımlayarak başlıyalım. Örnekte _sifreTipi adında bir field tanımladık. Bu field, SifreKarakterTipi türünde tanımlanmıştır.

private SifreKarakterTipi _sifreTipi;

Şimdi _sifreTipi field'ı içerisindeki değeri okuyabilen ve değiştirebilen bir Property yazabiliriz. Propery oluşturmak için field satırının tamamını seçerek, art arda CTRL + R ve CTRL + E tuş kombinasyonlarına basarız. Açılan Encapsulate Field penceresinde OK butonu tıklayarak, SifreTipi adındaki property'i oluştururuz.

Sifre Class'ımızın görüntüsü aşağıdaki gibi olacaktır.

//Field
private SifreKarakterTipi _sifreTipi;


//Property
public SifreKarakterTipi SifreTipi
{
get { return _sifreTipi; }
set { _sifreTipi = value; }
}

SifreTipi Property'sinden seçilen değere göre şifre üretmek için, SifreUret metodunda aşağıdaki değişiklikler yapılır.

public string SifreUret()
{
char[] karakter = { 'A','B','C','D','E','F','G','H','I', 'J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','1','2','3','4','5','6','7','8','9','0','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','!','@','?','$'};
Random rnd = new Random();
string sonuc = null;
for (int i = 1; i <= _uzunluk; i++)
{
int rastgeleSayi = 0;
if (_sifreTipi == SifreKarakterTipi.Basit)
{
rastgeleSayi = rnd.Next(0, 25);
}
else if (_sifreTipi == SifreKarakterTipi.Kompleks)
{
rastgeleSayi = rnd.Next(0, 61);

}
else if (_sifreTipi == SifreKarakterTipi.Ozel)
{
rastgeleSayi = rnd.Next(0, karakter.Length - 1);
}


sonuc += karakter[rastgeleSayi].ToString();
}


return sonuc;
}

Hiç yorum yok: