تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 1 از 2 12 آخرآخر
نمايش نتايج 1 به 10 از 13

نام تاپيک: همه چیز در مورد کلاس

  1. #1
    اگه نباشه جاش خالی می مونه mojtaba-design's Avatar
    تاريخ عضويت
    Oct 2007
    محل سكونت
    معمولا خونمون هستم
    پست ها
    251

    14 همه چیز در مورد کلاس

    به نام خدا
    دوستان با توجه به اینکه فکر میکنم ، عده ای از دوستان مفهموم کلاس را درک نمی کنند (+ خودم) تصمیم گرفتم که تاپیکی ایجاد کنم ، که هم مشکل ما حل بشه و هم منبع مفیدی در بیاد.
    انشاء الله در آخر و بعد از جمع بندی به صورت یک مقاله جامع خدمت دوستان قرار میدهیم .
    فقط لطفا موارد زیر را جهت منحرف نشدن موضوع رعایت کنید :
    1- از دادن پست تکراری یا احوالپرسی خودداری کنید ( برای تشکر هم الحمدالله دکمه به همین نام برای پست ها وحود دارد)
    2- سوال نا مربوز نپرسید + اگه سواللی دارید بگزارید در انتهای هر بخش بپرسید ، چون ممکن است به جوای سوال شما تا آخر فصل برسیم.

    پیشاپش از همکاری شما ممنونیم
    و در ضمن دوستان کنار نشینند نطاره کنند ، دست بکار شید ، هر کجا توضیحی اضافی وجود داشت یا اشکالی در توضیحات بود تکمیل و صلاح کنید.
    ممنون
    Last edited by mojtaba-design; 01-06-2009 at 08:26. دليل: اضافه کردن قوانین

  2. #2
    داره خودمونی میشه mrhamed's Avatar
    تاريخ عضويت
    Jul 2006
    پست ها
    140

    پيش فرض

    سلام !

    کلاس در حقیقت یک تعریف است ، تعریفی که به شرح یک الگومیپردازد سپس شما الگو ها را با استفاده از شرح شناخته و به کار میبندید .

  3. #3
    اگه نباشه جاش خالی می مونه mojtaba-design's Avatar
    تاريخ عضويت
    Oct 2007
    محل سكونت
    معمولا خونمون هستم
    پست ها
    251

    پيش فرض

    سلام!
    یک تعریف دیگه هم اگه میشه بگید.

  4. #4
    داره خودمونی میشه shahrokhkian's Avatar
    تاريخ عضويت
    Jan 2009
    محل سكونت
    -
    پست ها
    70

    پيش فرض

    کلاس موجودیتی است که می تواند شامل داده ها و رویه ها باشد به عبارت دیگر کلاس متشکل از یکسری داده و رویه هاست که داده های مربوط به کلاس را اصطلاحاً "فیلد" و رویه های مربوط به کلاس را "متد" می نامند. تعریف کلاس در قسمت Type واحد یا برنامه صورت می گیرد. پس از تعریف یک کلاس می بایست یک نمونه اجرایی از آن ایجاد نمود.این نمونه اجرایی را "شیء" می نامند. پس کلاس پایه و اساس برنامه نویسی شی گرا است. الگوی تعریف کلاس در دلفی به شکل زیر است.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    تمام کلاسها در دلفی ، کلاس TObject را به عنوان والد دارند. این بدین معنی است که اگر در دلفی والد کلاس را مشخص نکنید باز هم طبق پیش فرض ، کلاس مورد نظر از کلاس TObject مشتق خواهد شد. پس از تعریف داده ها مهمترین بخش ، ایجاد و طراحی متدهایی است که تعیین کننده رفتار شیء مورد نظر می باشند. تعریف متدهای اشیا در دلفی با الگوی زیر صورت می پذیرد.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    درمورد انواع متدها و ساختار کلاس بعداً به صورت مفصل بحث خواهیم کرد.
    موفق باشید.
    Last edited by shahrokhkian; 30-05-2009 at 09:07.

  5. #5
    اگه نباشه جاش خالی می مونه mojtaba-design's Avatar
    تاريخ عضويت
    Oct 2007
    محل سكونت
    معمولا خونمون هستم
    پست ها
    251

    پيش فرض

    ممنون ، خیلی خوب توضیح دادید،
    درمورد انواع متدها و ساختار کلاس بعداً به صورت مفصل بحث خواهیم کرد.
    مشتاق توضیحات مفصل شما هستیم!

  6. #6
    اگه نباشه جاش خالی می مونه mojtaba-design's Avatar
    تاريخ عضويت
    Oct 2007
    محل سكونت
    معمولا خونمون هستم
    پست ها
    251

    پيش فرض

    بسیار خوب دوستان لطف کردند و تعریف خوبی رو از کلاس ارائه دادند ( پست شماره 4)
    و همچنین الگو تعریف آن نیز به شکل زیر است :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    خوب بخش نارنجی رنگ ، به ما میگه که کلاس والد چی باشه.(بعدا کلاس والد و مشتق رو توضیح میدهم)
    و بخش سبز رنگ ،نام دلخواهی است که به کلاس مشتق شده میدهیم.همانطور که دوست عزیزمون گفتند این در صورتی که والد را مشخص نکنیم خود دلفی TObject رو که جد همه کلاس ها است رو انتخاب میکنه.
    کلاس در بخش type و همچنین با کلمه کلیدی class تعریف میشه و با کلمه کلیدی end به پایان میرسه.
    هر کلاس میتونه شامل فیلد (متغیر که در کلاس تعریف شود را اصطلاحا فیلد گویند) و متد ها (به توابع و روال هایی که در کلاس تعریف شوند گویند) در سطوح دسترسی مختلف می باشد.
    قبل از بررسی کلاس ها باید به بخش اشاره گر ها پرداخت :
    اشاره گر : متغیری است که آدرس متغیر دیگری را در خود ذخیره می کند .اشاره گر ها به دو دسته نوع دار و بی نوع تقسیم میشوند.
    اشاره گر بی نوع میتواند ادرس هر نوع متغیری را در خود ذخیره کند ، حال آنکه اشاره گر نوع دار فقط اشاره به نوعی خاص از متغیر میکند.
    با استفاده از اشاره گر ها میتوانیم به طور غیر مستقیم به اطلاعات دسترسی داشته باشیم ، اشاره گر ها مزایایی دارند که به مرور با آنها اشنا می شوید.
    الگو تعریف اشاره گر :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    که ما در دومین خط یک اشاره گر بدون نوع را تعریف کردیم و در خط سوم نشانه گر با نوع دقت کنید که عملگر ^ براش فهماندن اشاره گر بودن این متغیر به کامپایلر است و همچنین در خط سوم باید نوع اشاره گر را به جای type قرار دهیم مثل زیر :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    اشاره گر نوع دار از نوع عدد صحیح.

    حال بپردازیم به سطوح مختلف دسترسی :
    1- اختصاصی
    2- عمومی
    3- حفاظت شده
    4- عام

    1- اختصاصی : محدوده آن با کلمه کلیدی private شروع و تا کلمه کلیدی بعدی کلاس است. و محتویات این محدوده فقط توسط همین کلاس قابل استفاده است.
    2- عمومی : محدوده آن با کلمه کلیدی Public شروع و تا کلمه کلیدی بعدی کلاس است. محتویات این محدوده در خود کلاس ،کلاس های مشتق شده و سایر کلاس ها وحتی در خارج از یونیتی که کلاس در آن تعریف شده ( با اضافه کردن کلمه کلیدی uses و نام بونیت کلاس) قابل استفاده است.
    3- محافظت شده :حدوده آن با کلمه کلیدی Protected شروع و تا کلمه کلیدی بعدی کلاس است. محتویات این محدوده در خود کلاس و کلاس های مشتق شده قابل استفاده است.
    4-عام :حدوده آن با کلمه کلیدی Published شروع و تا کلمه کلیدی بعدی کلاس است. این نوع برای نوشتن کنترل برنامه ها بکار می رود ،هر کنترلی که در اینجا تعریف شود در پنجره Object Inspector ظاهر میگردد.

    خسته نباشید ، امیدوارم مفید بوده باشه ، منتظر بیقه اش باشید.
    منابع » خودم ، کتاب آموزش دلفی 5 نوشته کنت ریز دورف و ترجمه مهندس غنی زاده و سرهنگی

  7. 2 کاربر از mojtaba-design بخاطر این مطلب مفید تشکر کرده اند


  8. #7
    داره خودمونی میشه shahrokhkian's Avatar
    تاريخ عضويت
    Jan 2009
    محل سكونت
    -
    پست ها
    70

    پيش فرض

    متدها

    متدها رویه ها و توابع متعلق به کلاس مورد نظر هستند. آنها به جای داده ، عملکرد کلاس را ارائه می کنند. دو متد مهم کلاسهایی که ایجاد می کنیم متدهای "سازنده" و "تخریب کننده" هستند که پس از پایان بحث در مورد انواع متدها و تعریف آنها ، بصورت جداگانه و در یک پست دیگر به آنها خواهیم پرداخت. به غیر از این دو متد می توانیم متدهای سفارشی دیگری نیز برای اجرای مجموعه ای از تکالیف ایجاد کنیم.
    همانگونه که قبلاً توضیح داده شد ایجاد یک متد یک فرآیند دو مرحله ای است. ابتدا باید متد را در اعلان کلاس اعلان نمود و سپس آن را به شکل کد تعریف نمود. توجه داشته باشید که متدها بصورت مستقیم به فیلدهای تعریف شده در کلاس دسترسی دارند.

    انواع متدها

    متدهای کلاس می توانند با نامهای static (ایستا) ، virtual (مجازی) ، dynamic (پویا) و message (پیام) اعلان شوند. برای مثال

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    متدهای ایستا


    StaticProc یک متد ایستا (Static) است. متد ایستا نوعی روش پیش فرض است و مشابه رویه معمولی یا فراخوانی یک تابع عمل می کند. یعنی کامپایلر آدرس این متدها را می داند. بنابراین یک متد ایستا سریع اجرا می شود ولی توانایی override شدن برای ارائه "چندریختی" را ندارد.(override در ادامه توضیح داده خواهد شد.)

    متدهای مجازی

    VirtualProc یک متد مجازی (Virtua) است. متدهای مجازی همانند متدهای ایستا فراخوانی می شوند ، اما از آنجایی که قابلیت override شدن دارند کامپایلر برعکس متدهای ایستا ، آدرس این متدها را نمی داند. بنابراین ، کامپایلر یک "جدول متد مجازی Virtua Method Table " یا (VMT) می سازد که ابزاری جهت جستجوی آدرس های تابع در زمان اجرا ارائه می دهد. تمامی فراخوانی های متد های مجازی ، در زمان اجرا از طریق VMT صورت میگیرد. VMT متعلق به یک کلاس ، همه متدهای مجازی والد خود را نیز علاوه بر متدهای اعلان شده شامل می شود. در نتیجه متدهای مجازی نسبت به متدهای پویا از حافظه بیشتری استفاده میکنند اگرچه سریعتر اجرا می شوند.

    متدهای پویا

    DynamicProc یک متد پویا (Dynamic) است. متدهای پویا اساساً متدهای مجازی هستند اما سیستم فراخوانی آنها متفاوت است. کامپایلر یک شماره منحصر به فرد برای هر متد پویا در نظر می گیرد و برای ساخت یک "جدول متد پویا Dynamic Method Table " یا (DMT) از آن شماره ها در مورد آدرس های متد ، استفاده می کند. بر خلاف VMT یک DMT ، فقط شامل متدهای پویای اعلان شده در همان کلاس می باشد و آن متد برای باقی متدهای پویای خود به DMT های والد خود متکی است. به همین علت متدهای پویا نسبت به متدهای مجازی به شدت به حافظه کمتری نیاز دارند ، اما برای فراخوانی وقت بیشتری صرف می کنند چرا که ممکن است مجبور به تعمیم DMT های والد خود باشند.

    متدهای پیامی

    MessageProc یک متد اداره کننده پیام است. مقداری که پس از کلمه کلیدی message می آید ، نشان می دهد که متد به چه پیامی پاسخ خواهد داد. متدهای پیام برای ایجاد یک پاسخ خودکار به پیام های ویندوز بکار می روند و معمولاً مستقیماً فراخوانی نمی شوند. اداره کردن پیام خود مبحثی طولانی است که بعد پایان این تاپیک شاید تاپیکی با این عنوان باز کردیم.(البته با اجازه mojtaba-design عزیز)

    فعلاً همین و دیگر هیچ ...

    امیدوارم این پست مفید بوده باشد.
    موفق باشید.
    Last edited by shahrokhkian; 01-06-2009 at 16:00.

  9. این کاربر از shahrokhkian بخاطر این مطلب مفید تشکر کرده است


  10. #8
    داره خودمونی میشه shahrokhkian's Avatar
    تاريخ عضويت
    Jan 2009
    محل سكونت
    -
    پست ها
    70

    پيش فرض

    override

    override کردن یک متد ، پیاده سازی مفهوم برنامه نویسی شی گرا از چندریختی ها در دلفی است. این روش به شما امکان می دهد تا عملکرد یک متد را از وارثی به وارث دیگر تغییر دهید.
    متدهای دلفی فقط زمانی override می شوند که در ابتدای کار به عنوان dynamic یا virtual اعلان شده باشند. برای override کردن یک متد از کلمه کلیدی "override" به جای dynamic یا virtual در نوع کلاس وارث استفاده می کنیم. به عنوان مثال متوانیم متدهای DynamicProc و VirtualProc را به شرح ذیل override کنیم.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    overload

    همانند توابع و رویه های معمولی ، متدها نیز می توانند طوری سربارگذاری (overload) شوند که یک کلاس بتواند چند متد هم نام با لیست های پارامترهای متفاوت را در برگیرد. متدهای سربارگذاری شده باید با کلمه کلیدی overload مشخص شوندنمونه کد زیر کلاسی را نشان می دهد که شامل سه متد سربار گذاری شده است.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    Last edited by shahrokhkian; 01-06-2009 at 16:31.

  11. #9
    اگه نباشه جاش خالی می مونه mojtaba-design's Avatar
    تاريخ عضويت
    Oct 2007
    محل سكونت
    معمولا خونمون هستم
    پست ها
    251

    پيش فرض

    البته بنده اصلاح میکنم گفته دوست عزیزمون رو :
    همانند توابع و رویه های معمولی ، متدها نیز می توانند طوری سربارگذاری (overloade) شوند که یک کلاس بتواند چند متد هم نام با لیست های پارامترهای متفاوت را در برگیرد. متدهای سربارگذاری شده باید با کلمه کلیدی overloade مشخص شوندنمونه کد زیر کلاسی را نشان می دهد که شامل سه متد سربار گذاری شده است.
    به جای overloade از overload استفاده کنید.

  12. این کاربر از mojtaba-design بخاطر این مطلب مفید تشکر کرده است


  13. #10
    داره خودمونی میشه shahrokhkian's Avatar
    تاريخ عضويت
    Jan 2009
    محل سكونت
    -
    پست ها
    70

    پيش فرض

    با تشکر از mojtaba-design عزیز

    پست اصلاح شد.

صفحه 1 از 2 12 آخرآخر

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •