PDA

View Full Version : سطوح دسترسی در کلاس ها



1485159
یک شنبه 26 اردیبهشت 1389, 19:21 عصر
سلام
میخواستم بدونم که وقتی یه متغیر رو در یک کلاس تعریف میکنیم به چن صورت میتونیم سطح دسترسی به اون متغیر رو تعیین کنیم؟

رها
یک شنبه 26 اردیبهشت 1389, 19:43 عصر
سلام
به مثال زیر دقت کنی همه چی دستت می یاد


Example 2-1: Examples of Classes and Objects type
TAccount = class
private
fCustomer: string; // name of customer
fNumber: Cardinal; // account number
fBalance: Currency; // current account balance
end;
TSavingsAccount = class(TAccount)
private
fInterestRate: Integer; // annual percentage rate, scaled by 1000
end;
TCheckingAccount = class(TAccount)
private
fReturnChecks: Boolean;
end;
TCertificateOfDeposit = class(TSavingsAccount)
private
fTerm: Cardinal; // CD maturation term, in days
end;

var
CD1, CD2: TAccount;
begin
CD1 := TCertificateOfDeposit.Create;
CD2 := TCertificateOfDeposit.Create;

Felony
یک شنبه 26 اردیبهشت 1389, 21:17 عصر
سلام
به مثال زیر دقت کنی همه چی دستت می یاد


Example 2-1: Examples of Classes and Objects type
TAccount = class
private
fCustomer: string; // name of customer
fNumber: Cardinal; // account number
fBalance: Currency; // current account balance
end;
TSavingsAccount = class(TAccount)
private
fInterestRate: Integer; // annual percentage rate, scaled by 1000
end;
TCheckingAccount = class(TAccount)
private
fReturnChecks: Boolean;
end;
TCertificateOfDeposit = class(TSavingsAccount)
private
fTerm: Cardinal; // CD maturation term, in days
end;

var
CD1, CD2: TAccount;
begin
CD1 := TCertificateOfDeposit.Create;
CD2 := TCertificateOfDeposit.Create;





این که همه شد private ؟

Public یک متد یا ... رو تو همه یونیت های استفاده شده در پروژه قابل دسترس میکنه .
Private یک متد یا ... رو تو یونیت جاری که تعریف شده قابل دسترس میکنه .
Protected یک متد یا ... رو فقط برای کلاس جاری که درش تعریف شده محفوظ میکنه و خارج از کلاس نمیشه بهش دسترسی داشت .

BORHAN TEC
یک شنبه 26 اردیبهشت 1389, 22:23 عصر
دوست خوبم آقای مجتبی تاجیک یادشون رفت در مورد قسمت published توضیح بدن که خودم در مورد این قسمت توضیح میدم: در این قسمت معمولاً property ها را تعریف میکنند. مشخصه هایی که در این قسمت تعریف میشوند در صورتی که کلاس را به صورت یک کامپوننت در آوریم در Object Inspector نمایش داده می شوند.

حسین شهریاری
یک شنبه 26 اردیبهشت 1389, 23:51 عصر
فقط یه نکته که از قلم افتاده:


Protected یک متد یا ... رو فقط برای کلاس جاری که درش تعریف شده محفوظ میکنه و خارج از کلاس نمیشه بهش دسترسی داشت

protected:فقط اعضای درونی اون کلاس میتونند از اون نوع تعریف شده استفاده کنند و دسترسی به اون به طور مستقیم امکان ندارد مگر بطور غیر مستقیم و توسط توابع واسط خاص.

vcldeveloper
چهارشنبه 29 اردیبهشت 1389, 21:40 عصر
Protected یک متد یا ... رو فقط برای کلاس جاری که درش تعریف شده محفوظ میکنه و خارج از کلاس نمیشه بهش دسترسی داشت .

protected:فقط اعضای درونی اون کلاس میتونند از اون نوع تعریف شده استفاده کنند و دسترسی به اون به طور مستقیم امکان ندارد مگر بطور غیر مستقیم و توسط توابع واسط خاص.
تمامی اجزائی که به صورت Protected در یک کلاس تعریف بشند، توسط همان کلاس و کلاس های مشتق شده از آن کلاس قابل دسترسی هستند.

اجزائی که به صورت Private تعریف میشند، فقط توسط همان کلاسی که در آن تعریف شدند، یا کلاس هایی که با آن کلاس در یک یونیت قرار دارند؛ قابل دسترس هستند.

اگر جزئی از یک کلاس به صورت strict private تعریف بشه، فقط توسط همان کلاس قابل دسترس هست، و هیچ کلاس دیگه ایی، حتی کلاس های فرزند آن کلاس، یا کلاس هایی که با آن کلاس در یک یونیت قرار دارند هم اجازه دسترسی به آن جزء را ندارند.

سطح دسترسی Published در دلفی عملا مثل سطح دسترسی Public هست، و تنها تفاوت آن با public این هست که دلفی به طور خودکار برای Propertyهای تعریف شده در بخش Published یک کامپوننت RTTI تولید میکنه. این اطلاعات به طور خاص توسط IDE دلفی برای نمایش خصوصیات یک کامپوننت در Object Inspector استفاده میشه. البته در دلفی 2010 اطلاعات مربوط به RTTI برای سایر سطوح دسترسی کلاس هم تولید میشند.