PDA

View Full Version : گفتگو: کمک در مورد کلاس نویسی البته با کمک برنامه نویسان خبره



oliya24
دوشنبه 03 مرداد 1390, 16:03 عصر
دوستان عزیز کلاس نویسی یک امر خیلی جالب و ضروری در برنامه نویسی محسوب میشود کلاس نویس مزایایی دارد که در زیر به چند مورد از انها اشاره میکنم :1:استفاده مکرر از کدهاو2:یکپارچگی
3:خوانایی کدها4:خطا یابی اسان و.................................
با توجه به این امر و نیاز روز افزون استفاده از این شیوه در کد نویسی بر ان شدم تا تاپیکی با این عنوان برای یاد گیری خیلی از برنامهنویسان این تالار از جمله خود بنده بزنم و از مدیران و برنامه نویسان خبره تقاضا کنم که ما را در این امر یاری نمایند
با تشکر

oliya24
دوشنبه 03 مرداد 1390, 16:09 عصر
برای کلاس نویسی ابتدا باید یکسری از مسائل شی گرایی را دانست
1:شی:در محیط زنگی با مفهوم شی اشنا هستید همانطور که میدانید یک شی چیزی است مادی که دارای خصوصیاتی است و در مقابل برخی اتفاقاتی که ممکن است برایش رخ دهد از خود واکنش نشان میدهد هر شئ همراه با 4 جنبه زیر ساخته میشود
1:ویژگیها
2:رفتار
3:متد
4:روابط
دوستان من تازه شروع به کار با کلاسها کردم لطفا از مدیران بخش تقاضا دارم من رو یاری نمایند

یوسف زالی
دوشنبه 03 مرداد 1390, 16:30 عصر
در ادامه با اجازه :
کلاس یک مفهوم انتزاعی هست به این معنا که در عالم واقع وجود ندارد و یک معناست.
اما شی یک مصداق محسوب میشه.
مثل اینکه بگیم گنجشک یک کلاس هست و گنجشکی که جلوی شما قرار داره یک شی از اون.
گنجشک ها توانایی ها و ضعفهایی دارند. کارهایی می توانند بکنند. ویژگیهایی مثل رنگ، اندازه، وزن و ... دارند.
خود گنجشک از کلاس پرندگان مشتق شده.
یعنی هر گجشکی پرنده هست اما هر پرنده ای گنجشک نیست.
در عالم برنامه نویسی OOP هم درگیر همین مفاهیم هستیم.
برای مثال ارث بری ،
یک گنجشک از یک پرنده والد ارث برده اما ممکنه با والدش کمی فرق کنه و خصوصیاتی رو اضافی داشته باشه.
مثل تکامل داروینی تقریبا.

دنیای شی گرا هم به همین صورت عمل می کنه.
دکمه عکس دار یک کلاس است که مثلا از یک دکمه ساده مشتق شده و خصوصیاتی داره...

oliya24
دوشنبه 03 مرداد 1390, 17:04 عصر
سلام دوستان خسته نباشید امیدوارم تاپیک مورد استقبال قرار بگیره
دوستان در مورد 4 گزینهای که در بال مطرح کردم اگر کسی دوست داشت بگه تا بیشتر توضیخ بدم
میخوام شکل کلی تعریف یک کلاس رو اینجا مطرح کنم بدین شکل

class ....name class
moteghayerha
methodha
end class

برای اینکه بهتر متوجه بشید method همون متد میشه و moteghayerha هم همون متغیر میشه
برای نوشتن متدها در کلاس باید از روالها استفاده نمود
دوستان خبره لطفا من و دوستاندیگر رو تنها نگذارید
من هم در این بحث تازه کارم و در خود محیط شیگرا هنوز کلاس نویسی رو شروع نکردم پس خواهشا من و دوستان رو همیاری کنید و کلاس نویسی رو در خود محیط شئگرا اموزش دهید
من مفا هیم پایه رو بلدم نه بیشتر البته فعلا
با تشکر

Alirezanet
دوشنبه 03 مرداد 1390, 21:45 عصر
سلام
من طبق درخواست یکی از دوستان گفتم مطلبی بزارم که شاید به نوبه خودم بتونم کمکی به برنامه نویسان تازه کار تر کرده باشم !
سعی میکنم از جملات و شبیه سازی های کلی صحبت نکنم و به زبان ساده این مبحث رو توضیح کوتاهی بدم و تا اونجایی که در توانم باشه مطلبی رو میگم که کم دیدم کسی توضیح داده باشه ! (چون توضیحات کلیشه ای با یه سرچ ساده هم پیدا میشه @!)

دلایل استفاده از کلاسها بسیار زیاده و این رو زمانی میتونید درک کنید که واقعا کارتون رو راه انداخته باشه !

قابلیت های اصلی کلاسها :
1- امکان استفاده مجدد از کدها : مثال :
خوب شاید یکسری عملیات باشه که همه ما همیشه با اونها سرو کار داریم و نمیخوایم هر بار که برنامه ای مینویسیم اون عملیات رو تکرار کنیم ... مثلا تبدیل تاریخ شمسی به میلادی - تبدیل فایل ها به باینری و برعکس -
و ....
اگه شما 1بار این متد ها رو توی 1 کلاس بنویسید تا سالهای سال میتونید از اون کلاس استفاده کنید , بدون اینکه وقتتون رو دوباره برای این موضوع هدر بدید.
2- جمع کردن تمام خصوصیات مربوط به یک شئ کنار هم :
بطور مثال فرض کنید درحال نوشتن برنامه ای درباره خودرو هستید ... اگه بیاد و چند متغییر تو برنامه تعریف کنید که اطلاعات تعدادی خودرو را براتون نگه داره مثل شماره پلاک - شماره شاسی - شماره موتور و ... و وقتی تعداد خودرو ها از 1 الی 2 تا میگذره به این مشکل بر میخورید که کدوم شماره شاسی یا موتور یا ... مربوط به کدام خودرو هستش!!! مگه اینکه بشینید و با یک کد نویسی سخت و شلوغ اینها رو کنترل کنید !!
ولی به جای اینکار میتونید یک Class خودرو بسازید و توش چند تا پروپرتی تعریف کنید (یا متغییر) به عنوان شماره شاسی - موتور - پلاک .... در این صورت شما وقتی یک آبجکت از خوردوتون میگیرید (یعنی یه متغیر از کلاس خودرو) میتونید به راحتی اطلاعات اون خودرو رو مشاهده کنید .
3-استفاده از قابلیت های ارث بری و چند ریختی کلاسها :
این دو که گفتم چی هستند؟؟ کلاسها در دات نت قابلیت های جالب زیادی دارند مثل ارث بری ....
به مثال خودرو که گفتم برمیگردیم ... حالا شما فرض کنید ازتون خواستند که به علاوه اطلاعات عمومی خودرو ها ,با اطلاعات قطعات اون هم قراره که کار کنید یا اونها رو جایی ذخیره کنید(مثل چرخ ها - پدال - بخاری - موتور و .... ) شما چیکار میکنید !
در این صورت شما میتونید کلاسی بسازید برای نگهداری اینها به اسم قطعات ! که از کلاس خوردو ارث برده باشه .... با این کار شما در کلاس قطعات هم دترسی به اطلاعات خودرو دارید هم دسترسی به اطلاعات قطعات اون !
نمونه کد و نحوه ارث بری :
کلاس خودرو :
Publc Class Khordo
Public Property ShomareShassi as integer
Public Property ShomareMotor as integer
'Va Sayere etelaate khodro .....
End Class

کلاس قطعات ;که ارز کلاس خودرو ارث برده :

Public Class Ghataat
Inherit Khodro
Public Property Charkh as String
Public Property GhodrateMotor as Integer
'va sayere etelaate marboot be ghataat
End Class

همون طور که دیدید با استفاده از کلمه Inherit کلاس قطعات ما از کلاس خودرو ارث برده .... یعنی چی ؟
یعنی الان اگه از کلاس قطعات یه آبجکت بگیریم میتونیم توش شماره شاسی و موتور رو هم ثبت کنیم ...
نحوه گرفتن آبجکت :

Sub Test()
Dim x as New Ghataat
x.ShomareShassi = 12448854321
x.Charkh = "Kavir"
'va sayere Property ha ....
End Sub

الان مثال دیگه ای هم به ذهنم رسید که خیلی سادست !!!
فرض کنید میخواید یک TextBox جدید بسازید که علاوه بر امکانات قبلیش امکانات جدیدی بهش اضافه کنید .... لازم نیست که بیاید و کل کلاس TextBox رو از اول بنویسید ... فقط کافیه که کلاس خودتون رو (مثلا TextBoxNew) از کلاس TextBox , اینهریت(Inherit ) کنید ! و امکانات جدیدتون رو توش اضافه کنید !!
کد :

Public Class NewTextBox
inherit TextBox
'هر کاری که خواستید براتون انجام بدرو متونید اینجا اضافه کنید مثلا یه متد بنویسید که تاریخ رو توش وارد کنه خودش یا .......
End Class


اگه مثال یا توضیحات بد بود شرمنده هرچی به ذهنم رسید تا اینجا فقط تایپ کردم ... امیدوارم تا حدودی تونسته باشم کمکی کرده باشم ....
اگه عمری باقی بود برمیگردم و در مورد چندریختی ها , کلاس های انتزاعی , کلاس های مشتق و .... هم توضیح میدم !
موفق باشید
Alirezanet

یوسف زالی
دوشنبه 03 مرداد 1390, 22:06 عصر
من با دو بند اول مخالفم.


امکان استفاده مجدد از کدها

این کار رو به راحتی با پروسیجر ها و توابع هم میشه کرد.


جمع کردن تمام خصوصیات مربوط به یک شئ کنار هم

این کار رو هم به راحتی با ساختمان ها می شه انجام داد.

کلاسها برای این کار نیومدند.

به وقتی فکر کنید که یک بازی مثلا فوتبال دارید بازی می کنید.
در روش قدیمی تر تک تک افراد رو باید می ساختید و برای تک تک اونها در پروسیجر ها و توابعی کارهایی رو هندل می کردید.
اما همه اونها شکل شبیه به همی دارند. همه اونها شوت می زنن. همه اونها راه می رن...
در برنامه نویسی شی گرا کافیه یکیشون رو بتونیم بنویسیم. پس از اون از کلاس مورد نظر به تعداد مورد نیاز درست می کنیم.
در حقیقت تکثیر کدهای یکسان و "منتسب کردن یک قطعه کد به یک داده" مد نظر هست.
در روش قدیمی کد ها از داده ها جدا بودند (عدم کپسوله سازی) . اما حالا کدها "مال" داده هستند و بیرون داده اصلا معنی ندارند.
مثل اینکه بگیم تیر دروازه قابلیت دریبل زدن داشته باشه!
و جندین مزیت دیگه باعث تولد برنامه نویسی شی گرا (که جد بزرگوارش پاسکاله) شد.
در این نوع برنامه نویسی همون طور که دوستمون اشاره کردند خاصیت های جالبی مثل ارث بری، چند ریختی، به تعویق انداختن و ... دست ما رو خیلی باز می گذاره.
برنامه نویسی شی گرا شروع و فهمش سخته. اما اگر باهاش برنامه نوشتید و مسلط شدید دیگه حاضر نمی شید جور دیگه ای برنامه بنویسید.
موفق باشید.

oliya24
دوشنبه 03 مرداد 1390, 22:22 عصر
با تشکر فراوان از دوست خوبم جناب اقای Alirezanet

و به امید همکاری بیشتر ایشان و دیگر دوستان

oliya24
سه شنبه 04 مرداد 1390, 01:41 صبح
اگر کمی به این نوشته ها بنگریم خواهیم دید که تشکر کردن از این دوستان کافی نیست من به شخصه واقعا نمیدونم چطور از این دوستان تشکر کنم
دوستان من این رو اضافه میکنم دو خصوصیت در کلاس نویسی وجود دارن که 1: خصوصیات فقط نوشتنی WRITE ONLY , خصوصیت فقط خواندنی هستند در زیر بیشتر با انها اشنا میشویم

1 WRITE ONLY :گاهی شما نیاز دارید که خصوصیتی داشته باشید که تنها اطلاعان را در ویژگی درج نمایید و دیگر امکان دسترسی به اطلا عات درج شده در خارج از کلاس وجود نداشته باشد برای داشتن این گونه ویژگیها از شکل زیر پیروی کنید

نوع خصوصیت AS ()نام خصوصیتWRITEONLY PROPERTY
با اعلان کلمه کلیدی WRITEONLY شما فقط مجاز به استفاده از این بلوک خواهید بود


( هم نوع با خصوصیت SET(BY VAL VALUE AS
END SET

salehbagheri
سه شنبه 04 مرداد 1390, 01:42 صبح
(ببخشید که بی مقدمه وارد موضوع میشم)

هنگامی که شما قصد نوشتن یک برنامه رو دارید، استفاده از متدها و ایونت ها و متغیرها امری اجتناب نا پدیره! حتی در یک برنامه ساده، روندهای تکراری، که باعث استفاده از متدها و متغیرها و ایونت های تکراری میشه، وجود داره! در صورتی که تعداد این روندها افزایش پیدا کنه، کم کم رشته کار از دست برنامه نویس در میره و انبوهی از متدها و متغیرهای تکراری که هویت هیچ کدوم از اونها معلوم نیست به وجود میاد!

به عنوان مثال، یک دانشگاه را در نظر بگیرید که هدفش آموزش افراد و ارتقای سطح علمی اونهاست! این دانشگاه حدود 1000 دانشجوی مشغول به تحصیل داره! بنابراین این 1000 دانشجو ممکنه همزمان در دانشگاه حضور داشته باشند. تصور کنید در این دانشگاه کلاسی وجود نداشته باشه و همگی در محوطه دانشگاه مشغول آموزش دیدن باشند!
حالا فرض کنید که در میان این دانشجویان رشته های مختلفی وجود داشته باشه، گروهی در رشته برق، گروهی در رشته مکانیک و گروهی دیگر در رشته کامپیوتر و بقیه در رشته های دیگر مشغول تحصیل باشند که هریک در اون روز درس متفاوتی با یکدیگر دارند! به نظر شما چه اتفاقی ممکنه بیفته؟ حالا میشه به عمق فاجعه پی برد و اهمیت کلاس رو درک کرد!
بله اگه یه خورده فکر کنید می فهمید که هدف اولیه کلاس، در واقع جداسازی یا رده بندی هست!

در برنامه نویسی شما یک کلاس تعریف میکنید که به نوعی یک DataType هم به حساب میاد، و به راحتی میتونید از اون نمونه گیری (instance) کنید!
در دانشگاه هم (اگه کمی تأمل کنید می بینید که) از یک کلاس نمونه گیری شده و به تعداد زیادی در جای جای دانشگاه پخش شده! مثلاً دانشکده فنی ما نزدیک 20 تا کلاس داره! این کلاس ها همزمان استفاده میشن و همه اونها دارای خصوصیات (Property) مشترکی هستند مانند: داشتن شماره خاص، استاد، درس، تعداد دانشجویان، رشته دانشجویان و جنسیت و ... هست!
این کلاسها سر زمانهای معینی دایر میشن و حدود 2 ساعت بعد تعطیل! یعنی دایر شدن و تعطیل شدن یک کلاس رو میشه رویداد (Event) تلقی کرد!

در برنامه نویسی هم دقیقاً از همین مثالها الگو برداری شده!
حالا همین مثال رو به صورت کد نمایش میدیم:


Public Class UniversityClass

Public Property ClassNumber As Integer
Get

End Get
Set(ByVal value As Integer)

End Set
End Property

Public Property TeacherName As String
Get

End Get
Set(ByVal value As String)

End Set
End Property

Public Property LessonName As String
Get

End Get
Set(ByVal value As String)

End Set
End Property

Public Property StudentCount As Integer
Get

End Get
Set(ByVal value As Integer)

End Set
End Property

Public Sub Start()

End Sub

Public Sub [Stop]()

End Sub

End Class

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

خب حالا شما (مدیر گروه) قصد دارید یک کلاس ریاضی در دانشگاه برگزار کنید! با توجه به کلاسی که در بالا تعریف کردیم در برنامه نویسی چنین عمل میکنید:


Dim MathClass As New UniversityClass
MathClass.ClassNumber = 300
MathClass.LessonName = "Calculus"
MathClass.TeacherName = "Math Teacher"


در واقع شما یک Instance از کلاس اصلی ایجاد کردید و خصوصیات لازم رو بهش دادید!

حالا این کلاس قراره ساعت 10 صبح دایر و ساعت 12 تعطیل بشه! برای این کار چنین میکنیم:


If DateTime.Now = #10:00:00 AM# Then
MathClass.Start()
End If

If DateTime.Now = #12:00:00 PM# Then
MathClass.Stop()
End If



این روند تعریف و استفاده یک کلاس ساده بود! البته توجه داشته باشید که برای رعایت اصول شئ گرایی به Interface ها، نوع کلاس (مجرد بودن یا نبودن) و ... باید توجه داشت!

oliya24
سه شنبه 04 مرداد 1390, 02:19 صبح
دوستان میتونم خواهش کنم برای درک بهتر مطالب کدها رو به صورتی بنویسید که در محیط ویبی نوشته میشن !!!

لطفا من رو ببخشید که چنین توقعی از شما دوستان دارم ولی اگر این کار رو انجام بدیم دوستان تازه کاری مثل خود بنده بیشتر به عمق مسئله پی میبریم
با تشکر

oliya24
چهارشنبه 05 مرداد 1390, 22:01 عصر
دوستان خواهشان ما رو تنها نگذارید
متشکرم

oliya24
سه شنبه 18 مرداد 1390, 17:13 عصر
با سلام خدمت شما دوستان عزیز من امروز میخوام با توجه به مطالبی که دوستان گذاشتن مثالها و توضیحاتی دوباره خدمت شما دوستان عرض نمایم
امروز در مورد این 3 گزینه صحبت میکنم
1:استفاده از وراثت برای گسترش کلاسهای موجود
2:توسعه کلاسهای انعطافپذیر با استفاده از واسطو چند شکلی
3:ایجاد کلاسهای سفارشی و استفاده از انها
برنامه نویسی شی گرا از همان اصول طبیعت و زندگی روزمره پیروی میکند برای ساختن یک چیز پیچیده مثل یک خانه کافیست ابتدا اشیا سازنده ان مانند اجر ها را بوجود اوریدو بعد با کنار هم قرار دادن ان اشیا چیزی را که میخواهید خلق کنید
کلاس به عنوان الگویی برای شی
برنامه نویسی شی گرا به یک برنامه به عنوان مجموعه ای از اشیا که در تعامل با یکدیگر یک هدف واحد را براورده میکنند هر شی بخشی از برنامه است که به شیوه ای مشخص و کاملا کنترل شده با اشیا دیگر بر هم کنش دارد
برنامه نویسی شیگرا هم بر مبنای اصولی مشابه عمل میکند هر شی وظیفه و نقشی معین در کل برنامه دارد و به روشی مشخص با اشیا دیگر ارتباط برقرار میکند به بیان دیگر شی عنصری است خود کفا در یک برنامه کامپیوتری است که خصوصیاتمعینی دارد و وظایف مشخصی انجام میدهد
در کل مدمدل برنامه نویسی شی گرا بر اساس این مشاهده قرار دارد که در دنیای واقعی هر شی از اشا کوچکتری ترکیب و ساخنه شده است اشیا فقط یکی از جنبه های برنتمه نویسی شی گرا است ویژگی مهم دیگر این مدل استفاده از کلاس به عنوان یک الگو یا قالب برای ایجاد اشیا است تمام اشیایی که از یک کلاس ساخته میشوند دارای خصوصیات مشابه هستند کلاس واجد تمامی ویژگیها و مشخصات یک شی است
وقتی با یک زبان شی گرا مثل ویژوال 2010 برنامه مینویسیم اشیا را تک تک به وجود نمی اوریم بلکه ابتدا کلاسها را تعریف کرده و سپس اشیا را از روی انها میسازیم برای مثال فرض کنید کلاسی به نام vehicle تعریف کرده ایم که ویژگیهای مشترک تمام انواع خودروها رو در بر دارد اغلب خودروها در ویژگیهای زیر مشترک هستند
1:از متور به عنوان قوای محرکه استفاده میکنند
2:بار یا مسافر جا به جا میکنند
3:سوخت مصرف میکنند
این مطالب ادامه دارد

Behzad_MCP
سه شنبه 18 مرداد 1390, 17:59 عصر
سلام دوستان با عرض پوزش که پابرهنه دویدم وسط ولی وقتی بحث به این قشنگی و مفید رو دیدم نتونستم خودمو کنترل کنم
میخواستم بگم حالا که داریم درباره وراثت صحبت می کنیم پس از Interface که در راس وراثت قرار داره غافل نشیم . مثلا همین مثال دوستمون در پست قبلی بهتره که کلاسی به اسم Vehichle تعریف نکنیم بلکه یک Interface با نام Vehichle تعریف کنیم و متدها و پراپرتی های مشترک را در اون تعریف کنیم بعد میشه وسایل نقلیه دیگر مثل هواپیما ، کشتی ، ماشین و ... بیان در غالب کلاس این اینترفیس رو Implement بکنن :)

oliya24
چهارشنبه 19 مرداد 1390, 13:47 عصر
خیلی از شما دوست عزیز متشکرم من خودم تازه وارد به این مبحث هستم و اجازه بدید که پله به پله ما این تاپیک رو به پیش ببریم تا برسیم به مباحث جالبتر
و اگر هم شما مطلبی دارید من خواهش میکنم که من رو کمک کنید
متشکرم از شما دوست عزیزم

oliya24
چهارشنبه 19 مرداد 1390, 15:28 عصر
ادامه بحث کلاس نویسی :
کلاس vehicle به عنوان مدل تجریدی و مفهومی خودرو عمل میکند اما برای انکه بتوانیم چیزی واقعی داشته باشیم که برنامه بتواند با ان کار کند باید به کمک کلاس vehicle ایجاد کنیم به فرایند ایجاد شی از روی الگوی کلاس نمونه سازی INSTANSTAITION میگویند و به همین دلیل به شی اغلب نمونه INSTANCE هم اطلاق میشود برای ایجاد یک شی جدید از عملگر NEW استفاده میکنیم در زیر یک نمونه شی از کلاس VEHICLE به وجود میاوریم
DIM FOURWHEELVEHICLE AS NEW VEHICLE
توجه کنید که بدون عملگر NEW فقط یک متغیر از کلاس VEHICLE ساخته میشود نه یک شی البته باز هم میتوان به این شی متغیر نسبت داد
DIM FOURWHELVEHICLE AS VEHICLE
یا
FOURWHEELVEHICLE =NEW VEHICLE
هر 2 روش در عمل یکسان هستند ولی در جاهای مختلف کاربرد دارند با استفاده از کلاس VEHICLE میتوان اشیا VEHICLE مختلفی با خصوصیات متفاوت ساخت که در زیر به برخی از انها اشاره میکنم
1:خودروهای بنزین سوز یا گاز سوز
2:خودروهای که جی پی اس دارند و انهایی که ندارندو...........
خوب دیگه بحث رومیشکنم و به مباحث جالبتر میرم@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
شما در ویژوال بیسیک با کنترلی به نام BUTTON اشنایی دارید که در مقابل کلیک شدن واکنش نشان میدهدو عملی را انجام میدهد کنترلهای BUTTON اشیایی هستند که از روی کلاسی به همین نام ساخته شده اند این کلاس نماینده تمای خصوصیات ظاهری و رفتاری دکمه است مثلا متنی مه روی دکمه نوشته میشود خاصیت TEXT است و یا مثلا واکنش ان در مقابل کلیک شدن رویداد CLICK دکمه هایی که از روی کلاس BUUTON ساخته میشوند ویژگیهای اساسی ان را به ارث خواهند برد ولی ظاهر ویا حتی رفتار انها میتواند تا حدی متفاوت باشد میبینید که با داشتن یک کلاس واحد مییتوان انواع کاملا متفاوتی از دکمه ها یا اشیا دیگر را ایجاد کرد
دیگه داریم به بحثهای جالب میرسیم
این مطلب ادامه دارد

oliya24
چهارشنبه 19 مرداد 1390, 19:09 عصر
ادامه کار رو با 4 گزینه زیر شروع میکنم :
1: فیلد
2: خاصیت
3:متد
4:رویداد
هر کلاس از 2 بخش متمایز تشکیل مشود صفت و رفتار .صفت ان چیزی است که یک شی را از اشیا دیگر متمتیز میکند از صفتها میتوان برای مشخص کردن ظاهر و حالت و دیگر کیفیات یک شی استفاده کرد اولین چیزی که معمولا در یک کلاس تعریف میشود متغیر یا فیلد است
به صورت زیر
PUBLIC CLASS DATA
PUBLIC PI AS DOUBLE=3.141548725
END CLASS
تمام اشیا ساخته شده از کلاس DATA دارای فیلدی به نام PI خواهد بود که میتواند از مقدار ان استفاده بکند DIM OBJDATA AS NEW DATA
TEXTBOX1.TEXT=OBJDATA.PI
ایجاد خاصیت:بحث داغ
در ویژوال بیسیک صفت به نام خاصیت PROPERTY شناخته میشود برای پیاده سازی خاصیت در ویژوال بیسیک از کلمه کلیدی PROPERTY استفاده میکنیم به این صورت
PUBLIC CLASS VEHICLE
PUBLIC PROPERTY NUMOFWHEELS() AS INTEGER
END CLASS
به محض نوشتن دستور فوق که خاصیتی به نام NUM OF WHEELS تغریف میکند ویژوال بیسیک به طور خودکار دو بلوک به نام GET برای خواندن مقدار خاصیت و SET FVHD SJ ;VNK LRNHV OHWDJ HD[HN O,HIN ;VN
PUBLIC CLASS VEHICLE
PUBLIC PROPERTY NUMOFWHEELS() AS INTEGER
GET
END GET
SET(BYVAL VALUE AS INTEGER)
END SET
END PROPERTY
روتین GET معمولا مقدار یک متغیر محلی در کلاس رو بر میگرداند و روتین SET مقدار داده شده را به همان متغیر محلی نسبت میدهد به مثال زیر حتما توجه کنید کد را ببینید دوستان عزیز
PUBLIC CLASS VEHICLE
DIM MNUMOFWHEELS AS INTEGER
PUBLIC PROPERTYU NUMOFWHEELS() AS INTEGER
GET
RETURN RETURN MNUMOFEHEELS
END GET
SET(BYVAL VALUE AS INTEGER)MNUMOFWHEELS=VALUE
END SET
END PROPERTY
END CLASS
عزیزان توجه بفرمایید که من کد رو توضیح بدم
اکنون کلاس VEHICLE یک خاصیت به نام MNUMOFWHEELS دارد که برای دسترسی غیر مستقیم به متغیر محلی MNUMOFWHEELS به کار میرود
مطلب بعدی ایجاد متد است
این مطلب ادامه دارد
لطفا کمک کنید دوستان

oliya24
چهارشنبه 19 مرداد 1390, 20:21 عصر
ایجاد متد:
رفتار یعنی کارهایی که شی میتواند روی خودش یا در ارتباط با اشیا دیگر انجام دهد انواع مختلفی از رفتارهاوجود دارد :تغیر دادن یک خاصیت - دریافت اطلاعات از اشیا دیگر فرستادن پیام به اشیا دیگر و درخواست از انها برای انجام کاری خاص و غیره برای پیادهسازی رفتارهای یک کلاس از متد METHOD استفاده میشود متد مجموعه ای از چند دستور مرتبط است که وظیفهای مشخص را انجام میدهد اشیا برای ارتباط با یکدیگر از متد استفاده میکنند یک کلاس یا شی میتواند به دلایل مختلف متدی را در کلاس یا شی دیگر فراخوانی کند مفهوم متد در زبان برنامه سازی شی گرا شباهت زیادی با مفهوم تابع و سابروتین دارد در زیر یک متد به کلاس اضافه میکنم خوب دقت کنید
PUBLIC CLASS VEHICLE
PRIVATE MNUMOFWHEELS AS INTEGER
PUBLIC PROPERTY NUMOFWHEELS() AS INTEGER
GET
RETURN MNUMOFWHEELS
END GET
SET(BYVAL VALUE AS INTEGER)
MNUMOFWHEELS=VALUE
END SET
END PROPERTY
PRIVATE STRNUMOFWHEELS AS STRING="I HAVE 4 WHEELS"
PUBLIC SUB NUMBEROFWHEELS()
MSGBOX(STRNUMOFWHEELS)
END SUB
END CLASS

oliya24
پنج شنبه 20 مرداد 1390, 14:22 عصر
پیش بار گذاری متدها
پیش بار گذاری متدها OVERLOADING یک متد یعنی تعریف یک متد با ارگونانهای متفاوت و به یاد داشته باشید که خاصیت هم نوعی متد است برای مثال فرض کنید میخواهیم در کلاس ALERTCLASS متدی به نام ALERT داشته باشیم که بتواند به 2 طریق فراخوانی شود فقط متن و یا متن و ایکون برای این کار باید متد ALERT را پیش بارگذاری کنیم ببینید
PUBLIC CLASS ALERTCLASS
PUBLIC SUB ALERT(BYVAL TEXT AS STRING)
MSGBOX(TEXT)
END SUB
PUBLIC SUB ALERT (BYVAL TEXT AS STRING,BYVAL ICON AS MSGBOXSTYLE)
MSGBOX(TEXT,ICON)
ND SUB
END CLASS

oliya24
جمعه 21 مرداد 1390, 00:26 صبح
سلام به دوستان ارجمند خودم
دوستان از همه برخی از شما که خواننده این تاپیک هستید یه گله کوچک داشتم اینه که دوستان من این مطالب رو میگذارم هم برای یاد گیری خودم وشما و شما حتی یه نظر هم در مورد عملکرد این تاپیک ندادید
خواهشا شرکت کنید دوستان
من تشکر نخواستم فقط خواستم شما هم شرکت کنید

oliya24
چهارشنبه 26 مرداد 1390, 01:14 صبح
انگار من این تاپیک رو رها کردم کسی دیگه نکرد و بیاد یه 2 خطی بنویسه بابا به خدا کلاس نویسی نیاز یک برنامه نویس است بخصوص کسانی که میخوان حرفه ای بشن

oliya24
چهارشنبه 26 مرداد 1390, 01:20 صبح
خوب وراثت بحث امروز ما خواهد بود
یکی از امکانات برنامه نویسی شی گرا امکان استفاده مجدد از کد نوشته شده در کلاسهای دیگر است وقتی یک شی ایجاد میکنید در واقع در حال استفاده از کد کلاس ان هستید ولی اگر چیزی که میخواهید دقیقا همان خصوصیات و رفتار ها نباشد چطور؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟
در این قبیل موارد میتوانید از تکنیکی به نام وراثت INHERITANCE استفاده کنید و برخی از خصوصیات و رفتارهای یک کلاس را به ارث ببرید

oliya24
چهارشنبه 26 مرداد 1390, 02:42 صبح
اصلاح کننده های دسترسی
کلید واژه های PUBLIC , PRIVATE,PROTEXTED با استفاده از این کلمات میتوان سطح دسترسی به اعضای کلاس مشتق شده را محدود کرد در زیر به تعریف این کلید واژه ها میپردازم
PUBLIC:ایتمهایی که به صورت عمومی تعریف شده اند در تمام برنامه دیده خواهند شد از این اصلاح کننده در تمام سطوح میتوان استفاده کرد در کل وقتی ایتمی را به صورت عمومی تعریف میکنید دسترسی به ان هیچ محدودیتی نخواهد داشت
PROTECTED:حفاظت شده ایتم هایی که به این صورت در برنامه تعریف میشن فقط در همان کلاس یا کلاس مشتق شده دیده خواهند شد اصطلاح PROTECTED برای محدود کردن دسترسی به ایتم های مشتق شده به کار میرود
FRIEN:ایتمهایی که به این صورت تعریف میشن در تمام بر نامه دیده خواهند شد

oliya24
چهارشنبه 26 مرداد 1390, 02:47 صبح
یادم رفت اینا رو بگم
PRIVATE:ایتم هایی که به این صورت تعریف میشن فقط در همان محدوده تعریف شده دیده خواهند شد
PROTECTED FRIEND: ایتم هایی که به این صورت تعریف میشن از ویژگیهای FRIEND ,PROTECTED را همزمان خواهند داشت