C# ile nesne yönelimli programlama (Object-Oriented Programming - OOP) yapmak için aşağıdaki temel kavramları ve adımları takip edebilirsiniz:
1. **Sınıflar ve Nesneler (Classes and Objects)
* OOP'de, programınızdaki varlıkları (verileri ve işlevleri) sınıflar olarak düşünün. Bir sınıf, belirli bir nesnenin (instance) özelliklerini ve davranışlarını tanımlar. Örneğin, bir "Araba" sınıfı oluşturabilirsiniz.
```csharp
class Araba
{
// Araba sınıfının özellikleri (alanları)
public string Marka;
public string Model;
// Araba sınıfının davranışları (metodları)
public void Calistir()
{
Console.WriteLine("Araba çalıştı.");
}
}
```
2. **Nesne Oluşturma (Object Instantiation)
* Sınıfı kullanmak için bir nesne oluşturmanız gerekir. Bu nesne, sınıfın bir örneğidir.
```csharp
Araba myAraba = new Araba();
```
3. **Özelliklere ve Metodlara Erişim (Accessing Properties and Methods)
* Oluşturulan nesne üzerinden sınıfın özelliklerine ve metodlarına erişebilirsiniz.
```csharp
myAraba.Marka = "Toyota";
myAraba.Model = "Corolla";
myAraba.Calistir();
```
4. **Kalıtım (Inheritance)
* Kalıtım, bir sınıfın başka bir sınıftan özellikleri ve metodları devralmasını sağlar. Örneğin, "Kamyon" sınıfı "Araba" sınıfından özellikleri devralabilir.
```csharp
class Kamyon : Araba
{
// Kamyon sınıfına özgü özellikler ve metodlar eklenebilir
public int YükKapasitesi;
}
```
5. **Soyut Sınıflar ve Arabirimler (Abstract Classes and Interfaces)
* Soyut sınıflar, diğer sınıflar için temel bir şablondur ve somut örneklere sahip olamazlar. Arabirimler ise sınıfların uygulaması gereken bir dizi davranışı tanımlar.
```csharp
abstract class Sekil
{
public abstract double AlanHesapla();
}
interface IDrawable
{
void Ciz();
}
```
6. **Çok Biçimlilik (Polymorphism)
* Çok biçimlilik, farklı sınıfların aynı arabirim aracılığıyla kullanılabilmesini ifade eder. Bu, farklı nesnelerin aynı metodları kullanabilmesini sağlar.
```csharp
Araba myAraba = new Araba();
Kamyon myKamyon = new Kamyon();
List<Araba> araclar = new List<Araba>();
araclar.Add(myAraba);
araclar.Add(myKamyon);
foreach (Araba arac in araclar)
{
arac.Calistir(); // Araba veya Kamyon sınıfı hangisi olursa olsun çalıştırılabilir.
}
```
7. **Kapsülleme (Encapsulation)
* Kapsülleme, sınıfın iç verilerini (alanları) gizlemeyi ve sadece belirli metotlar aracılığıyla erişilebilir kılmayı ifade eder. Getter ve setter metodları ile bu erişimi kontrol edebilirsiniz.
```csharp
private int yas;
public int Yas
{
get { return yas; }
set { yas = value; }
}
```
Bu adımlar, C# ile nesne yönelimli programlamanın temel konseptlerini kapsar. Nesne yönelimli programlama, kodun daha düzenli, modüler ve anlaşılır olmasına yardımcı olur ve büyük projelerde özellikle faydalıdır.