ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
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.

More Related Content

C# OOP

  • 1. 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
  • 2. 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) ?
  • 3. 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.
  • 4. 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
  • 5. 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.
  • 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 (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
  • 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.