C # - Kapsülleme
Encapsulation"fiziksel veya mantıksal bir paket içinde bir veya daha fazla öğeyi kapatma işlemi" olarak tanımlanır. Nesne yönelimli programlama metodolojisinde kapsülleme, uygulama ayrıntılarına erişimi engeller.
Soyutlama ve kapsülleme, nesne yönelimli programlamadaki ilgili özelliklerdir. Soyutlama, ilgili bilgilerin görünür hale getirilmesine izin verir ve kapsülleme, bir programcının istenen soyutlama düzeyini uygulamasını sağlar .
Kapsülleme kullanılarak gerçekleştirilir access specifiers. Biraccess specifierbir sınıf üyesinin kapsamını ve görünürlüğünü tanımlar. C # aşağıdaki erişim belirticilerini destekler -
- Public
- Private
- Protected
- Internal
- Dahili korumalı
Public Access Specifier
Genel erişim belirticisi, bir sınıfın üye değişkenlerini ve üye işlevlerini diğer işlevlere ve nesnelere göstermesine izin verir. Herkese açık herhangi bir üyeye sınıf dışından erişilebilir.
Aşağıdaki örnek bunu göstermektedir -
using System;
namespace RectangleApplication {
class Rectangle {
//member variables
public double length;
public double width;
public double GetArea() {
return length * width;
}
public void Display() {
Console.WriteLine("Length: {0}", length);
Console.WriteLine("Width: {0}", width);
Console.WriteLine("Area: {0}", GetArea());
}
}//end class Rectangle
class ExecuteRectangle {
static void Main(string[] args) {
Rectangle r = new Rectangle();
r.length = 4.5;
r.width = 3.5;
r.Display();
Console.ReadLine();
}
}
}
Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -
Length: 4.5
Width: 3.5
Area: 15.75
Önceki örnekte, uzunluk ve genişlik üye değişkenleri bildirilmiştir publicolarak adlandırılmış Rectangle sınıfının bir örneği kullanılarak Main () işlevinden erişilebilirler. r.
Üye işlevi Display () ve GetArea () , sınıfın herhangi bir örneğini kullanmadan bu değişkenlere doğrudan erişebilir.
Üye işlevleri Display () de bildirilirpublic, dolayısıyla adı verilen Rectangle sınıfının bir örneği kullanılarak Main () ' den de erişilebilir.r.
Özel Erişim Tanımlayıcı
Özel erişim belirteci, bir sınıfın üye değişkenlerini ve üye işlevlerini diğer işlevlerden ve nesnelerden gizlemesine izin verir. Yalnızca aynı sınıfın işlevleri, özel üyelerine erişebilir. Bir sınıfın bir örneği bile özel üyelerine erişemez.
Aşağıdaki örnek bunu göstermektedir -
using System;
namespace RectangleApplication {
class Rectangle {
//member variables
private double length;
private double width;
public void Acceptdetails() {
Console.WriteLine("Enter Length: ");
length = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Enter Width: ");
width = Convert.ToDouble(Console.ReadLine());
}
public double GetArea() {
return length * width;
}
public void Display() {
Console.WriteLine("Length: {0}", length);
Console.WriteLine("Width: {0}", width);
Console.WriteLine("Area: {0}", GetArea());
}
}//end class Rectangle
class ExecuteRectangle {
static void Main(string[] args) {
Rectangle r = new Rectangle();
r.Acceptdetails();
r.Display();
Console.ReadLine();
}
}
}
Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -
Enter Length:
4.4
Enter Width:
3.3
Length: 4.4
Width: 3.3
Area: 14.52
Önceki örnekte, uzunluk ve genişlik üye değişkenleri bildirilmiştir private, dolayısıyla Main () işlevinden erişilemezler. Üye fonksiyonları AcceptDetails () ve Display () bu değişkenlere erişebilir. Üye fonksiyonları AcceptDetails () ve Display () bildirildiğindenpublic, bunlara Main () adlı Rectangle sınıfının bir örneği kullanılarak erişilebilirler.r.
Korumalı Erişim Belirteci
Korumalı erişim belirticisi, bir alt sınıfın, temel sınıfının üye değişkenlerine ve üye işlevlerine erişmesine izin verir. Bu şekilde kalıtımın uygulanmasına yardımcı olur. Bunu miras bölümünde daha ayrıntılı olarak tartışacağız.
Dahili Erişim Belirteci
Dahili erişim belirticisi, bir sınıfın üye değişkenlerini ve üye işlevlerini geçerli derlemedeki diğer işlevlere ve nesnelere göstermesine izin verir. Başka bir deyişle, dahili erişim tanımlayıcısına sahip herhangi bir üyeye, üyenin tanımlandığı uygulama içinde tanımlanan herhangi bir sınıf veya yöntemden erişilebilir.
Aşağıdaki program bunu göstermektedir -
using System;
namespace RectangleApplication {
class Rectangle {
//member variables
internal double length;
internal double width;
double GetArea() {
return length * width;
}
public void Display() {
Console.WriteLine("Length: {0}", length);
Console.WriteLine("Width: {0}", width);
Console.WriteLine("Area: {0}", GetArea());
}
}//end class Rectangle
class ExecuteRectangle {
static void Main(string[] args) {
Rectangle r = new Rectangle();
r.length = 4.5;
r.width = 3.5;
r.Display();
Console.ReadLine();
}
}
}
Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -
Length: 4.5
Width: 3.5
Area: 15.75
Önceki örnekte, üye işlevinin GetArea () herhangi bir erişim belirteci ile bildirilmediğine dikkat edin. Öyleyse, herhangi birinden bahsetmezsek, bir sınıf üyesinin varsayılan erişim tanımlayıcısı ne olurdu? Buprivate.
Korumalı Dahili Erişim Belirteci
Korunan dahili erişim belirticisi, bir sınıfın üye değişkenlerini ve üye işlevlerini, aynı uygulama içindeki bir alt sınıf dışında diğer sınıf nesnelerinden ve işlevlerinden gizlemesine olanak tanır. Bu, kalıtım uygulanırken de kullanılır.