1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

برنامه نویسی شیئ گرا در vb.net

شروع موضوع توسط minaaa ‏22/10/11 در انجمن .Net

  1. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    پاسخ : برنامه نویسی شیئ گرا در vb.net

    اعضاء حفاظت شده (Protected Members)



    حال یک مرور سربع بر سطوح دسترسی خواهیم داشت. اعضاء Public در دسترس همه
    بخشهای یک برنامه هستند) شامل کلاسهای خارجی(. اعضاء Friend یاInternal
    برای اعضای اسمبلی محلی (Local Assembly) در دسترس اما برای فراخوانی‌های
    خارجی قابل دسترسی نیستند. اعضاء Private فقط درون کلاس خودشان قابل
    دسترس‌اند و نمی‌توانند مورد استفاده هیچ فراخوان دیگری (شامل کلاسهای
    وارث) قرار بگیرند. دو سطح دسترسی دیگر Protected و Protected Frind
    هستند.

    وقتی کلمه کلیدی Protectded با یک عضو کلاس استفاده می‌شود، آن عضو برای
    فراخوانی‌های خارجی، سطح دسترسی مشابهی با کلمه کلیدی Private دارد.
    تفاوتشان در این است که اعضای Protected برای کلاس‌های مشتق شده هم قابل
    دسترسی هستند. مثال زیر را ملاحظه کنید:

    کد:

    ‘The base class defines two methods: a private method and a protected
    ‘ method.
    Public Class BaseClass
    ‘ A private method cannot be called from derived classes
    Private Sub Method1()
    ‘ Implementation omitted
    End Sub ​
    ‘ A protected member can be called from derived classes
    Protected Sub Method2()
    ‘ Implementation omitted
    End Sub
    End Class​
    ‘ The inherited class inherits from BaseClass
    Public Class InheritedClass
    Inherits BaseClass​
    Public Sub Demo()
    ‘ This call is legal because the protected access level allows
    ‘ access to the member defined by the BaseClass
    Me.Method2()​
    ‘ This call will not compile because it attempts to access a
    ‘ private member of the base class.
    Me.Method1()
    End Sub
    End Class​
    </pre>



    مثال قبل تفاوت بین اعضاء Private و اعضاء Protected را نشان می‌دهد. متد
    Demo قصد دارد که از نمونه‌ای از کلاس وارث Me، با فراخوانی Method1 و
    Method2 استفاده کند. چون هر دوی این متدها در کلاس پایه تعریف شده‌اند،
    سطح دسترسی آنها تعیین شده، به هر حال آنها می‌توانند از کلاس وارث
    فراخوانده شوند. فراخوانی Method2 موفقیت آمیز است اما از آنجاییکه
    Method1 خصوصی (Private) است، برای کلاس‌های وارث در دسترس نیست.

    دومین سطح دسترسی Protect Friend است. این مورد ترکیبی از سطوح Protected و
    Friend است. بنابراین عضوی که Protect Friend است می‌تواند بوسیله
    کلاس‌های درون اسمبلی یا کلاس‌هایی که از آن کلاس ارث می‌برند استفاده
    شوند، به علاوه از درون کلاس خودش هم دردسترس است
     
  2. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    پاسخ : برنامه نویسی شیئ گرا در vb.net

    کلاس‌ها و اعضای مجرد



    وقتی کامپوننت‌هایی را می‌سازید، شاید بخواهید کلاس پایه‌ای درست کنید که
    برخی اعمال ثابت را داشته باشد اما پیاده سازی دیگر اعضای آن را به
    کلاس‌هایی که از آن به ارث می‌برند واگذار کنید. شما می‌توانید با استفاده
    از کلاسهای مجرد Abstract Classes این کار را انجام دهید، کلاس‌هایی که
    باید به ارث رسیده شوند.

    کلاسهای مجرد شبیه اینترفیسها هستند، اما امکانات زیاد مشترکی با کلاسها
    دارند. یک کلاس مجرد نمی‌تواند خودش را مقداردهی کند، او باید اول ارث
    برده شود. کلاس مجرد می‌تواند همه یا مقداری از پیاده سازی یک کلاس واقعی
    را تامین کند و یا حتی هیچ پیاده سازیی از یک کلاس واقعی را ارائه نکند.
    آنها مانند اینترفیس‌ها می‌توانند اعضایی که باید درون کلاس وارث پیاده
    سازی شوند را تعیین کند. بر خلاف اینترفیس‌ها یک کلاس، تنها می‌تواند از
    یک کلاس مجرد به ارث ببرد. مانند کلاس‌ها، کلاسهای مجرد می‌توانند پیاده
    سازی کاملی از اعضا را تامین کنند، اما همچنین برخلاف کلاس‌ها، کلاسهای
    مجرد می‌توانند اعضایی که باید توسط کلاسهای وارث پیاده سازی شوند را تعیین
    کنند.

    ساختن کلاس‌های مجرد (Abstract Classes)



    بوسیله کلمه کلیدی MustInherit می‌توانید کلاسی را کلاس مجرد کنید.



    کد:

    Public MustInherit Class AbstractClass
    ‘ Implementation omitted
    End Class</pre>

    تعریف اعضای مجرد



    مانند کلاس معمولی، کلاس مجرد می‌تواند هر عضوی را پیاده سازی کند. اعضای
    معمولی یک کلاس مجرد می‌تواند Overridable (مجازی) شود، در این مورد
    کلاس‌های وارث می‌توانند اعضایی که نیاز دارند را بسازند، یا می‌توانند
    غیر مجازی شوند و بنابراین پیاده سازی ثابتی دارند که می‌تواند با همه
    اعضاء مشترک شود.

    کلاسهای مجرد هم میتواند اعضای مجرد تعیین کند. اعلان یک عضو مجرد بسیار
    شبیه اعلان یک عضو اینترفیس است. تنها نوع عضو، سطح دسترسی، پارامترهای
    مورد نیاز و نوعی که برگرداننده می‌شود تعیین می‌شود. هیچ جزییاتی راجع به
    پیاده سازی اعضایی که در متد اعلان شده‌اند وجود ندارد. پس، فقط اعضاء
    اینترفیس تعیین می‌شوند. برای اعلان یک عضو مجرد، باید از کلمه کلیدی
    MustOverride استفاده کرد. اعضا مجرد باید درکلاسهای مجرد اعلان شوند. اگر
    سعی کنید عضو مجردی را در کلاس غیر مجردی اعلان کنید، کامپایلر خطایی
    اعلام خواهد کرد. مثال بفدی کلاس مجردی با ۳ عضو مجرد نشان می دهد:



    کد:

    Public MustInherit Class Car
    Public MustOverride Sub GoForward(ByVal i As Integer)
    Public MustOverride Function CheckSpeed() As Integer
    Public MustOverride Property Color() As String
    End Class</pre>

     
  3. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    پاسخ : برنامه نویسی شیئ گرا در vb.net

    ارث بری از یک کلاس مجرد



    وقتی یک کلاس غیر مجرد از یک کلاس مجرد ارث می‌برد، باید پیاده سازی برای
    هر یک از اعضا مجرد تعیین شده بوسیله کلاس مجرد تامین کند. مثال بعدی
    پیاده سازی از کلاس مجرد مثال قبلی را نشان می‌دهد.



    کد:

    Public Class MyCar
    Inherits Car ​
    Public Overrides Sub GoForward(ByVal I As Integer)
    ‘ Specific implementation of this method would go here
    End Sub​
    Public Overrides Function CheckSpeed() As Integer
    ‘ Implementation for this method goes here
    End Function​
    Public Overrides Property Color() As String
    Get
    ‘ Both the getter and the setter must be implemented
    End Get
    Set(ByVal Value As String)
    ‘ Setter implementation goes here
    End Set
    End Property
    End Class​
    </pre>



    همچنین می‌توانید کلاس مجرد جدیدی را با ارث بری از کلاس مجرد حاضری درست
    کنید. در این مورد، کلاس مجرد مشتق شده نیاز ندارد که پیاده سازیی برای
    اعضا مجرد تعیین شده در کلاس پایه تعریف کند. اما اگر نیاز باشد می‌توان
    این اعضاء را نیز مجددا پیاده سازی کند.