Nesneye Yönelik Programlama
Object Oriented Programming
EĞİTMEN
HAVAS MEDİA – Bilgi Teknolojileri
Takım Lideri : Ünal ÜN
unal.un@ph.com.tr – unal.un@havas.com.tr
Nesneye Yönelik Programlama Nedir ?
Açıklama :
Gerçek hayat da var olan problemlerin sınıflar vasıtasıyla
modellenmesi ve bu modellerin nesnelere dönüştürülerek
kullanılmasıdır.
Sınıf veNesnelerden oluşur.
Esnek, Genişletilebilir ve Tekrar kullanılabilir olduğu için kod
tekrarını önler. Geliştiriciye zaman ve performans kazandırır.
Ekip olarak çalışmaya uygun bir kod yapısı olmakla birlikte
yönetimi ve bakımı kolaydır.
Günümüzde popüler olan bir çok dil tarafından
kullanılmaktadır.(C#, Java, Php, Python)
?
Sınıf (Class) ve Nesne (Object) Kavramı ?
Kutu -Sınıfı
- İçerisinde alanlar ve methodlar barındırırlar.
- Yapıcı ve Yıkıcı Metotları vardır
- Erişim belirleyiciler ile istenilen düzeyde erişim sağlanabilir.
(Public,Private,Internal, Protected, Protected Internal)
- Sınıflar içerisinde tanımlanan değişkenlere field (alan) adı verilir.
Her bir alan nesnenin bir özelliğidir (property)
Kutu Nesnesi
- Nesnelerin belirgin bir özellikeri vardır.
- Sınıf üzerinden oluşturulmuş olan bir nesnenin Genişlik,
Yükseklik,Resim, Renk gibi değer özellikleri atanabilir.
People Sınıfı’nın Özellikleri
Burada bir insan sınıfı oluşturulmuş ve bu
sınıfın yapıcı,yıkıcı methodları ve aynı
zamanda: Id, Name, SurName,Age alanları
tanımlanmıştır.
(Yapıcı methodlar sınıf ile aynı ismi taşırlar ve
geriye dönüş tipi yoktur)
People sınıfı içerisinde yine aynı sınıfı
kullanan GeyById adında bir method
oluşturulmuştur.
-Bir sınıfın tekrar kullanılabilirliği
People Sınıfından bir Nesne Oluşturulması
People sınıfından bir nesne oluşturulmuş ve
aynı zaman da bu nesne oluşturulurken
Constructor (Yapıcı) Method’unda bazı değer
atamaları yapılmıştır.
- New Anahtar sözcüğü ile oluşturulur
-Oluşturulmuş olan sınıftan birden çok farklı
isimlerle nesne oluşturulabilir.
-Oluşturulmuş olan nesnenin erişilebilir
özelik veya method’larına ‘’.’’ tuşuna basılarak
görülebilir.
Method Nedir ve Özellikleri Nelerdir ?
-Değer döndüren veya döndürmeyen olmak üzere
ikiye ayrılılar.
-Bir method erişim belirteci, dönüş tipi, adı ve aldığı
parametreler yazılacak şekilde tanımlanır.
-Bir method oluşturulurken geriye bir değer
döndürüyorsa dönüş tipi (int,string, bool vb) ve
döndürecek değeri de return ifadesiyle belirtilir. Eğer
ki method geri değer döndürmüyorsa erişim
belirtecinden sonra void olarak yazılır.
-Bir method oluşturulurken istenilen sayıda ve tip de
değer alabilir her bir parametre tip ve parametre adı
yazıldıktan sonra virgül ile ayrılarak yeni bir
parametre tanımlanır.Methodlar parametre almak
zorunda değildir
- Bir method oluşturulurken aynı isim de birden fazla
method tanılması yapılabilir overload(aşırı yükleme)
yapılabilir.
Erişim Belirleyiciler (Access Modifiers) Nelerdir ?
- Class ve Method tanımlamalarında
kullanılır.
- Namespace de erişim belirteci yoktur.
- Class,Struct,Interface,Enum,Delegate
Varsayılan Olarak Internal erişim belirtecine
sahiptir
- Interface ve Enum erişim belirteçleri
uygulanmaz Sadece public olarak
tanımlanabilir
Encapsulation (Kapsülleme) Nedir ?
- Nesne tabanlı programlamanın temel
ilkelerinden bir tanesidir.
- Kapsülleme ile veriye dışarıdan direkt
erişimi engelleyebiliriz. (private)
- Başka kod veya sınıflar tarafından
doğrudan kullanılmaması için bariyer görevi
görür. Bu sayede nesneler bilinçsiz
kullanımdan korunabilir.
- Veri değeri atanırken (set) veya çağırılırken
(get) istediğimiz iş kurallarını uygulayabiliriz
Inheritance (Miras/Kalıtım) Nedir ?
Bir sınıf üzerindeki özelliklerin bir diğer sınıfa
aktarılmasına yarar.
- - Bir sınıftan miras alınırken gerekirse yapıcı
metotuna parameter göndererek sınıflar
arasında veri taşıyabiliriz.
- Temel sınıftaki özellikler istenen sayıdaki
sınıflara katılım yoluyla dağıtılabilir.
- Ortak özellikler tek yerde toplanarak kod
tekrarı yapılmasına engel olur.
Polymorphism (Çok Biçimlilik) Nedir ?
Ana sınıftan başka bir sınıf türetildiğinde,
türeyen sınıfın ana sınıf içindeki üyeleri
kendine göre farklı olarak uygulamasıdır
- Ana sınıf, kendi içindeki bir üyenin
(method, değişken, event vs.)-, kendinden
türeyen başka sınıflar tarafından
değiştirilebilmesini istiyorsa virtual anahtar
kelimesi ile tanımlanmalıdır
- Türeyen sınıf, gerektiğinde ana sınıf içindeki
üyeyi değiştirmek istiyorsa override olarak
yeniden tanımlayabilir.
Struct Nedir ?
- Sınıflara (class) benzer yapıda olup daha
basit ve daha performanslıdır
- - Ram üzerinde daha az yer kaplar.
- Miras/katılım almaz, struct ile çok biçimlilik
(Polymorphism) kullanılamaz
-Parametresiz yapıcı metot tanımlamazsınız.
- Sınıflardan eski bir geçmişe sahiptir, sınıflar
bu yapının üzerine geliştirilerek
kurulmuşlardır
-Int struct, String ise sınıftır.
Enum (Enumeration) Nedir ?
- Uygulama içerisinde sabit olan ve hiç
değişmeyen seçenekleri tanımlamak için
kullanılabilir,
- Geliştiriciye kod yazarken seçenekleri
görmesini ve sağlar.
- Tutarlılık sağlar.
Static (Statik) Nedir ?
- Ram üzerinde bir kez tanımlanır, herkes için
aynıdır.
- Türetme işlemi yapılmadan ulaşılan
elemanlardır.
- Bir kez tanımlandığı için ram üzerinde az yer
kaplar ve performanslıdır.
- Herkes için aynı olduğundan web tabanlı
yapılarda kullanıcı değerleri gibi verilerin
taşınması amaçlı kullanılamaz.
- Metotlarda parametreye this anahtar kelimesi
verilerek extension method oluşturulabilir.
- Statik metotlara örnekler
Console.Write(),Console.ReadLine
Abstract (Soyut) Nedir ?
- Abstract Sınıf, ortak özellikli Sınıflara
Base(taban) Sınıf olma görevini üstlenir
- Standart kalıtım gibi bir diğer sınıfın
özelliklerini alırken aynı zamanda da sınıf
içerisinde oluşturulması gereken zorunlu
tanımlamaları (şablon) alır.
- Abstract sınıflar türetilemezler.
- Abstract method, sadece Abstract Class’ların
içerisinde tanımlanır ve Abstract Class’ı kalıtan
sınıf tarafından override edilmek zorundadır.
- Oluşturduğumuz Abstract Class içerisine,
Abstract Method yazılırken gövdesi yazılmaz ve
daha sonra Abstract Class’ımızı kalıtacağımız
sınıfta Abstract Method’u override ederiz
Interface (Arayüz/Şablon) Nedir ?
- Diğer sınıflara rehberlik eden bir sınıftır.
- İşi diğer sınıflara rehberlik etmek
olduğundan sadece metot şablonları
tanımlanır.
- Metot içerikleri Interface içerisinde yer
almaz.
- Bir interface istenilen sayıda sınıf ile
kullanılabilir.
- Interface kullanan sınıflar türetilirken
interface tipinde türetilebilir, bu sayede
esnek yapılar oluşturulabilir.
Sealed Class (Sınıf) Nedir ?
-Sealed anahtar sözcüğü bir sınıfa
uygulandığında diğer sınıfların kendisinden
kalıtım almasını önler.
Ama sealed sınıf diğer sınıflardan kalıtım
alabilir.
- Sealed kalıtımı engellediği için bir çeşit
güvenlik önlemi olarak düşünebiliriz.
- Basit sınıflar değiştirilmesini istemediğimiz
kütüphane gibi classlarda kullanılabilir.
Sealed Class (Sınıf) Nedir ?
-normal virtual ile işaretlenmiş bir method
override edilerek ezilebiliyor.
Sealed Class (Sınıf) Nedir ?
-Sealed ile işaretlenmiş method’u farklı bir
sınıf üzerinden kalıtım yoluyla içerisindeki
method override etmeye çalıştığımız da
ekran gördüğümüz gibi ilgili method
çağrılmamaktadır.

C# OOP

  • 1.
    Nesneye Yönelik Programlama ObjectOriented Programming EĞİTMEN HAVAS MEDİA – Bilgi Teknolojileri Takım Lideri : Ünal ÜN unal.un@ph.com.tr – unal.un@havas.com.tr
  • 2.
    Nesneye Yönelik ProgramlamaNedir ? Açıklama : Gerçek hayat da var olan problemlerin sınıflar vasıtasıyla modellenmesi ve bu modellerin nesnelere dönüştürülerek kullanılmasıdır. Sınıf veNesnelerden oluşur. Esnek, Genişletilebilir ve Tekrar kullanılabilir olduğu için kod tekrarını önler. Geliştiriciye zaman ve performans kazandırır. Ekip olarak çalışmaya uygun bir kod yapısı olmakla birlikte yönetimi ve bakımı kolaydır. Günümüzde popüler olan bir çok dil tarafından kullanılmaktadır.(C#, Java, Php, Python) ?
  • 3.
    Sınıf (Class) veNesne (Object) Kavramı ? Kutu -Sınıfı - İçerisinde alanlar ve methodlar barındırırlar. - Yapıcı ve Yıkıcı Metotları vardır - Erişim belirleyiciler ile istenilen düzeyde erişim sağlanabilir. (Public,Private,Internal, Protected, Protected Internal) - Sınıflar içerisinde tanımlanan değişkenlere field (alan) adı verilir. Her bir alan nesnenin bir özelliğidir (property) Kutu Nesnesi - Nesnelerin belirgin bir özellikeri vardır. - Sınıf üzerinden oluşturulmuş olan bir nesnenin Genişlik, Yükseklik,Resim, Renk gibi değer özellikleri atanabilir.
  • 4.
    People Sınıfı’nın Özellikleri Buradabir insan sınıfı oluşturulmuş ve bu sınıfın yapıcı,yıkıcı methodları ve aynı zamanda: Id, Name, SurName,Age alanları tanımlanmıştır. (Yapıcı methodlar sınıf ile aynı ismi taşırlar ve geriye dönüş tipi yoktur) People sınıfı içerisinde yine aynı sınıfı kullanan GeyById adında bir method oluşturulmuştur. -Bir sınıfın tekrar kullanılabilirliği
  • 5.
    People Sınıfından birNesne Oluşturulması People sınıfından bir nesne oluşturulmuş ve aynı zaman da bu nesne oluşturulurken Constructor (Yapıcı) Method’unda bazı değer atamaları yapılmıştır. - New Anahtar sözcüğü ile oluşturulur -Oluşturulmuş olan sınıftan birden çok farklı isimlerle nesne oluşturulabilir. -Oluşturulmuş olan nesnenin erişilebilir özelik veya method’larına ‘’.’’ tuşuna basılarak görülebilir.
  • 6.
    Method Nedir veÖzellikleri Nelerdir ? -Değer döndüren veya döndürmeyen olmak üzere ikiye ayrılılar. -Bir method erişim belirteci, dönüş tipi, adı ve aldığı parametreler yazılacak şekilde tanımlanır. -Bir method oluşturulurken geriye bir değer döndürüyorsa dönüş tipi (int,string, bool vb) ve döndürecek değeri de return ifadesiyle belirtilir. Eğer ki method geri değer döndürmüyorsa erişim belirtecinden sonra void olarak yazılır. -Bir method oluşturulurken istenilen sayıda ve tip de değer alabilir her bir parametre tip ve parametre adı yazıldıktan sonra virgül ile ayrılarak yeni bir parametre tanımlanır.Methodlar parametre almak zorunda değildir - Bir method oluşturulurken aynı isim de birden fazla method tanılması yapılabilir overload(aşırı yükleme) yapılabilir.
  • 7.
    Erişim Belirleyiciler (AccessModifiers) Nelerdir ? - Class ve Method tanımlamalarında kullanılır. - Namespace de erişim belirteci yoktur. - Class,Struct,Interface,Enum,Delegate Varsayılan Olarak Internal erişim belirtecine sahiptir - Interface ve Enum erişim belirteçleri uygulanmaz Sadece public olarak tanımlanabilir
  • 8.
    Encapsulation (Kapsülleme) Nedir? - Nesne tabanlı programlamanın temel ilkelerinden bir tanesidir. - Kapsülleme ile veriye dışarıdan direkt erişimi engelleyebiliriz. (private) - Başka kod veya sınıflar tarafından doğrudan kullanılmaması için bariyer görevi görür. Bu sayede nesneler bilinçsiz kullanımdan korunabilir. - Veri değeri atanırken (set) veya çağırılırken (get) istediğimiz iş kurallarını uygulayabiliriz
  • 9.
    Inheritance (Miras/Kalıtım) Nedir? Bir sınıf üzerindeki özelliklerin bir diğer sınıfa aktarılmasına yarar. - - Bir sınıftan miras alınırken gerekirse yapıcı metotuna parameter göndererek sınıflar arasında veri taşıyabiliriz. - Temel sınıftaki özellikler istenen sayıdaki sınıflara katılım yoluyla dağıtılabilir. - Ortak özellikler tek yerde toplanarak kod tekrarı yapılmasına engel olur.
  • 10.
    Polymorphism (Çok Biçimlilik)Nedir ? Ana sınıftan başka bir sınıf türetildiğinde, türeyen sınıfın ana sınıf içindeki üyeleri kendine göre farklı olarak uygulamasıdır - Ana sınıf, kendi içindeki bir üyenin (method, değişken, event vs.)-, kendinden türeyen başka sınıflar tarafından değiştirilebilmesini istiyorsa virtual anahtar kelimesi ile tanımlanmalıdır - Türeyen sınıf, gerektiğinde ana sınıf içindeki üyeyi değiştirmek istiyorsa override olarak yeniden tanımlayabilir.
  • 11.
    Struct Nedir ? -Sınıflara (class) benzer yapıda olup daha basit ve daha performanslıdır - - Ram üzerinde daha az yer kaplar. - Miras/katılım almaz, struct ile çok biçimlilik (Polymorphism) kullanılamaz -Parametresiz yapıcı metot tanımlamazsınız. - Sınıflardan eski bir geçmişe sahiptir, sınıflar bu yapının üzerine geliştirilerek kurulmuşlardır -Int struct, String ise sınıftır.
  • 12.
    Enum (Enumeration) Nedir? - Uygulama içerisinde sabit olan ve hiç değişmeyen seçenekleri tanımlamak için kullanılabilir, - Geliştiriciye kod yazarken seçenekleri görmesini ve sağlar. - Tutarlılık sağlar.
  • 13.
    Static (Statik) Nedir? - Ram üzerinde bir kez tanımlanır, herkes için aynıdır. - Türetme işlemi yapılmadan ulaşılan elemanlardır. - Bir kez tanımlandığı için ram üzerinde az yer kaplar ve performanslıdır. - Herkes için aynı olduğundan web tabanlı yapılarda kullanıcı değerleri gibi verilerin taşınması amaçlı kullanılamaz. - Metotlarda parametreye this anahtar kelimesi verilerek extension method oluşturulabilir. - Statik metotlara örnekler Console.Write(),Console.ReadLine
  • 14.
    Abstract (Soyut) Nedir? - Abstract Sınıf, ortak özellikli Sınıflara Base(taban) Sınıf olma görevini üstlenir - Standart kalıtım gibi bir diğer sınıfın özelliklerini alırken aynı zamanda da sınıf içerisinde oluşturulması gereken zorunlu tanımlamaları (şablon) alır. - Abstract sınıflar türetilemezler. - Abstract method, sadece Abstract Class’ların içerisinde tanımlanır ve Abstract Class’ı kalıtan sınıf tarafından override edilmek zorundadır. - Oluşturduğumuz Abstract Class içerisine, Abstract Method yazılırken gövdesi yazılmaz ve daha sonra Abstract Class’ımızı kalıtacağımız sınıfta Abstract Method’u override ederiz
  • 15.
    Interface (Arayüz/Şablon) Nedir? - Diğer sınıflara rehberlik eden bir sınıftır. - İşi diğer sınıflara rehberlik etmek olduğundan sadece metot şablonları tanımlanır. - Metot içerikleri Interface içerisinde yer almaz. - Bir interface istenilen sayıda sınıf ile kullanılabilir. - Interface kullanan sınıflar türetilirken interface tipinde türetilebilir, bu sayede esnek yapılar oluşturulabilir.
  • 16.
    Sealed Class (Sınıf)Nedir ? -Sealed anahtar sözcüğü bir sınıfa uygulandığında diğer sınıfların kendisinden kalıtım almasını önler. Ama sealed sınıf diğer sınıflardan kalıtım alabilir. - Sealed kalıtımı engellediği için bir çeşit güvenlik önlemi olarak düşünebiliriz. - Basit sınıflar değiştirilmesini istemediğimiz kütüphane gibi classlarda kullanılabilir.
  • 17.
    Sealed Class (Sınıf)Nedir ? -normal virtual ile işaretlenmiş bir method override edilerek ezilebiliyor.
  • 18.
    Sealed Class (Sınıf)Nedir ? -Sealed ile işaretlenmiş method’u farklı bir sınıf üzerinden kalıtım yoluyla içerisindeki method override etmeye çalıştığımız da ekran gördüğümüz gibi ilgili method çağrılmamaktadır.