Aracılığıyla paylaş


Nesne Odaklı Programlama (C# ve Visual Basic)

Visual Basic ve C# gibi, .NET Framework'de yönetilen tüm diller; kapsülleme, devralma ve çok biçimlilik dahil, nesne yönelimli programlama için tam destek sağlar.

Kapsülleme, bir ilişkili özellikler, yöntemler veya diğer öğeler grubunun, tek bir birim veya nesne olarak işlem gördüğü anlamına gelir.

Devralma mevcut bir sınıfı temel alan yeni sınıflar oluşturma becerisidir.

Çok biçimlilik, her sınıf aynı özellikleri veya yöntemleri farklı şekilde uygulasa da birbirinin yerine kullanılabilen birden fazla sınıfınız olabileceği anlamına gelir.

Bu bölüm aşağıdaki kavramları açıklar:

  • Sınıflar ve Nesneler

    • Sınıf Üyeleri

      Özellikler ve Alanlar

      Yöntemler

      Oluşturucular

      Yıkıcılar

      Olaylar

      İç İçe Sınıflar

    • Değiştiricilere ve Erişim Düzeylerine Erişim

    • Sınıf Oluşturma

    • Statik (Paylaşılan) Sınıflar ve Üyeleri

    • Anonim Türler

  • Kalıtım

    • Üyeleri Geçersiz Kılma
  • Arayüzler

  • Genel Türler

  • Temsilciler

Sınıflar ve Nesneler

Sınıf ve nesne terimleri bazen birbirlerinin yerine kullanılabilir fakat aslında nesneler sınıfların kullanılabilir örnekleri iken, sınıflar nesnelerin türünü açıklar.Bu nedenle bir nesne oluşturma işlemine örnekleme denir.Plan benzerliği kullanıldığında, bir sınıf plandır ve nesne, o planla yapılan bir binadır.

Sınıf tanımlamak için:

Class SampleClass
End Class
class SampleClass
{
}

Visual Basic ve C# ayrıca, büyük bir nesneler dizisi oluşturmanız gerektiğinde ve bunun için çok fazla bellek harcamak istemediniz durumlarda faydalı olacak, yapılar adı verilen hafif bir sınıflar sürümü sağlar.

Yapı tanımlamak için:

Structure SampleStructure
End Structure
struct SampleStruct
{
}

Daha fazla bilgi için bkz:

Sınıf Üyeleri

Her sınıf, sınıf verilerini, sınıf davranışını tanımlayan yöntemleri ve farklı sınıflar ve nesneler arasındaki iletişimi sağlayan olayları tanımlayan, farklı sınıf üyeleri içerebilir.

Özellikler ve Alanlar

Alanlar ve özellikler bir nesnenin içerdiği bilgileri temsil eder.Alanlar, okunabilir ve doğrudan ayarlanabilir olduklarından değişkenlere benzer.

Alan tanımlamak için:

Class SampleClass
    Public SampleField As String
End Class
Class SampleClass
{
    public string sampleField;
}

Özellikler, değerlerin nasıl ayarlanacağı veya döndürüleceği konusunda daha fazla denetim sağlayan get ve set yordamlarını içerir.

C# ve Visual Basic kullanarak; özellik değerini depolamak üzere özel bir alan oluşturabilir; veya bu alanı arka planda otomatik olarak oluşturan ve özellik yordamları için temel mantığı sağlayan, otomatik uygulamalı olarak anılan özellikleri kullanabilirsiniz.

Otomatik uygulanan bir özellik tanımlamak için:

Class SampleClass
    Public Property SampleProperty as String
End Class
class SampleClass
{
    public int SampleProperty { get; set; }
}

Okuma ve yazma özellik değeri için bazı ek işlemler gerçekleştirmeniz gerekiyorsa, özellik değerini depolamak için bir alan tanımlayın ve depolanması ve alınması için gereken mantığı sağlayın:

Class Samplelass
    Private m_Sample As String
    Public Property Sample() As String
        Get
            ' Return the value stored in the field.
            Return m_Sample
        End Get
        Set(ByVal Value As String)
            ' Store the value in the field.
            m_Sample = Value
        End Set
    End Property
End Class
class SampleClass
{
    private int _sample;
    public int Sample
    {
        // Return the value stored in a field.
        get { return _sample; }
        // Store the value in the field.
        set { _sample = value; }
    }
}

Özelliklerin çoğu özellik değerini ayarlamak ve almak için yöntemlere ve yordamlara sahiptir.Ancak değiştirilmelerini veya okunmalarını kısıtlamak için salt okunur veya salt yazılır özellikler oluşturabilirsiniz.Visual Basic'te ReadOnly ve WriteOnly anahtar sözcüklerini kullanabilirsiniz.C# dilinde, get veya set özellik yöntemini yoksayabilirsiniz.Ancak Visual Basic ve C# içinde otomatik olarak uygulanan özellikler salt okunur veya salt yazılır olamaz.

Daha fazla bilgi için bkz:

Yöntemler

yöntem, nesnenin gerçekleştirebileceği bir eylemdir.

[!NOT]

Visual Basic'te, bir yöntem oluşturmanın iki yolu vardır: yöntem bir değer döndürmezse Sub deyimi; yöntem bir değer döndürürse Function deyimi kullanılır.

Bir sınıfın yöntemini tanımlamak için:

Class SampleClass
    Public Function SampleFunc(ByVal SampleParam As String)
        ' Add code here
    End Function
End Class
class SampleClass
{
    public int sampleMethod(string sampleParam)
    {
        // Insert code here
    }
}

Bir sınıfta, parametre sayıları veya parametre türleri farklı olan aynı yönteme ilişkin çeşitli uygulamalar veya aşırı yüklemeler olabilir.

Bir yöntemi aşırı yüklemek için:

Overloads Sub Display(ByVal theChar As Char)
    ' Add code that displays Char data.
End Sub
Overloads Sub Display(ByVal theInteger As Integer)
    ' Add code that displays Integer data.
End Sub
public int sampleMethod(string sampleParam) {};
public int sampleMethod(int sampleParam) {}

Çoğu durumda, sınıf tanımında bir yöntem bildirirsiniz.Ancak Visual Basic ve C# aynı zamanda mevcut sınıfa, sınıfın gerçek tanımı dışında kalan yöntemler eklemenize olanak tanıyan genişletme yöntemlerini destekler.

Daha fazla bilgi için bkz:

Oluşturucular

Oluşturucular, belirli bir türde nesne oluşturulduğunda otomatik olarak yürütülen sınıf yöntemleridir.Kurucular genellikle yeni nesnenin veri öğelerini başlatır.Bir sınıf oluşturulduğunda oluşturucu yalnızca bir kez çalıştırılabilir.Ayrıca, oluşturucudaki kod her zaman sınıf içindeki diğer kodlardan daha önce çalışır.Ancak, diğer herhangi bir yöntemde olduğu gibi birden fazla oluşturucu yükü oluşturabilirsiniz.

Bir sınıf için bir kurucu tanımlamak üzere:

Class SampleClass
    Sub New(ByVal s As String)
        // Add code here.
    End Sub
End Class
public class SampleClass
{
    public SampleClass()
    {
        // Add code here
    }
}

Daha fazla bilgi için bkz:

Yıkıcılar

Yıkıcılar, sınıfların örneklerini yok etmek üzere kullanılır..NET Framework'te çöp toplayıcı, uygulamanızda yönetilen nesneler için bellek sağlanmasını ve ayrılmasını otomatik olarak yönetir.Ancak, uygulamanız tarafından oluşturulan yönetilmeyen kaynakları temizlemek için yine de yok edicilere ihtiyacınız olabilir.Bir sınıf için yalnızca bir yıkıcı olabilir.

.NET Framework'teki yok ediciler ve çöp toplama hakkında daha fazla bilgi için bkz. Çöp Toplama.

Olaylar

Olaylar, ilgi çekici bir durum oluştuğunda diğer sınıfları veya nesneleri uyaran bir sınıf veya nesneyi etkinleştirir.Etkinliği gönderen (veya harekete geçiren) sınıf yayımcı olarak adlandırılır ve etkinliği alan (veya işleyen) sınıflar aboneler olarak adlandırılır.Olaylar, nasıl oluştukları ve işlendikleri hakkında daha fazla bilgi için bkz. Olaylar Oluşturma ve İşleme.

İç İçe Sınıflar

Başka bir sınıfla tanımlanmış bir sınıf iç içe olarak adlandırılır.Varsayılan olarak, iç içe geçmiş özel sınıftır.

Class Container
    Class Nested
    ' Add code here.
    End Class
End Class
class Container
{
    class Nested
    {
        // Add code here.
    }
}

İç içe geçmiş sınıfının bir örneğini oluşturmak için kapsayıcı sınıfının arkasına bir nokta koyun ve sonra iç içe geçmiş sınıf adını kullanın:

Dim nestedInstance As Container.Nested = New Container.Nested()
Container.Nested nestedInstance = new Container.Nested()

Değiştiricilere ve Erişim Düzeylerine Erişim

Tüm sınıflar ve sınıf üyeleri, erişim değiştiricilerini kullanarak diğer sınıflara hangi erişim düzeyini sağlayacaklarını belirleyebilir.

Aşağıdaki erişim değiştiriciler kullanılabilir:

Visual Basic Değiştiricisi

C# Değiştiricisi

Tanım

Public (Visual Basic)

genel

Türe veya üyeye aynı derlemedeki kod ile veya başvuran bir derlemeyle erişim sağlanabilir.

Özel (Visual Basic)

private

Türe veya üyeye aynı sınıftaki kod ile erişim sağlanabilir.

Korumalı (Visual Basic)

korumalı

Türe veya üyeye aynı sınıftaki veya türetilmiş bir sınıftaki kod ile erişim sağlanabilir.

Arkadaş (Visual Basic)

Türe veya üyeye aynı derlemedeki kod ile erişim sağlanabilir ancak farklı derlemeyle sağlanamaz.

Protected Friend

protected internal

Türe veya üyeye aynı derlemedeki kod ile veya başka bir derlemedeki türetilmiş sınıfla erişim sağlanabilir.

Daha fazla bilgi için, bkz. Visual Basic'de Erişim Düzeyleri ve Erişim Değiştiricileri (C# Programlama Kılavuzu).

Sınıf Oluşturma

Bir nesne oluşturmak için bir sınıf örneği başlatmanız veya sınıf örneği oluşturmanız gerekir.

Dim sampleObject as New SampleClass()
SampleClass sampleObject = new SampleClass();

Bir sınıf başlatıldıktan sonra örneğin özelliklerine ve alanlarına değerler atayabilir, sınıf yöntemini çağırabilirsiniz.

' Set a property value.
sampleObject.SampleProperty = "Sample String"
' Call a method.
sampleObject.SampleMethod()
// Set a property value.
sampleObject.sampleProperty = "Sample String";
// Call a method.
sampleObject.sampleMethod();

Sınıf örnekleme işlemi sırasında özelliklere değerler atamak için nesne başlatıcıları kullanın:

Dim sampleObject = New SampleClass With 
    {.FirstProperty = "A", .SecondProperty = "B"}
// Set a property value.
SampleClass sampleObject = new SampleClass 
    { FirstProperty = "A", SecondProperty = "B" };

Daha fazla bilgi için bkz:

Statik (Paylaşılan) Sınıflar ve Üyeleri

Sınıfın statik (Visual Basic'te paylaşılan) üyesi, bir sınıfın tüm örnekleri tarafından paylaşılan bir özellik, yordam veya alandır.

(Paylaşılan) statik bir üye tanımlamak için:

Class SampleClass
    Public Shared SampleString As String = "Sample String"
End Class
static class SampleClass
{
    public static string SampleString = "Sample String";
}

Statik (paylaşılan) üyeye erişmek için sınıfın adını sınıf nesnesi oluşturmadan kullanın:

MsgBox(SampleClass.SampleString)
Console.WriteLine(SampleClass.SampleString);

C#'deki statik (paylaşılan) sınıflar ve Visual Basic'deki modüller yalnızca statik (paylaşılan) üyelere sahiptir ve örnekleri oluşturulamaz.Ayrıca statik (paylaşılan) üyeler statik olmayan (paylaşılmayan) özelliklere, alanlara veya yöntemlere erişemez.

Daha fazla bilgi için bkz:

Anonim Türler

Anonim türler, veri türü için bir sınıf tanımı yazmaksızın nesneleri oluşturmanızı sağlar.Bunun yerine derleyici sizin için bir sınıf oluşturur.Sınıfın kullanılabilir adı yok ve nesneyi bildirirken belirttiğiniz özellikleri içeriyor.

Anonim türünün bir örneğini oluşturmak için:

' sampleObject is an instance of a simple anonymous type.
Dim sampleObject = 
    New With {Key .FirstProperty = "A", .SecondProperty = "B"}
// sampleObject is an instance of a simple anonymous type.
var sampleObject = 
    new { FirstProperty = "A", SecondProperty = "B" };

Daha fazla bilgi için bkz:

Kalıtım

Devralma, başka bir sınıfta tanımlanan davranışı yeniden kullanan, genişleten ve değiştiren yeni sınıflar oluşturmanıza olanak sağlar.Üyeleri devralınan sınıf taban sınıf ve bu üyeleri devralan sınıf türetilmiş sınıf olarak adlandırılır.Ancak C# ve Visual Basic içindeki tüm sınıflar örtük olarak, .NET sınıf hiyerarşisini destekleyen ve tüm sınıflara alt düzey hizmetler sunan Object sınıfından devralır.

[!NOT]

.NET Framework'te yönetilen diller birden çok devralmayı desteklemez yani, derlenen bir sınıf için yalnızca bir temel sınıf belirtebilirsiniz.

Bir temel sınıfından devralmak için:

Class DerivedClass
    Inherits BaseClass
End Class
class DerivedClass:BaseClass{}

Varsayılan olarak, tüm sınıflar devralınabilir.Ancak temel sınıfta bir sınıfın kullanılıp kullanılmayacağını belirtebilirsiniz veya yalnızca temel sınıf olarak kullanılacak bir sınıf oluşturabilirsiniz.

Bir sınıfın temel sınıf olarak kullanılamayacağını belirtmek için:

NotInheritable Class SampleClass
End Class
public sealed class A { }

Yalnızca temel sınıf olarak kullanılabilecek ve başlatılamayacak bir sınıf belirtmek için:

MustInherit Class BaseClass
End Class
public abstract class B { }

Daha fazla bilgi için bkz:

Üyeleri Geçersiz Kılma

Varsayılan olarak, türetilmiş bir sınıf tüm üyelerini kendi temel sınıfından devralır.Devralınan üye davranışını değiştirmek istiyorsanız, onu geçersiz kılmanız gerekir.Diğer bir deyişle, türetilmiş bir sınıf içindeki yöntemin, özelliğin veya olayın yeni bir uygulamasını tanımlayabilirsiniz.

Özelliklerin ve yöntemlerin nasıl geçersiz kılınacağını denetlemek için aşağıdaki değiştiriciler kullanılır:

Visual Basic Değiştiricisi

C# Değiştiricisi

Tanım

Geçersiz Kılınabilir (Visual Basic)

virtual (C# Başvurusu)

Sınıf üyesinin türetilmiş bir sınıf tarafından geçersiz kılınmasına izin verir.

Geçersiz Kılmalar (Visual Basic)

override (C# Başvurusu)

Temel sınıfta tanımlanan sanal bir (geçersiz kılınabilir) üyeyi geçersiz kılar.

NotOverridable (Visual Basic)

Desteklenmiyor

Devralınan bir sınıfta bir üyenin geçersiz kılınmasını önler.

MustOverride (Visual Basic)

abstract (C# Başvurusu)

Bir sınıf üyesinin derlenen sınıfta geçersiz kılınması gerekir.

Shadows (Visual Basic)

new Değiştiricisi (C# Başvurusu)

Temel sınıftan devralınan üyeyi gizler

Arayüzler

Sınıflar gibi arabirimler bir özellik kümesi, yöntemler ve olaylar tanımlar.Ancak sınıflardan farklı olarak, arabirimler uygulama sağlamaz.Bunlar sınıflara göre uygulanır ve sınıflardan ayrı varlıklar olarak tanımlanır.Bir arabirim bir sözleşmeyi temsil eder, başka deyişle bir arabirimi uygulayan sınıf, o arabirimi her yönüyle, tam olarak tanımlandığı şekliyle uygulamalıdır.

Arabirim tanımlamak için:

Public Interface ISampleInterface
    Sub DoSomething()
End Interface
interface ISampleInterface
{
    void doSomething();
}

Bir sınıf içinde arabirim uygulamak için:

Class SampleClass
    Implements ISampleInterface
    Sub DoSomething
        ' Method implementation.
    End Sub
End Class
class SampleClass : ISampleInterface
{
    void ISampleInterface.doSomething()
    {
        // Method implementation.
    }
}

Daha fazla bilgi için bkz:

Genel Türler

.NET Framework'deki sınıflar, yapılar, arabirimler ve yöntemler depolayabildikleri veya kullanabildikleri nesnelerin türlerini tanımlayan tür parametreleri içerebilir.Genel türlerin en yaygın örneği, bir koleksiyonda depolanacak nesnelerin türünü belirleyebileceğiniz bir koleksiyondur.

Genel bir sınıf tanımlamak için:

Class SampleGeneric(Of T)
    Public Field As T
End Class
Public class SampleGeneric<T> 
{
    public T Field;
}

Genel bir sınıfın örneğini oluşturmak için:

Dim sampleObject As New SampleGeneric(Of String)
sampleObject.Field = "Sample string"
SampleGeneric<string> sampleObject = new SampleGeneric<string>();
sampleObject.Field = "Sample string";

Daha fazla bilgi için bkz:

Temsilciler

Temsil, yöntem imzasını tanımlayan bir türdür ve uyumlu imzaya sahip tüm yöntemlere başvuru sağlar.Yöntemi temsilci aracılığıyla çağırabilirsiniz.Temsilciler, yöntemleri diğer yöntemlere bağımsız değişken olarak geçirmek için kullanılır.

[!NOT]

Olay işleyicileri, temsilciler aracılığıyla çağrılan yöntemlerden başka bir şey değildir.Temsilcileri olay işlemede kullanma hakkında daha fazla bilgi için bkz. Olaylar Oluşturma ve İşleme.

Temsilci oluşturmak için:

Delegate Sub SampleDelegate(ByVal str As String)
public delegate void SampleDelegate(string str);

Temsilci tarafından belirtilen imzayla eşleşen bir yönteme başvuru oluşturmak için:

Class SampleClass
    ' Method that matches the SampleDelegate signature.
    Sub SampleSub(ByVal str As String)
        ' Add code here.
    End Sub
    ' Method that instantiates the delegate.
    Sub SampleDelegateSub()
        Dim sd As SampleDelegate = AddressOf SampleSub
        sd("Sample string")
    End Sub
End Class
class SampleClass
{
    // Method that matches the SampleDelegate signature.
    public static void sampleMethod(string message)
    {
        // Add code here.
    }
    // Method that instantiates the delegate.
    void SampleDelegate()
    {
        SampleDelegate sd = sampleMethod;
        sd("Sample string");
    }
}

Daha fazla bilgi için bkz:

Ayrıca bkz.

Kavramlar

C# Programlama Kılavuzu

Diğer Kaynaklar

Visual Basic Programlama Kılavuzu