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

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




نمايش نتايج 1 به 4 از 4

نام تاپيک: وراثت و چند لفظ

  1. #1
    کاربر فعال تالار .Net Msba's Avatar
    تاريخ عضويت
    Dec 2006
    محل سكونت
    ! My Mind
    پست ها
    506

    14 وراثت و چند لفظ

    سلام خدمت همه دوستان.
    چند سوال ذهنم رو درگیر کرده :
    سوال 1)
    یک کلاس تعریف می شود.
    وراثت یک کلاس دیگر رو که به اون داده می شود.

    حالا اگر بخواهیم متدی از متد های کلاس پدر روی کلاس موروث نباشد. آیا راهی هست؟(غیر از interface گیری)
    احساس می کنم این قضیه یه کم وراثت رو نقض می کنه.

    سوال 2)
    یک کلاس تعریف می شود.
    وراثت یک کلاس و یک interface به کلاس فوق داده می شود.

    از آنجایی که interface ها فقط یک سری نام و مشخصه هستند پس اگر بخواهیم یک کلاس با ویژگی کلاس Random و کلاس DateTime داشته باشیم، پس چگونه می شود این حالت را اجرا کرد؟
    آیا نیاز است تا متد های یکی از کلاس ها به صورت دستی نوشته شود؟
    احساس می کنم در تعاریف این مبحث دچار چالش شده ام.....

    سوال 3)
    آیا interface ها فقط نقش معرف، ارائه اجبار وراثت، اصلاح وراثت، و ایجاد تبدیل پذیری به کلاس دیگر را برای کلاس مورد تعریف دارند؟

    سوال4)
    این وسط لفظ های partial و sealed و protected به چه معنا هستند؟

    یکسری تاپیک مربوط به interface بود رو هم خواندم اما اون مطلبی که دوزاری رو بندازه پیدا نکردم!

    و در پایان:
    ممنون.

  2. #2
    کاربر فعال انجمن دات نت عــــلی's Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    زیر سایه عرش الهی
    پست ها
    2,335

    پيش فرض

    سلام خدمت همه دوستان.
    چند سوال ذهنم رو درگیر کرده :
    سوال 1)
    یک کلاس تعریف می شود.
    وراثت یک کلاس دیگر رو که به اون داده می شود.

    حالا اگر بخواهیم متدی از متد های کلاس پدر روی کلاس موروث نباشد. آیا راهی هست؟(غیر از interface گیری)
    احساس می کنم این قضیه یه کم وراثت رو نقض می کنه.

    سوال 2)
    یک کلاس تعریف می شود.
    وراثت یک کلاس و یک interface به کلاس فوق داده می شود.

    از آنجایی که interface ها فقط یک سری نام و مشخصه هستند پس اگر بخواهیم یک کلاس با ویژگی کلاس Random و کلاس DateTime داشته باشیم، پس چگونه می شود این حالت را اجرا کرد؟
    آیا نیاز است تا متد های یکی از کلاس ها به صورت دستی نوشته شود؟
    احساس می کنم در تعاریف این مبحث دچار چالش شده ام.....

    سوال 3)
    آیا interface ها فقط نقش معرف، ارائه اجبار وراثت، اصلاح وراثت، و ایجاد تبدیل پذیری به کلاس دیگر را برای کلاس مورد تعریف دارند؟

    سوال4)
    این وسط لفظ های partial و sealed و protected به چه معنا هستند؟

    یکسری تاپیک مربوط به interface بود رو هم خواندم اما اون مطلبی که دوزاری رو بندازه پیدا نکردم!

    و در پایان:
    ممنون.
    بنام خدا.
    سلام.
    سوالات کمی واضح نبودن!!!ولی تا جایی که متوجه شدم جواب میدم.
    1.در ارث بری تمامی متد ها و پروپرتی هایی که در یک Interface به کار میبرید باید در کلاسی که دارد از ان به ارث میبرد هم بکار ببرید.اما متدهایی که در کلاس مورد نظر استفاده میشود لازم نیست در اینترفیس مورد نظر وجود داشته باشد.
    مثلا:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    2.سوالتان نا مفهوم است.شما فقط در صورت نیاز از ارث بری استفاده میکنید.این اصول در اصل به شما کمک میکند تا از نوشتن کدهای اضافه جلوگیری و مهمتر از همه برنامه تان را خوانا تر کنید.
    مثلاً شما میخواهید در یک نرم افزار از 4 تا دیتابیس استفاده کنید.
    یک Interface تعریف میکنید که شامل Add و Delete و Select باشد.و سپس 4 تا کلاس که از این اینترفیس به ارث میبرد طراحی میکنید که هر کدام کد اتصال به دیتابیس مورد نظر خود را دارد.مثلاً یکی برای ارتباط با اکسس یکی برای ارتباط با SQL و ...حال فقط کافیست یک کلاس استاتیک برای مدیریت آنها بسازید و لازم نیست هر بار کلاس ها را new کنید و شرط بگذار اگر دیتابیس اکسس بود یا اگر SQL بود.

    3.منظورتان از تبدیل چیست؟آیا میخواهید یک اینترفیس را به اینترفیس دیگری تبدیل کنید؟در پاسخ قبلی گفتم که چرا از اینترفیس ها استفاده میکنید.باز هم سوالتان واضح نبود.

    4.
    sealed کلاسی است که شما نمیتوانید از آن به ارث ببرید.

    با استفاده از Partial می توان کدهای داخل کلاس را در چند فایل جداگانه نوشت (که البته در هنگام کامپایل اینها در کنار هم قرار می گیرند )
    بطور مثال وقتی یک فرم ویندوزی ایجاد می کنیم قسمت کدی که توسط Designer نوشته می شه و مربوط به ظاهر فرم هست در فایلی جداگانه وجود دارد که باعث می شود کدی که ما می نویسیم از آن کد جدا باشد و خواناتر باشد...

    protected در اصل واژه محافظت شده است.این واژه توی پروژه ای که داری توش کد مینویسی مثل public عمل میکنه منتهی فرقش اینه که اگه شما از کلاست به ارث ببری میتونی اون متد یا پروپرتی که protected شده رو ببینی و اسفتده کنی در غیر این صورت این متد ها مثل private میشن و دیگه نمیتونی بهش دسترسی داشته باشی.

    موفق باشید در پناه حق.
    Last edited by عــــلی; 03-04-2012 at 22:11.

  3. 2 کاربر از عــــلی بخاطر این مطلب مفید تشکر کرده اند


  4. #3
    کاربر فعال تالار .Net Msba's Avatar
    تاريخ عضويت
    Dec 2006
    محل سكونت
    ! My Mind
    پست ها
    506

    پيش فرض

    کلا ممون و پاسخ سوال 4 رو بیشتر. اما درمورد های1 و 2 و 3 شاید نتونستم منظور رو خوب برسونم.
    در مورد سوال 1:
    حالا اگر بخواهیم متدی از متد های کلاس پدر روی کلاس موروث نباشد. آیا راهی هست؟(غیر از interface گیری)
    احساس می کنم این قضیه یه کم وراثت رو نقض می کنه.
    این نمونه رو ببینید:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    حالا من متد Next رو از متد های کلاس Random گلچین کردم. یعنی متد هایی که احتایج نداشتم رو نادیده گرفتم.
    این کار با interface گیری انجام شد.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    حالا غیر از این روش راه دیگری نیز هست.

    سوال 2: دو وراثت.
    از آنجایی که interface ها فقط یک سری نام و مشخصه هستند پس اگر بخواهیم یک کلاس با ویژگی کلاس Random و کلاس DateTime داشته باشیم، پس چگونه می شود این حالت را اجرا کرد؟
    آیا نیاز است تا متد های یکی از کلاس ها به صورت دستی نوشته شود؟
    با توجه به ساختار .net همچین چیزی رو نمی تونیم بنویسیم:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    پس اگر بخواهیم دو کلاس وراثت بدیم که از کدهاشون استفاده کنیم چگونه باید با interface پیاده کرد؟ آیا لازم است تا کدهای یکی از کلاس ها نوشته شود؟

    سوال3)
    آیا به غیر از موارد زیر وظایف و کاربرد های دیگری برای interface هست؟
    معرفی عناصر لازم یک کلاس،ارائه اجبار وراثت،
    اصلاح وراثت،مانند سوال 1
    ایجاد تبدیل پذیری - مثل تعریف علی از پیاده سازی دیتابیس ها که در پست قبل توسط علی مطرح شد.

    و در پایان:
    ممنون.

  5. #4
    کاربر فعال انجمن دات نت عــــلی's Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    زیر سایه عرش الهی
    پست ها
    2,335

    11

    بنام خدا.
    سلام.

    کلا ممون و پاسخ سوال 4 رو بیشتر. اما درمورد های1 و 2 و 3 شاید نتونستم منظور رو خوب برسونم.
    در مورد سوال 1:

    این نمونه رو ببینید:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    حالا من متد Next رو از متد های کلاس Random گلچین کردم. یعنی متد هایی که احتایج نداشتم رو نادیده گرفتم.
    این کار با interface گیری انجام شد.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    حالا غیر از این روش راه دیگری نیز هست.

    سوال 2: دو وراثت.

    با توجه به ساختار .net همچین چیزی رو نمی تونیم بنویسیم:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    پس اگر بخواهیم دو کلاس وراثت بدیم که از کدهاشون استفاده کنیم چگونه باید با interface پیاده کرد؟ آیا لازم است تا کدهای یکی از کلاس ها نوشته شود؟

    سوال3)
    آیا به غیر از موارد زیر وظایف و کاربرد های دیگری برای interface هست؟
    معرفی عناصر لازم یک کلاس،ارائه اجبار وراثت،
    اصلاح وراثت،مانند سوال 1
    ایجاد تبدیل پذیری - مثل تعریف علی از پیاده سازی دیتابیس ها که در پست قبل توسط علی مطرح شد.

    و در پایان:
    ممنون.
    1..شما نمیتونید تابع یا پروپرتی در اینترفیس تعریف کنید و در کلاس پدر بکار نبرید.اصلاً اینکار معنی خاصی ندارید اگه دقت کنید پس چرا میخواهید آنرا بسازید؟
    اگر میخواهید در جای دیگر هم استفاده کنید که اگر اینطور باشد ساختار اینترفیس بهم میریزید.شما برای اینکار باید دو اینترفیس جداگانه و متفاوت از هم بسازید.

    2.بله شما نمیتونید از دو کلاس به ارث ببرید.
    یه روش وجود داره اینکه شما اصلاً از کلاس ها به ارث نبرید و کلاس ها(DateTime,Random) رو داخل خود کلاسی که ساختید new کنید و ندتا تابعی که میخواهید بسازی رو همونجا بسازی و ازش استفاده کنید.
    چون ارث بری فقط مختص به اینترفیس ها هست و برای ساختار UML بکار میره شما در اصل نباید در کلاس هایی که Model هستند از کلاس هم به ارث ببرید.
    اینکار فقط در بخش View باید انجا پیدا کنه که برای مثال شما یک کنترل TextBox سفارشی میخواهید بسازید و چون بخواهید اونو توی فرم هم بذارید باید حتماً از Control به ارث ببرید.

    3.اینترفیس ها کاربرد های زیادی دارن اگه استفاده درستی از اونا بشه مثل همین UML ای که گفتم.یا خوانا شدن کد ها یا اگر توی یک <List<string رو دقت کرده باشید میبینید کلی اینترفیس بکار برده شده که یکیس IEnumerable هست برای اینکه بتونه به وسیله حلقه foreach توی کلاس دو بزنه.
    مثال میزنم در سی شارپ سینتکس هایی بکار برده شده مثلاً برای اینکه شما بتونید یک کلاس رو اتوماتیک dispose کنید باید از using استفاده کنید و اینکار فقط برای کلاس هایی انجام میپذیره که از IDisposable به ارث برده باشن:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    مثال:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    یا اینکه مثلاً بخواهید از یک کلاس کپی برداری کنید باید از ICloneable به ارث ببرید.
    اینترفیس ها قوانینی رو برای برنامه نویس پیاده سازی میکنن که باعث خوانا تر شدن و راحت تر شدن برنامه نویسی میشه.
    مثلاً اینترفیس INotifyPropertyChanged که باعث میشه پروپرتی هایی که در آن تغییرات ایجاد میشه به نرم افزار گوشزد کنه و اونو در دیزاین نرم افزار آپدیت کنه.که توی WPF بسیار بسیار کاربرد داره.
    WPF بی INotifyPropertyChanged یعنی هیچ.

  6. این کاربر از عــــلی بخاطر این مطلب مفید تشکر کرده است


Thread Information

Users Browsing this Thread

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

User Tag List

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

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