C# Class

Class (Sınıf) nedir ?
Class, verileri (fields) ve davranışları (methods) içine alan code bloğudur.
public class Member{// Fieldspublic string Name;public string Surname;// Methodspublic void OldMembers() {}public void NewMembers(){}}
Object (Nesne) nedir ?
Object, class’ın bir örneğidir (instance), bir object yaratırken “new” operatörünü kullanırız.
Member member = new Member();Constructors nedir ?
Constructor bir object yaratıldığında otomatik olarak çalışır.
- Constructor metodunun ismi class ismi ile aynı olmalıdır.
- Constructor void olamaz.
- Constructor’ın return type’ ı yoktur.
- Constructor metodlar overload edilebilirler.
- “this” anahtar kelimesi ile constructor metodumuzu çağırabiliriz.
Overloading nedir ?
Overloading, aynı isme sahip fakat farklı signatureları olan metodları oluşturmadır.
Signature nedir ?
Signature, bir metodun içerdiği parametrelerin sayısı, tipi ve sırasıdır.
Default Constructor nedir ?
Hiç parametresi olmayan constructor metoduna default constructor denir.
public class Member{
public int Id;public string Name;public string SurName;public List<Book> Books;// Default constructorpublic Member(){// initialize the list.Books = new List<Book>();}public Member(int id): this() // Calls the default constructor{this.Id = id;}}
Metod nedir ?
Metodlar bir görevi yapan komutlar grubudur.
Metodları 2 kategoride inceleyebiliriz,
- Standart kütüphanelerde önceden tanımlanmış metodlar.
- Kullanıcı tarafından tanımlanan metodlar.
Bir metodun değişken sayıda parametre almasını sağlamak için “params” anahtar kelimesini kullanırız.
public class Calculator
{
public int Sum(params int[] numbers) {}
}Field ve Property nedir ?
Field, alan yada veri olarak tanımlayabiliriz.
Property, bir sınıfın fieldlarına erişim sağlamak için kullanılan bir sınıf üyesi türüdür, “set” ve “get” metodlarını içerir.
public class Member
{
private string _name; //Field
public string Name //Property
{
get { return _name; }
set { _name = value; }
}
}
Encapsulation nedir ?
Encapsulation, sınıf içerisindeki field ve davranışları gizleme yeteneğini ifade eder, bu field başka sınıflar içerisinden erişilemez ancak property vasıtasıyla erişilebilir.
//Encapsulation
public class Member
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
}Access Modifiers nedir ?
C# da sınıflar içerisinde, değişkenlere, metodlara ve diğer üyelere erişim sağlarken yada erişimi yasaklarken access modifiers kullanılır.
5 adet access modifiers vardır ; public, private, protected, internal ve protected internal.
- public: class üyelerine her yerden erişim açıktır.
- private: class üyelerine sadece class içinde erişim sağlanabilir.
- protected: class üyelerine class içerisinde veya bu class’tan türemiş classlardan erişim sağlanabilir.
- internal: class üyelerine sadece aynı assembly (proje) içerisinde erişim sağlanabilir.
- protected internal: class üyelerine aynı assembly (proje) içerisinde yada bu classtan türetilmiş class içerisinde erişim sağlanabilir.
Class Coupling nedir ?
Birbirleriyle bağlantılı classların ölçüsüdür.
Birbirleriyle bağlantılı classlarda değişiklik yapmak çoğu zaman zor olabilir çünkü yapılan değişiklik çok fazla classı etkileyebilir bu tür classlara tightly coupled classlar denir. Geliştirilen yazılımın daha esnek olmasını sağlamak için loosely coupled bağlantılar tercih edilebilir.
Inheritance nedir ?
Biri diğerinden türeyen classlar arasındaki ilişkiye inheritance diyebiliriz.
İki class arasında Is-A ilişkisi vardır ; A Car is a Vehicle.
public class Car : Vehicle { }Inheritance bize yazılan codu tekrar kullanma ve polimorfik yapılar oluşturma avantajları sunar fakat aynı zamanda classlar arasında tightly coupled ilişkiside oluşur.
Composition nedir ?
Matematikteki f(g(x)) ilişkisiyle açıklanabilir bir class diğer bir classı içerir, classlar arasında Has-A ilişkisi vardır ; A Car has an Engine.
Composition bize class lar arasında loosely coupled ilişki sağlar aynı zamanda esnek bir yapı oluşturmamıza olanak verir.
public class Engine
{
}
public class Car
{
public Car()
{
var engine = new Engine();
}
}Polymorphism nedir ?
Inherit edilen class’ın metodu override edilebilir, bu şekilde inherit edilen classlarda metodların değiştirilerek kunllanılmasına polimorfizm denir.
public class Shape
{
public virtual Draw()
{
// Default tanımlanan metod
}
}
public class Circle : Shape
{
public override Draw()
{
// Değişikliğe uğratılıp kullanılan metod
}Abstract Class nedir ?
Abstract class, instance edilemeyen özel bir class türüdür. Bazen class üyelerini base classda implement etmek doğru olmayabilir böyle bir durumda abstract class kullanmak gerekir.
public abstract class Shape
{
public abstract Draw();
}public class Square: Shape
{
public override Draw()
{
}
}
Abstract class içerisinde içi boş abstract metodlar tanımlanabilir, bu metodlar alt classlar tarafından override edilmek zorundadır.