SlideShare a Scribd company logo
C# ile Nesne Yönelimli Programlama
Object Oriented Programming
Sinan BOZKUŞ
sinan.bozkus@bilgeadam.com
- Nesne ve Sınıflardan oluşur.
- İlişkili parçalardan meydana gelir.
- Esnek ve genişletilebilir bir yapı sağlar.
- Tekrar kullanılabilirdir, kod tekrarını önler.
- Yönetimi ve bakımı kolaydır, kodlar düzen içerisindedir.
- Ekip halinde çalışmalar için avantaj sağlar.
- Günümüzde bir çok popüler dil tarafından kullanılır. (C#, Java, Php, Phyton…)
- SOLID İlkeleri
Nesne Yönelimli Programlama
- İçerisinde metotlar ve alanlar barındırabilirler.
- Yapıcı ve Yıkıcı Metotları vardır.
- Sınıflar aynı zamanda birer nesnedir.
- Erişim belirleyiciler (Access Modifiers) ile
istenilen düzeyde erişim sağlanabilir.
- Sınıflar içerisinde tanımlanan değişkenlere field
(alan) adı verilir. Her bir alan nesnenin bir
özelliğidir (property)
Class (Sınıf)
- “New” anahtar sözcüğü ile kullanılır.
- Bir nesneden (class) istenilen sayıda türetilebilir.
- Türetme işlemi yapılırken yapıcı metoda parametre
gönderilebilir.
Instance (Türetmek)
Method (Metot)
- Değer döndüren ve döndürmeyen olmak üzere ikiye
ayrılırlar.
- Metot tanımlamak için sırasıyla erişim belirleyici, dönüş
tipi, metot adı ve aldığı parametler yazılacak şekilde
tanımlanır.
- Metot geriye bir değer döndürmüyorsa dönüş tipi olarak
“void” anahtar sözcüğü, değer döndürüyorsa ilgili tip
yazılır.
- Değer döndürme işlemi metot içerisinde kullanılan
“return” anahtar sözcüğü ile yapılır.
- Metotlar istenilen sayıda ve tipte parameter alabilir. Her bir
parametre virgül ile ayrılarak yazılır.
- Aynı isimde birden fazla overload (aşırı yükleme) metot
tanımlanabilir.
Access Modifiers (Erişim Belirleyiciler)
Özel bir durum olmadıkça
varsayılan olarak değişkenler
ve metotlar private,
classlar ise internal dır.
Constructor (Yapıcı Metot)
- Sanal bellek (RAM) üzerinde nesneyi türeten metottur.
- Sınıf ile aynı isimde tanımlanır.
- Metot olmasına rağmen geriye dönüş tipi olmayan tek
metottur.
- Eğer bir yapıcı metot tanımlanırsa varsayılan yapıcı metot
iptal olur, tanımlanan varsayılan olur.
- Overload yapılabilir, yani birden fazla tanımlanabilir.
- Nesne üretilirken sınıfla ilgili yapılmasını istediğimiz bir
işlem varsa veya sınıfa parameter göndermemiz
gerekiyorsa yapıcı metotları kullanabiliriz.
- Tanımlanmazsa varsayılan olarak parameter almayan
default constructor geçerlidir.
Encapsulation (Kapsülleme)
- 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)
- Bir sınıf üzerindeki özelliklerin bir diğer
sınıfa aktarılmasına yarar.
- 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.
- Bir sınıftan miras alınırken gerekirse yapıcı
metotuna parameter göndererek sınıflar
arasında veri taşıyabiliriz.
Polymorphism (Çok Biçimlilik)
- 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. (Örnek: Class ToString())
- 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.
- Örneğin Int struct, String ise sınıftır.
Struct
- Uygulama içerisinde sabit olan ve uygulama
boyunca hiç değişmeyen seçenekleri
tanımlamak için kullanılır.
- Kod yazarken seçeneklerin anlaşılır olmasını
sağlar.
Enum (=> Enumeration)
- 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 en güzel örnek
MessageBox.Show() dur.
Static (Statik)
- 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.
Abstract (Soyut)
- 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.
Interface (Arayüz/Şablon)
BilgeAdam Nesne Yönelimli Programlama

More Related Content

What's hot

Refactoring for design smells
Refactoring for design smellsRefactoring for design smells
Refactoring for design smellsGanesh Samarthyam
 
CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları
CBÜ - Yazılım Mimarisi ve Tasarımı Ders NotlarıCBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları
CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları
Tuğrul Can Şöllü
 
Java - Generic programming
Java - Generic programmingJava - Generic programming
Java - Generic programming
Riccardo Cardin
 
TypeScript
TypeScriptTypeScript
TypeScript
Fabian Vilers
 
L13 string handling(string class)
L13 string handling(string class)L13 string handling(string class)
L13 string handling(string class)
teach4uin
 
ITT 202 PRINCIPLES OF OBJECT ORIENTED TECHNIQUE
ITT 202 PRINCIPLES OF OBJECT ORIENTED TECHNIQUEITT 202 PRINCIPLES OF OBJECT ORIENTED TECHNIQUE
ITT 202 PRINCIPLES OF OBJECT ORIENTED TECHNIQUE
VinishA23
 
Code Smell, Software Engineering
Code Smell, Software EngineeringCode Smell, Software Engineering
Code Smell, Software Engineering
Anshul Vinayak
 
Introduction to design patterns
Introduction to design patternsIntroduction to design patterns
Introduction to design patterns
Amit Kabra
 
Domain Driven Design (DDD)
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)
Tom Kocjan
 
Java static keyword
Java static keywordJava static keyword
Java static keyword
Ahmed Shawky El-faky
 
Software Design Patterns
Software Design PatternsSoftware Design Patterns
Software Design Patterns
Satheesh Sukumaran
 
Groovy Programming Language
Groovy Programming LanguageGroovy Programming Language
Groovy Programming Language
Aniruddha Chakrabarti
 
Whitebox testing of Spring Boot applications
Whitebox testing of Spring Boot applicationsWhitebox testing of Spring Boot applications
Whitebox testing of Spring Boot applications
Yura Nosenko
 
Software Testing Introduction
Software Testing IntroductionSoftware Testing Introduction
Software Testing Introduction
ArunKumar5524
 
Object-oriented Programming-with C#
Object-oriented Programming-with C#Object-oriented Programming-with C#
Object-oriented Programming-with C#Doncho Minkov
 
Model-driven Software Engineering in practice: Chapter 3 - MDSE Use cases
Model-driven Software Engineering in practice: Chapter 3 - MDSE Use casesModel-driven Software Engineering in practice: Chapter 3 - MDSE Use cases
Model-driven Software Engineering in practice: Chapter 3 - MDSE Use cases
Jordi Cabot
 
Software Architecture: views and viewpoints
Software Architecture: views and viewpointsSoftware Architecture: views and viewpoints
Software Architecture: views and viewpoints
Henry Muccini
 
Object Oriented Programming Concepts using Java
Object Oriented Programming Concepts using JavaObject Oriented Programming Concepts using Java
Object Oriented Programming Concepts using Java
Glenn Guden
 
Introduction to Domain Driven Design
Introduction to Domain Driven DesignIntroduction to Domain Driven Design
Introduction to Domain Driven Design
Christos Tsakostas
 
Object Oriented Design
Object Oriented DesignObject Oriented Design
Object Oriented Design
AMITJain879
 

What's hot (20)

Refactoring for design smells
Refactoring for design smellsRefactoring for design smells
Refactoring for design smells
 
CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları
CBÜ - Yazılım Mimarisi ve Tasarımı Ders NotlarıCBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları
CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları
 
Java - Generic programming
Java - Generic programmingJava - Generic programming
Java - Generic programming
 
TypeScript
TypeScriptTypeScript
TypeScript
 
L13 string handling(string class)
L13 string handling(string class)L13 string handling(string class)
L13 string handling(string class)
 
ITT 202 PRINCIPLES OF OBJECT ORIENTED TECHNIQUE
ITT 202 PRINCIPLES OF OBJECT ORIENTED TECHNIQUEITT 202 PRINCIPLES OF OBJECT ORIENTED TECHNIQUE
ITT 202 PRINCIPLES OF OBJECT ORIENTED TECHNIQUE
 
Code Smell, Software Engineering
Code Smell, Software EngineeringCode Smell, Software Engineering
Code Smell, Software Engineering
 
Introduction to design patterns
Introduction to design patternsIntroduction to design patterns
Introduction to design patterns
 
Domain Driven Design (DDD)
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)
 
Java static keyword
Java static keywordJava static keyword
Java static keyword
 
Software Design Patterns
Software Design PatternsSoftware Design Patterns
Software Design Patterns
 
Groovy Programming Language
Groovy Programming LanguageGroovy Programming Language
Groovy Programming Language
 
Whitebox testing of Spring Boot applications
Whitebox testing of Spring Boot applicationsWhitebox testing of Spring Boot applications
Whitebox testing of Spring Boot applications
 
Software Testing Introduction
Software Testing IntroductionSoftware Testing Introduction
Software Testing Introduction
 
Object-oriented Programming-with C#
Object-oriented Programming-with C#Object-oriented Programming-with C#
Object-oriented Programming-with C#
 
Model-driven Software Engineering in practice: Chapter 3 - MDSE Use cases
Model-driven Software Engineering in practice: Chapter 3 - MDSE Use casesModel-driven Software Engineering in practice: Chapter 3 - MDSE Use cases
Model-driven Software Engineering in practice: Chapter 3 - MDSE Use cases
 
Software Architecture: views and viewpoints
Software Architecture: views and viewpointsSoftware Architecture: views and viewpoints
Software Architecture: views and viewpoints
 
Object Oriented Programming Concepts using Java
Object Oriented Programming Concepts using JavaObject Oriented Programming Concepts using Java
Object Oriented Programming Concepts using Java
 
Introduction to Domain Driven Design
Introduction to Domain Driven DesignIntroduction to Domain Driven Design
Introduction to Domain Driven Design
 
Object Oriented Design
Object Oriented DesignObject Oriented Design
Object Oriented Design
 

Viewers also liked

Learn C# Programming - Variables & Constants
Learn C# Programming - Variables & ConstantsLearn C# Programming - Variables & Constants
Learn C# Programming - Variables & Constants
Eng Teong Cheah
 
C# Variables and Operators
C# Variables and OperatorsC# Variables and Operators
C# Variables and Operators
Sunil OS
 
C# Sunusu - 1
C# Sunusu - 1C# Sunusu - 1
C# Sunusu - 1
Bilgisayar Kulübü
 
Donanım Sunusu - 5
Donanım Sunusu - 5Donanım Sunusu - 5
Donanım Sunusu - 5
Bilgisayar Kulübü
 
Learn C# Programming - Decision Making & Loops
Learn C# Programming - Decision Making & LoopsLearn C# Programming - Decision Making & Loops
Learn C# Programming - Decision Making & Loops
Eng Teong Cheah
 
Variables
VariablesVariables
Variables
Hiba Armouche
 
Variables
 Variables Variables
Variablesshoffma5
 
Types of Variables
Types of VariablesTypes of Variables
Types of Variables
Ali Mustafa
 

Viewers also liked (8)

Learn C# Programming - Variables & Constants
Learn C# Programming - Variables & ConstantsLearn C# Programming - Variables & Constants
Learn C# Programming - Variables & Constants
 
C# Variables and Operators
C# Variables and OperatorsC# Variables and Operators
C# Variables and Operators
 
C# Sunusu - 1
C# Sunusu - 1C# Sunusu - 1
C# Sunusu - 1
 
Donanım Sunusu - 5
Donanım Sunusu - 5Donanım Sunusu - 5
Donanım Sunusu - 5
 
Learn C# Programming - Decision Making & Loops
Learn C# Programming - Decision Making & LoopsLearn C# Programming - Decision Making & Loops
Learn C# Programming - Decision Making & Loops
 
Variables
VariablesVariables
Variables
 
Variables
 Variables Variables
Variables
 
Types of Variables
Types of VariablesTypes of Variables
Types of Variables
 

Similar to BilgeAdam Nesne Yönelimli Programlama

Typescript
TypescriptTypescript
Typescript
Cem Topkaya (MSc)
 
Oop’nin temel ilkeleri
Oop’nin temel ilkeleriOop’nin temel ilkeleri
Oop’nin temel ilkelerimetehanates
 
OOP & SOLID
OOP & SOLIDOOP & SOLID
OOP & SOLID
Ahmet Kucukoglu
 
Introduction to iOS Programming && About XMPPFramework
Introduction to iOS Programming && About XMPPFrameworkIntroduction to iOS Programming && About XMPPFramework
Introduction to iOS Programming && About XMPPFramework
Anıl Sözeri
 
Base presentation
Base presentationBase presentation
Base presentation
Murat YavuzKAPLAN
 
Yazılım Prensipleri ve Code Review Check List
Yazılım Prensipleri ve Code Review Check ListYazılım Prensipleri ve Code Review Check List
Yazılım Prensipleri ve Code Review Check List
Dilaver Demirel
 
Clustering Analysis DBSCAN & SOM
Clustering Analysis DBSCAN & SOMClustering Analysis DBSCAN & SOM
Clustering Analysis DBSCAN & SOM
Ömer Can Koç
 
Effective Java - Madde 1: Yapılandırıcılar yerine statik fabrika(factory) met...
Effective Java - Madde 1: Yapılandırıcılar yerine statik fabrika(factory) met...Effective Java - Madde 1: Yapılandırıcılar yerine statik fabrika(factory) met...
Effective Java - Madde 1: Yapılandırıcılar yerine statik fabrika(factory) met...
İbrahim Kürce
 
1. nesneye dayalı programlama giriş
1. nesneye dayalı programlama   giriş1. nesneye dayalı programlama   giriş
1. nesneye dayalı programlama giriş
karmuhtam
 
007 Uml Modelleri Analiz Ve Tasarim [74 Slides]
007 Uml Modelleri Analiz Ve Tasarim [74 Slides]007 Uml Modelleri Analiz Ve Tasarim [74 Slides]
007 Uml Modelleri Analiz Ve Tasarim [74 Slides]
Erol Bozkurt
 
OSI Standartları-FurkanSimsek-21907040.pptx
OSI Standartları-FurkanSimsek-21907040.pptxOSI Standartları-FurkanSimsek-21907040.pptx
OSI Standartları-FurkanSimsek-21907040.pptx
Furkanimek12
 
Hackerspace PostgreSQL Atolyesi - 1
Hackerspace PostgreSQL Atolyesi - 1Hackerspace PostgreSQL Atolyesi - 1
Hackerspace PostgreSQL Atolyesi - 1
Erkin Çakar
 
Mobilya ve ev eşyalarının derin öğrenme ile 128 kategoride sınııflandırılması...
Mobilya ve ev eşyalarının derin öğrenme ile 128 kategoride sınııflandırılması...Mobilya ve ev eşyalarının derin öğrenme ile 128 kategoride sınııflandırılması...
Mobilya ve ev eşyalarının derin öğrenme ile 128 kategoride sınııflandırılması...
Muhammed GÖKKAYA
 

Similar to BilgeAdam Nesne Yönelimli Programlama (14)

Typescript
TypescriptTypescript
Typescript
 
Oop’nin temel ilkeleri
Oop’nin temel ilkeleriOop’nin temel ilkeleri
Oop’nin temel ilkeleri
 
Ozgur web-gunleri-sunum
Ozgur web-gunleri-sunumOzgur web-gunleri-sunum
Ozgur web-gunleri-sunum
 
OOP & SOLID
OOP & SOLIDOOP & SOLID
OOP & SOLID
 
Introduction to iOS Programming && About XMPPFramework
Introduction to iOS Programming && About XMPPFrameworkIntroduction to iOS Programming && About XMPPFramework
Introduction to iOS Programming && About XMPPFramework
 
Base presentation
Base presentationBase presentation
Base presentation
 
Yazılım Prensipleri ve Code Review Check List
Yazılım Prensipleri ve Code Review Check ListYazılım Prensipleri ve Code Review Check List
Yazılım Prensipleri ve Code Review Check List
 
Clustering Analysis DBSCAN & SOM
Clustering Analysis DBSCAN & SOMClustering Analysis DBSCAN & SOM
Clustering Analysis DBSCAN & SOM
 
Effective Java - Madde 1: Yapılandırıcılar yerine statik fabrika(factory) met...
Effective Java - Madde 1: Yapılandırıcılar yerine statik fabrika(factory) met...Effective Java - Madde 1: Yapılandırıcılar yerine statik fabrika(factory) met...
Effective Java - Madde 1: Yapılandırıcılar yerine statik fabrika(factory) met...
 
1. nesneye dayalı programlama giriş
1. nesneye dayalı programlama   giriş1. nesneye dayalı programlama   giriş
1. nesneye dayalı programlama giriş
 
007 Uml Modelleri Analiz Ve Tasarim [74 Slides]
007 Uml Modelleri Analiz Ve Tasarim [74 Slides]007 Uml Modelleri Analiz Ve Tasarim [74 Slides]
007 Uml Modelleri Analiz Ve Tasarim [74 Slides]
 
OSI Standartları-FurkanSimsek-21907040.pptx
OSI Standartları-FurkanSimsek-21907040.pptxOSI Standartları-FurkanSimsek-21907040.pptx
OSI Standartları-FurkanSimsek-21907040.pptx
 
Hackerspace PostgreSQL Atolyesi - 1
Hackerspace PostgreSQL Atolyesi - 1Hackerspace PostgreSQL Atolyesi - 1
Hackerspace PostgreSQL Atolyesi - 1
 
Mobilya ve ev eşyalarının derin öğrenme ile 128 kategoride sınııflandırılması...
Mobilya ve ev eşyalarının derin öğrenme ile 128 kategoride sınııflandırılması...Mobilya ve ev eşyalarının derin öğrenme ile 128 kategoride sınııflandırılması...
Mobilya ve ev eşyalarının derin öğrenme ile 128 kategoride sınııflandırılması...
 

BilgeAdam Nesne Yönelimli Programlama

  • 1. C# ile Nesne Yönelimli Programlama Object Oriented Programming Sinan BOZKUŞ sinan.bozkus@bilgeadam.com
  • 2. - Nesne ve Sınıflardan oluşur. - İlişkili parçalardan meydana gelir. - Esnek ve genişletilebilir bir yapı sağlar. - Tekrar kullanılabilirdir, kod tekrarını önler. - Yönetimi ve bakımı kolaydır, kodlar düzen içerisindedir. - Ekip halinde çalışmalar için avantaj sağlar. - Günümüzde bir çok popüler dil tarafından kullanılır. (C#, Java, Php, Phyton…) - SOLID İlkeleri Nesne Yönelimli Programlama
  • 3. - İçerisinde metotlar ve alanlar barındırabilirler. - Yapıcı ve Yıkıcı Metotları vardır. - Sınıflar aynı zamanda birer nesnedir. - Erişim belirleyiciler (Access Modifiers) ile istenilen düzeyde erişim sağlanabilir. - Sınıflar içerisinde tanımlanan değişkenlere field (alan) adı verilir. Her bir alan nesnenin bir özelliğidir (property) Class (Sınıf)
  • 4. - “New” anahtar sözcüğü ile kullanılır. - Bir nesneden (class) istenilen sayıda türetilebilir. - Türetme işlemi yapılırken yapıcı metoda parametre gönderilebilir. Instance (Türetmek)
  • 5. Method (Metot) - Değer döndüren ve döndürmeyen olmak üzere ikiye ayrılırlar. - Metot tanımlamak için sırasıyla erişim belirleyici, dönüş tipi, metot adı ve aldığı parametler yazılacak şekilde tanımlanır. - Metot geriye bir değer döndürmüyorsa dönüş tipi olarak “void” anahtar sözcüğü, değer döndürüyorsa ilgili tip yazılır. - Değer döndürme işlemi metot içerisinde kullanılan “return” anahtar sözcüğü ile yapılır. - Metotlar istenilen sayıda ve tipte parameter alabilir. Her bir parametre virgül ile ayrılarak yazılır. - Aynı isimde birden fazla overload (aşırı yükleme) metot tanımlanabilir.
  • 6. Access Modifiers (Erişim Belirleyiciler) Özel bir durum olmadıkça varsayılan olarak değişkenler ve metotlar private, classlar ise internal dır.
  • 7. Constructor (Yapıcı Metot) - Sanal bellek (RAM) üzerinde nesneyi türeten metottur. - Sınıf ile aynı isimde tanımlanır. - Metot olmasına rağmen geriye dönüş tipi olmayan tek metottur. - Eğer bir yapıcı metot tanımlanırsa varsayılan yapıcı metot iptal olur, tanımlanan varsayılan olur. - Overload yapılabilir, yani birden fazla tanımlanabilir. - Nesne üretilirken sınıfla ilgili yapılmasını istediğimiz bir işlem varsa veya sınıfa parameter göndermemiz gerekiyorsa yapıcı metotları kullanabiliriz. - Tanımlanmazsa varsayılan olarak parameter almayan default constructor geçerlidir.
  • 8. Encapsulation (Kapsülleme) - 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) - Bir sınıf üzerindeki özelliklerin bir diğer sınıfa aktarılmasına yarar. - 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. - Bir sınıftan miras alınırken gerekirse yapıcı metotuna parameter göndererek sınıflar arasında veri taşıyabiliriz.
  • 10. Polymorphism (Çok Biçimlilik) - 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. (Örnek: Class ToString())
  • 11. - 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. - Örneğin Int struct, String ise sınıftır. Struct
  • 12. - Uygulama içerisinde sabit olan ve uygulama boyunca hiç değişmeyen seçenekleri tanımlamak için kullanılır. - Kod yazarken seçeneklerin anlaşılır olmasını sağlar. Enum (=> Enumeration)
  • 13. - 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 en güzel örnek MessageBox.Show() dur. Static (Statik)
  • 14. - 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. Abstract (Soyut)
  • 15. - 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. Interface (Arayüz/Şablon)