![]()
Programlama dünyasında Object Oriented Programming dediğimiz nesne yönelimli programlama kavramı oldukça önemlidir. Aslında OOP bir tasarım modellemesidir.
Bir ağacı ele alırsak;
Ağaç, gövdesi , dalı , tomurcuğu ,yaprağı, meyvesi vs. ile tam bir tasarım harikasıdır ve hayatın devamlılığı için önemli bir varlıktır. Bunu gibi OOP deki tasarım ve modellemede programlamada devamlılık , kolaylık , projelerin yönetimi ve esnekliği ve devamlılığı açısından son derece önemlidir.
Class : OOP nin yapı taşı diyebiliriz. İçerinde değişkenler , methodlar , property ler tanımlayabiliriz. Classları çoğunlukla yapmak isteğimiz işlemleri gruplara yada propery dediğimiz alanlara ayırmak, o alanlar üzerinden işlemlerimizi yapmak ve bu alanlara ulaşmak için kullanıyoruz ve bunu yaparken de new leyerek bir örneğini oluşturabiliriz. Yani bir class’ı kullanabilmek için onun örneğini(referansını) oluşturmamız gerekmektedir.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class Fakulte { public string FakulteAdi { get; set; } public int Kontenjan { get; set; } } class Ogrenci { public string Adi { get; set; } public string Soyadi { get; set; } public int Yasi { get; set; } public string Bolumu { get; set; } } |
Sonrada bu class ların bir instance oluşturarak tanımlarımızı kullanabiliriz
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Ogrenci ogrenci = new Ogrenci(); ogrenci.Adi = “HATİCE”; ogrenci.Soyadi = “yıldız”; ogrenci.Yasi = 25; ogrenci.Bolumu = “Bilgisayar Mühendisliği”; Fakulte fakulte = new Fakulte(); fakulte.FakulteAdi = “mühendislik”; fakulte.Kontenjan = 10; Console.WriteLine(“ADI:” + ogrenci.Adi); Console.WriteLine(“SOYADI:” + ogrenci.Soyadi); Console.WriteLine(“YASI:” + ogrenci.Yasi); Console.WriteLine(“BOLUM:” + ogrenci.Bolumu); Console.WriteLine(“FAKULTEADI:” + ogrenci.FakulteAdi); Console.WriteLine(“KONTENJAN:” + ogrenci.Kontenjan); |
Yada class içerisinde değişken yada method tanımlayarak ta işlemlerimizi yapabiiriz
|
1 2 3 4 5 6 7 8 9 10 11 12 |
class Hesaplama { var fiyat = 10.00; public static double Sonuc(decimal fiyat) { var sonuc = (fiyat * fiyat)/2; return sonuc; } } |
Encapsulation : Encapsulation bir nesnenin belirli özelliklerinin yada erişiminin(public , private , protected internal ) değiştirilebilir olması, kısıtlanması ve saklanmasıdır. Bu kullanım ile istenmeyen veri girişlerini engeller. Aslında kapsülleme bir sınıfın işini nasıl yaptığını gizlemek ve diğer sınıfların talepte bulunmasına izin vermektir. Ayrıca encapsulation işlemini uygularken get ve set metotlarını kullanırız. Burada ;
GET : Bir değişkenin yada metodun değerine ulaşmak için önceden tanımlamış olduğumuz değere ulaşmak istediğimiz özelliğin get metodu çalışır , değeri return ile döner.
SET : Class üzerinden atama gerçekleştirmek istediğimiz zaman set metodunu kullanırız. Atama gerçekleştirdiğimiz değere set metodu içerisinde value anahtar sözcüğü ile erişim sağlanır. Bu (value) anahtar sözcüğün önceden belirlenmiş herhangi bir yapısı yoktur. Yani istediğimiz değer türünü (string, int, double, bool) atayabiliriz.Yani özetle değer ataması yaparız
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
private string FakulteAdi; public int Kontenjan; public string FAKULTEADI { get { return FakulteAdi; } set { FakulteAdi = value.ToUpper(); } } private string FakulteAdi { get; set; } public int Kontenjan { get; set; } public int KONTENJAN { get { return Kontenjan; } set { Kontenjan = value; if (Kontenjan >= 0 && Kontenjan <= 20) { Kontenjan = value; Console.WriteLine(“Fakülte kontenjanına kaydınız yapılmıştır.”); } else { Kontenjan = value; Console.WriteLine(“Kontenjan dolmuştur”); } } } |
Abstraction : Programlamada sorunları çözerken yada proje temeli oluşturuken mümkün mertebe soyutlama kullanmak bize esneklik sağlayacaktır. Soyutlama, detayların niteliklerine ve özelliklerini yönetir. Soyutlama programların yapımında esastır. Bir nesnenin nasıl temsil edildiğinden veya nasıl çalıştığından ziyade ne olduğuna vurgu yapar. Dolayısıyla, büyük projelerde karmaşıklığı yönetmenin önemli bir yoludur.
Soyutlama karmaşıklığı azaltırken, generic ve benzer işlevleri gerçekleştiren birden fazla varlığı tek bir yapı ile değiştirerek karmaşıklığı azaltır. Genelleştirme, uygulamanın aynı veya farklı tipte daha büyük bir nesne alanını kapsayacak şekilde genişletilmesidir. Programlama dilleri değişkenler, parametrelendirme, jenerik ve polimorfizm yoluyla genelleme sağlar. Nesneler arasındaki benzerliklere vurgu yapar. Böylece, bireyleri gruplara toplayarak ve grubun herhangi bir bireyini belirlemek için kullanılabilecek bir temsilci sağlayarak karmaşıklığı yönetmeye yardımcı olur.
Soyutlama ve generic yapı genellikle birlikte kullanılır. Özetle, faydalı olabilmek için generic bir parametrelendirme ile genelleştirilir. Parametrelendirmede, bir değer yeni bir değer ile değiştirilir ve parametre olarak kullanılır. Parametre alan bir yapı soyutlama ile çağrıldığında, parametrenin bağımsız bir değişkene bağlanmasıyla çağrılır.
Abstract anahtar kelimesi ile bildirilen soyut sınıflar(Abstract class) başlatılamaz. Sadece soyut sınıfı genişleten diğer sınıflar için sınıf olarak kullanılabilir. Özetle class, kavramdır ve uygulama bir alt sınıf tarafından gerçekleştirilirken tamamlanır. Buna ek olarak, bir class yalnızca bir abstarct class tan miras alabilir (ancak bir class birçok arayüz uygulayabilir) ve soyut olduğu bildirilen ve sanal yöntemleri/özellikleri geçersiz kılabilen tüm yöntemlerini/özelliklerini geçersiz kılmalıdır.
Abstrac yani Soyut sınıflar kalıtım özelliğini kullanarak kod tekrarını azaltır. Abstrac class larda değişmeyen sabit Metot olarak yazılır değişen ise abstract olarak yazılır ve ovvaride ole ezilerek değişir.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
abstract class Database { public void Add()//Tamamlanmış Metod dur bu çünkü hepsinde aynı { Console.WriteLine(“Veri Eklendi”); } public abstract void Update();//Tamamlanmamış Method dur bu hepsinde farklıdır. } class Oracle:Database//Kalıtımla bağlayıp iplemente ettiğimde sadece update geldi ve ovvaride olarak geldi { public override void Update() { Console.WriteLine(“Oracle Güncellendi”); } } class SQLServer:Database { public override void Update() { Console.WriteLine(“SQLServer güncellendi”); } } |
Aşağıda başka bir örnekte bir defa abstract class tanımlatıp onu class iplemente ederek tüm projede ovvaride ederek kullanılabilir
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
public abstract class Exception : IDisposable { public abstract void Basarili(); public abstract void Basarisiz(); public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } public virtual void Dispose(bool disposing) { Enabled = false; } public bool Enabled { get { return Enabled; } set { Enabled = value; } } } public class ErrorException : Exception { HttpRequestError handler = new HttpRequestError(); public override void Basarili() { GlobalFilters.Filters.Add(handler); } public override void Basarisiz() { GlobalFilters.Filters.Remove(handler); } } |
sağlıcakla kalın..








Bir yanıt yazın