# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > VB.NET >  سوال:برنامه نویسی شی گرا چیست ؟شی چیست؟ارتباطش با کلاس چیه؟

## abbasrahmati

سلام من راستش درست نفهمیدم برنامه نویسی شی گرا چیه ؟ میخوام بدونم آیا مثلا دکمه ها در برنامه جز اشیا اند یا نه ؟ 
اصلا شی چیه ؟ و کلاس چیه ؟ در آخر هم چه ارتباطی بین کلاس و شی وجود داره؟
هر کسی میتونه خیلی راحت توضیح بده ممنون میشم

----------


## abbasrahmati

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

----------


## tooraj_azizi_1035

سلام،
اینترنت خوب توضیح می ده شما باید تسلط کافی بر درک مطلب انگلیسی داشته باشید تا متوجه توضیحات در مورد شیءگرائی بشید.

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

class Material
{
int mass;
void Move (3DPoint From, 3DPoint To);
}

Move همان حرکت است و mass همان جرم. mass یک خاصیت است و Move یک رفتار.
من فقط یکی از خواص مواد را که جرم است در این دسته یا طبقه یا کلاس تعریف کردم هر چیزی که علم فیزیک به وجود آن قائل است را می توانیم به این کلاس اضافه کنیم. تا اینجا مفهوم کلاس معلوم شد. کلاس یعنی دسته یا طبقه ای خاص از پدیده ها که دارای خواصی هستند که همان خواص باعث شده آنها در طبقه ای منحصر به فرد قرار گیرند.
اگر بیاییم کلاس مایعات را تعریف کنیم چون مایعات ضمن اینکه خودشان خصوصیات خاصی دارند جزو کلاس مواد هستند پس ماده بودن را از کلاس ماده یا Material به ارث می برند یعنی مفهوم توارث یا Inheritance:
class Water:Material
{

}
آب یک مایع است و ماده بودنش را از کلاس Material به ارث برده. تفاوت کلاس و شیء در این است که کلاس فقط یک تعریف است که در جهان واقع عینیت پیدا نکرده و هنوز در حد تصور باقی مانده است. اگر پدیده ای در جهان واقع وجود داشته باشد که متعلق به یک دسته یا کلاس خاص باشد در این صورت به آن پدیده شیء می گوئیم. آن پدیده چون *وجود* دارد و متعلق به دسته ای خاص است شیء نام می گیرد.


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

مفهوم بعدی مفهوم کپسوله کردن یا Encapsulation است. Encapsulation بدین معنی است که یک کلاس مکانیزم عملکرد داخلی اش را از جهان خارج پوشیده نگه می دارد مانند جعبه سیاه هواپیما یا موتور پژو 206. هر کدام از اعضاء یک کلاس (منظور فیلد ها، متدها و سایرین) دارای یک سطح دسترسی هستند:
public عمومی
private محرمانه یا خصوصی
protected محافظت شده
internal داخلی

اگر عضوی از یک کلاس محرمانه باشد جهان خارج به آن دسترسی نخواهد داشت. این یعنی کپسوله کردن آن عضو.

مفهوم بعدی چندریختی یا Polymorphism است به این معنی که یک متد می تواند تحت عنوان یک نام رفتارهای متفاوتی داشته باشد که البته معیار تفکیک نوع پارامترهای ورودی متد است که نباید دقیقاً نمونه ای از آن وجود داشته باشد مانند تابع Sum در اکسل که تحت یک نام هم داده های اعشاری را جمع می کند و هم صحیح.

توضیحات بیشتر را سعی کن از گوگل بدست بیاری مثل جستجو با کلید واژه Fundamentals of Object Oriented Programming

بعد از سوال کردن چند روز صبر کنید اگر جواب ندادند بعد تمام سایت رو به رگبار ببندید!

----------


## abbasrahmati

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

----------


## javooneh

برنامه نویسی شی گرا همون برنامه نویسی مبتنی بر شی هست یعنی شما واسه پیاده سازی یک سیستم باید اول بگردی اشیا یا موجودیت های یک سیستم پیدا کنی مثل کارمند مثل مشتری - کاربر و .... بعد هرکدام از این موجودیت ها یک سری توابع و متغییر های دارند مثل واسه یک کارمند تابع درج مشخصاتش توی بانک اطلاعاتی .بعد اینا رو که رو کاغذ پیاده سازی کردی میای مثلا یک کلاس به نام کارمند ایجاد میکنی این توابع و متغییر ها رو به همراه شاید یک سری پارامتر توی این کلاس تعریف میکنی .بعد مثلا برای هر کارمند یک شی از این کلاس ایجاد میکنی که میتونی از متغییر هاش استفاده کنی - اونا رو مقدار دهی کنی و یا توابعش صدا بزنی و....
انگار یک شی کمک میکنه یک کارمند جدید رو شبیه سازی کنی و یک کلاس یک الگو از یک کارمندمیشه در نظر گرفت

----------


## tooraj_azizi_1035

خود Component یک کلاس هست من گفتم همه چیز کلاسه.
این سینتکس کلاس کامپوننت هست.
public class Component : MarshalByRefObject, IComponent, IDisposable
به استیدتان این منبع رو نشون بدید:
http://msdn.microsoft.com/en-us/libr...(v=vs.80).aspx

----------


## dr3dr3

سلام جناب
شي گرايي چيزي نيست كه بشه اينجا توضيح داد يعني خيلي سخته وقت هم زياد ميبره ولي ي ي.......
شي گرايي چند بخش مهم داره كه دنبال اونا باش
*1-نحوه تعريف كلاس ها
2-فهم مفهوم شي (صفت ها(attribute or properties) و رفتارها(متد يا همان تابع))
3-انواع فراخواني و استفاده شي براي كلاس
5-انواع اعلان تابع در براي براي كلاس
6-سطوح دسترسي (private-public-protected)
7-سازنده و مخرب
8-سر بار گذاري(ابزار پياده سازي چند ريختي)
9-ارث بري
يك pdfبه زبان انگليسي هم ميزارم كه اگه به خواي كاملا حرفه اي درك كني حتما دانلودش كن
به چند تا سرور اپلود ميكنم كه مشكلي نباشه
                                Object-Oreinted Programking in c
                                         .::    دانلود از سرور 1  ::.
                                         .::   * *دانلود از سرور 2  ::.
                                         .::   * *دانلود از سرور 3*

----------


## abbasrahmati

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

----------


## morrning

اگه یه فایل داشته باشی و روی چند تا سی دی رایتش کنی . اون فایله حکم کلاس و فایل هایی که روی سیدی رایت شده همراه با خود سی دی ها حکم شی رو دارن فکر کنم مثال خوبی بود... :کف کرده!:

----------


## haniyehghassami

سلام
ممنون
چه توضیحات کامل و جامعی بودن خدا وکیلی کلی فکم بسته شد

واقعا ممنون

----------


## Ramin2097

> سلام جناب
> شي گرايي چيزي نيست كه بشه اينجا توضيح داد يعني خيلي سخته وقت هم زياد ميبره ولي ي ي.......
> شي گرايي چند بخش مهم داره كه دنبال اونا باش
> *1-نحوه تعريف كلاس ها
> 2-فهم مفهوم شي (صفت ها(attribute or properties) و رفتارها(متد يا همان تابع))
> 3-انواع فراخواني و استفاده شي براي كلاس
> 5-انواع اعلان تابع در براي براي كلاس
> 6-سطوح دسترسي (private-public-protected)
> 7-سازنده و مخرب
> ...


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

----------


## hamedjon

این فابل برنامه نویسی به سبک شیگرایی را به نحو احسن توضیح داده http://www.google.com/url?sa=t&rct=j...XyG5PNc-peT_Lw :خجالت:

----------


## Bahman_8088

کل مفاهیم شی گرایی
 در این آدرس است 
http://s6.picofile.com/file/81841573...ction.rar.html

----------


## ehsanxxx

برای یادگیری مفهوم شی گرایی هم از مطالب این سایت میونی استفاده کنی هم چندتا لینک برای میزارم که مطالب خوبی دارن:
http://stackoverflow.com/questions/3...mming-language

امیدوارم بدردت بخوره

----------

