PDA

View Full Version : برنامه نویسی شی گرا



Z_Programming
دوشنبه 26 اردیبهشت 1390, 10:40 صبح
سلام دوستان
من تا حالا برنامه نویسی به صورت Functional انجام می دادم اما حالا می خوام یه برنامه به صورت شی گرا بنویسم نمی دونم از کجا باید شروع کنم .اطلاعات کلی در مورد برنامه نویسی شی گرا دارم اما نمی دونم دقیقا چه کار باید بکنم.هر چی هم که جستجو می کنم همش یه سری توضیحات کلی در مورد کلاس پیدا می کنم توضیحی که بخوام ازش استفاده کنم تا برنامه رو شروع کنم پیدا نکردم.مثلا هنوز نمی دونم چه مشخصاتی از کلاسم باید Property بشه یا یه Property رو چه طوری بنویسم .چرا یه خصوصیتی مثل نام گاهی Property می شه گاهی متغیر؟یا اینکه چه چیزایی رو در سیستمم به عنوان کلاس در نظر بگیرم.غیر از اون کلاس هایی که در اول در خود سیستم تشخیص دادم آیا کلاس هایی در حین برنامه نویسی هم ایجاد می شن؟
می شه لطفا کمکم کنید.
ممنون

یوسف زالی
دوشنبه 26 اردیبهشت 1390, 10:58 صبح
سلام.کلا این که کی از کلاس استفاده کنید به خودتون برمیگرده.
معمولا چیزهایی که ازش خیلی و در جاهای متنوعی استفاده میشه رو کلاس می کنیم. مثل کلاس TDateEdit که خودتون می سازیدش و برا استفاده فقط ازش شی درست می کنید.
حالا این کلاس مثلا قراره مقدار تاریخ رو عددی به ما بده. یه public property توش می سازیم.
اگه متغیرهای موقتی لازم داره ولی کاربر لازمش نداره private می کنیم.
به نظرم بهتره PDF هاشو سرچ کنی و بخونی.

Z_Programming
دوشنبه 26 اردیبهشت 1390, 11:12 صبح
ممنون از جوابتون چند تا از سوالام حل شد.حالا فرض کنید من یه کلاس ساختم به نام مشتری که یه سری خصوصیات داره که یکی از این خصوصیات نام است.حالا من این نام رو به صورت property در نظر بگیرم یا یه متغیر public از کلاس؟
و یه سوال دیگه این که در تعریف یک Property دو تابع Read و Write براش می نویسن می شه یکم در مورد این برام توضیح بدین؟
ممنون

یوسف زالی
دوشنبه 26 اردیبهشت 1390, 11:22 صبح
اصولا property یه جور متغیره که می تونی براش قوانینی وضع کنی.
مثلا نذاری از یه عددی بزرگتر وارد کنن.
property بگیر.
write مشخص میکنه که وقتی داری بهش مقدار میدی چی بشه.
read هم وقتی داری میخونیشه.
اگه write نداری میشه read only..
موازی با اون یه متغیر که اولش F هست و با همون اسم تو private میذاره که در اصل مقدار متغیر اون تو هست.
اما از بیرون با اسم property دسترسی داریم و تو read کنترلش می کنیم.

Z_Programming
دوشنبه 26 اردیبهشت 1390, 12:02 عصر
کلاس TEdit رو در دلفی نگاه کنید.Property ها رو در قسمت Published تعریف کرده اولا این قسمت چه کاری انجام می ده دوما این متغیر رو که می گین با F تعریف شده نداره.اینو درست متوجه نشدم یعنی اگه read یا write داشته باشه این متغیر رو تعریف میکنه؟
ببخشید که انقدر سوال می پرسم:خجالت:

یوسف زالی
دوشنبه 26 اردیبهشت 1390, 12:09 عصر
اشکال نداره.
Published همون Public هست اما اگه قراره از رو کلاست کامپوننت بسازی اون property هارو تو Object Inspector سمت چپ و پایین دلفی بتونی تنظیم کنی.
برو تو TCustomEdit.
TEdit یه مشتق از اونه.
اگه بنویسی
property X: integer;
حالا Cntrl + Shift + C بزنی خود دلفی برات ردیفش می کنه.
read و write متدهای دسترسی هستند.

Z_Programming
دوشنبه 26 اردیبهشت 1390, 12:25 عصر
ممنون تا حد زیادی مشکلاتم حل شد

یوسف زالی
دوشنبه 26 اردیبهشت 1390, 12:41 عصر
بازم اگه سوالی بود در خدمتیم

mbshareat
دوشنبه 26 اردیبهشت 1390, 14:43 عصر
با سلام
یعنی Read همیشه با متغیر کار میکنه و Write با پرو سیجر؟
اگه نخوایم Edit استاندارد رو دستکاری کنیم ولی یه Edit داشته باشیم که مثلا پروپرتی X:Integer داشته باشه چطور عمل کنیم و چطور استفاده کنیم.
آیا باید چنین کدی داشته باشیم:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TEditX = class(TEdit)
private
FX: Integer;
procedure SetX(const Value: Integer);
published
Property X:Integer read FX write SetX;
end;
TForm1 = class(TForm)
Edit1: TEdit;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TEditX.SetX(const Value: Integer);
Begin
End;

ببخشید زیاد سوال می پرسم!آیا فرم یه جور کامپوننت ترکیبیه؟

یوسف زالی
دوشنبه 26 اردیبهشت 1390, 14:53 عصر
آره ولی تو write اگه چیزی ننویسی مقدار دهی انجام نمیشه.
در ضمن read و write هردو می تونن method باشن.
Form یه جور کلاسه که توش چند تا کلاس دیگه داره.
راستی edit استاندارد دستکاری نمیشه.
فقط می تونی ببینیش.
اما کدتون درسته ظاهرا.

SAASTN
دوشنبه 26 اردیبهشت 1390, 17:39 عصر
یعنی Read همیشه با متغیر کار میکنه و Write با پرو سیجر؟
خیر، write هم می تونه با متغیر کار کنه.
property X: Integer read FX write FX;