PDA

View Full Version : سوال راجع به Encapsulation



reza6384
یک شنبه 24 شهریور 1387, 12:45 عصر
سلام.

من دارم یک DLL طراحی می کنم. در این DLL از یک سری کلاس استفاده میکنم که قبلا اونها رو طراحی کردم. مشکلی که دارم اینه که نمی خوام این کلاس ها در Namespace مربوط به DLL باشند، یعنی وقتی یک نفر از این DLL من استفاده می کنه فقط بتونه از یک کلاس Object تعریف کنه.
یه کم بیان کردم منظورم سخته.



Public Class MyModerator()

Public Sub VisibleMethod()
Dim AD As New AlreadyDefined()
Dim STR as String = AD.NonVisibleMethod("Text1")
Msgbox(STR)
End Sub

End Class




Public Class AlreadyDefined()

Public Function NonVisibleMethod(Item As String)

Dim Result As String
Result = Item + " some text "
Return Result

End Sub

End Class


منظور من اینه که می خوام این کلاس AlreadyDefined که یک سری کارهای داخلی رو انجام میده برای کسی که از DLL استفاده می کنه معلوم نباشه، یع اون شخص فقط به کلاس MyModerator دسترسی داشته باشه

یکی از دوستان به من گفت که باید اینکار رو با MustInherit انجام بدی ، اما MustInherit برای اینه که از کلاس Instance تعریف نشه و فقط بشه از توابع اون استفاده کرد.

رضا عربلو
یک شنبه 24 شهریور 1387, 15:09 عصر
Acces Modifier کلاس ات را از نوع Internal تعریف کن.

reza6384
دوشنبه 25 شهریور 1387, 10:54 صبح
Acces Modifier کلاس ات را از نوع Internal تعریف کن.

ممنون از راهنماییتون، چجوری اینکارو انجام بدم؟

رضا عربلو
دوشنبه 25 شهریور 1387, 14:56 عصر
به جای Public Class MyModerator بنويس Internal Class MyModerator

reza6384
دوشنبه 25 شهریور 1387, 22:42 عصر
خیلی ممنون از راهنماییتون آقای عربلو، اما Internal رو که زدم Keyword نیست، ممکنه Keyword اش چیز دیگه ای باشه، لطفا خودتون یه تست کنید. ممنون

رضا عربلو
سه شنبه 26 شهریور 1387, 15:28 عصر
ببخشید internal مخصوص C# است معادل آن در وب دات نت Friend است. یعنی


Friend Class MyModerator

reza6384
جمعه 29 شهریور 1387, 12:31 عصر
آقای عربلو خیلی خیلی ممنون. دقیقا همونی بود که می خواستم. . ولی فکر نمی کردم این باشه.
یعنی این تعریف از Friend Class رو از مفاهیم OO یادم بود، اگر مثلا کلاس C2 رو به عنوان Friend برای کلاس C1 تعریف کنیم اونوقت C2 می تونه به متدها و Property های Private و Protected کلاس C1 دسترسی داشته باشه.

حالا که شما اینقدر زحمت کشیدین، یه Reference هم معرفی می کنید برای کلیه مفاهیم OO در VB.NET ؟