Bu yapının kolaylıkla anlaşılabilmesi için mirastan bahsetmek istiyorum.Bir sınıfın özellikleri miras alınarak yeni bir sınıf oluşturabilir ve bu yeni sınıfa istediğimiz metot ve alanları ekleyebiliriz.Ve miras aldığımız sınıfın bize erişim belirteçleriyle izin verdiği dahilde oranda metot ve alanlara erişebiliriz.Ancak sealed anahtar sözcüğüyle etiketlenmiş bir sınıftan türetme yapamayız.Örneğin System.String ve System.Int32 sınıfları sealed anahtar sözcüğüyle etiketlenmiştir ve bu sınıflardan türetme işlemini gerçekleştiremeyiz.Ancak bu sınıflara ek özellikler eklemek isteyebiliriz.Bunun için karşımıza genişletme metotları çıkmaktadır.
Bu yapıyı kullanabilmek için 3 temel şartı yerine getirmemiz gerekmektedir.
- Bu metodu tanımlayacağımız sınıf static olmalıdır.
- Tanımlayacağımız metot static olmalıdır.
- Metot parametresi verilirken metodun ilk parametresini işlem yapmak istediğimiz tipten bir nesne this anahtar sözcüğü ile belirtilmelidir.

Yandaki resimde görüldüğü üzere String tipine bir genişletme metodu eklenmiştir ve GetCrypt adlı metot ile md5 algoritmasından yararlanarak 128 bitlik bir checksum elde edebildiğimiz bir metot oluşturulmultur.128 bitlik bu ckecksum hexdecimal olarak oluşturulmaktadır.
Örneğin 12-AB-3F-00-DD-AA-45-23-FB-AC-52-11-23-78-9D-AA şeklinde bir string döndürmektedir.
Koddan da görüldüğü üzere genişletme metotu(overloading) aşırı yüklenmiştir.Yani genişletme metotları aşırı yüklenebilmektedir.
Sadece bu yapılara genişletme metotları eklenmez.Örneğin var olan tiplere yeni metotlar eklenebilmesi için de bu yapı kullanabilir.Temel amaç ise yazılmış olan uygulamaların çalışma sistemini bozmadan yeni fonksiyonellikler katarak genişlemelerine yardımcı olur.

Örneğin bir string tipinde veriler tutan bir list generic yapısı için geliştirilmiş bu metotta verilerin kaç kere geçtiklerini sayan ve bunu da Dictionary tipinde geriye döndüren bir yapı sağlanmıştır.GetData adlı metotta ise Dictionary tipinde veri alan bir metot geliştirilmiştir.
Bu yapı nesneye yönelik programlamanın özelliği değil .Net Framework yapısında bulunan özelliklerdir.
Kısaca
- Genişletemediğimiz sealed yapılarında
- Var olan veri tiplere yeni özelliklerin eklenmesini sağlamak için
- Kaynak koda erişilemediği durumlarda ek işlevsellik katabilmek için kullanılır.
Hiç yorum yok:
Yorum Gönder