close
دانلود آهنگ جدید
کلاس ها و ساختارها (Classes و Structs) قسمت 1

یک توسعه دهنده .Net

کلاس ها و ساختارها (Classes و Structs) قسمت 1

C#,Classes,Structs,

 تعریف (اعلام)  یک کلاس یا ساختار  شبیه یک طرح  که برای ایجاد نمونه ها یا اشیاء از آن در زمان اجرا استفاده میشود.اگر شما یک کلاس یا ساختار تعریف (اعلام) کنید و آن را Person بنامید، Person نام نوع است. اگر شما یک متغییر p  را تعریف (اعلام) و مقدار اولیه از نوع Person در نظر بگیرید ، به p یک شی یا نمونه از Person گفته می شود.  میتوان چندین نمونه ازنوع Person  ایجاد کرد، و هر نمونه می تواند  مقدار property  و field  متفاوتی داشته باشد. یک کلاس (Class) از…

کلاس ها و ساختارها (Classes و Structs) قسمت 1

کلاس ها و ساختارها (Classes و Structs) قسمت 1 350

 تعریف (اعلام)  یک کلاس یا ساختار  شبیه یک طرح  که برای ایجاد نمونه ها یا اشیاء از آن در زمان اجرا استفاده میشود.اگر شما یک کلاس یا ساختار تعریف (اعلام) کنید و آن را Person بنامید، Person نام نوع است. اگر شما یک متغییر p  را تعریف (اعلام) و مقدار اولیه از نوع Person در نظر بگیرید ، به p یک شی یا نمونه از Person گفته می شود.  میتوان چندین نمونه ازنوع Person  ایجاد کرد، و هر نمونه می تواند  مقدار property  و field  متفاوتی داشته باشد.

یک کلاس (Class) از نوع مرجع یا refrence type  است. وقتی یک شی از کلاس ساخته میشود، متغییر که شی به آن اختصاص داده شده فقط یک refrence (یک مرجع)  به memory (حافظه) دارد. هنگامی که شی مرجع به یک متغییر جدید اختصاص داده میشود، متغییر جدید اشاره به شی اصلی (منظورمون همون شی مرجع هست) دارد . تغییرات ایجاد شده از طریق متغییر در متغییر دیگر منعکس می شود  زیرا هر دو اشاره به  داده یکسان دارند.

 

یک ساختار (Struct) یک نوع مقداری یا value type است. زمانی که یک ساختار ایجاد می شود، متغییری  که ساختار به آن اختصاص داده می شود ، اطلاعات واقعی ساختار را نگه میدارد. هنگامی که ساختار به یک متغییر جدید اختصاص داده میشود، کپی میشود. متغییر جدید و متغییر اصلی شامل دو نسخه جداگانه از داده مشابه هستند. تغییرات ایجاد شده در یک نشخه بر روی کپی دیگر تاثیر نمی گذارد.

 

در کل ، کلاس ها برای مدل  با رفتار  پبچبده تر ( more complex) ، یا داده ای که قصد داریم پس از ایجاد یک  شی کلاس  اصلاح شود.

For more information, see ClassesObjects, and Structs.

 

مثال

 

CustomClass  در فضای نام ProgrammingGuide  سه عضو دارد: یک سازنده (constructor) نمونه ، یک یک property (خاصیت) با نام Number  ، و یک متد با نام Multiply . متذ Main در کلاس Program یک نمونه (شی) از CustomClass ایجاد میکند، و متد و خاصیت شی به توسط علامت . (نقطه) در دسترس میباشد.

مثال

 

Encapsulation (کپسوله سازی)

گاهی اوقات کپسوله سازی به عنوان اولین  ستون یا اصل برانامه نویسی شی گرا اشاره میشود. با توجه به اصل کپسوله سازی، یک کلاس یا ساختار میتواند مشحص کند که چگونه هر یک از اعضای آن خارج از کد کلاس یا ساختار در دسترس باشند. متد ها و متغییر هایی که در خارج از کلاس یا اسمبلی (assembly) مورد استفاده قرار نمیگیرند میتوانند برای محدود کردن پتانسیل خطاهای برنامه نویسی یا سوء استفاده های مخرب پنهان شوند.

For more information about classes, see Classes and Objects.

 

Members (اعضا)

همه متد ها ، فیلد ها (fields) ، ثبت ها (constants) و ریدادها (events) باید در داخل یک نوع تعریف شوند; اینها را اعضای نوع (members of the type) می نامند. برخلاف دیگر زبان ها  ، در C# هیچ متغییر یا متد global (جهانی) وجود ندارد. حتی نقطه ورود یک  برنامه، متد Main ، باید در یک کلاس یا ساختار اعلام (تعریف) شود. لیست زیر شامل انواع اعضایی که ممکن است در یک کلاس یا ساختار اعلام شود.

Accessibility (دسترسی)

هدف بعضی از متدها و پراپرتی ها   فراخواندن  یا دسترسی پیدا کردن آنها به بیرون از کلاس یا ساختار است، که به عنوان client code (کد مشتری/ کاربر) شناحته میشود. متد ها و پراپرتی های دیگر ممکن است فقط برای استفاده در کلاس یا ساختار خود باشند. مهم این است که دسترسی به کد خود را محدود کنید تا تنها client code درنظر گرفته شده بتواند به آن دسترسی پیدا کند. شما چگونگی دسترسی انواع و اعضای آنها ( اعضای نوع) به کد کاربر (clien code) را  توسط access modifiers (اصلاح کنندگان دسترسی) مشخص میکنید که عبارت اند از: public , protected , internal , protected internal , private و private protected . دسترسی پیشفرض private  میباشد. برای اطلاعات بیشتر ، Access Modifiers ببینید.

 

Inheritance(وراثت)

کلاس ها (و نه ساختار ها) از مفهوم وراثت پشتیبانی میکنند. یک کلاس که مشتق شده از کلاس دیگر (کلاس پایه / base class) به طور خودکار شامل تمام اعضای public , protected  و internal کلاس پایه به جز سازنده ها  (constructors) و finalizer هست. For more information, see Inheritanceand Polymorphism.

 

کلاس ها ممکن است به عنوان انتزاعی abstract  اعلام شوند، که به این معنی است که یک یا چند متد آن پیاده سازی ندارند.اگرچه نمی توان از کلاس های انتزاعی نمیتوانند مستقیما استفاده کرد،می توان از آنها به عنوان کلاس های پایه برای کلاس های دیگر بهره برد و متدهای پیاده سازی نشده  را در کلاس ها پیاده سازی کرد. کلاس ها همچنین میتوانند به صورت sealed (مهروموم شده) اعلام شوند تا کلاس های دیگر نتوانند او را به ارث ببرند.For more information, see Abstract and Sealed Classes and Class Members.

Interfaces(واسط ها/رابط ها)

 کلاس ها و ساختار ها می توانند چندین واسط را به ارث ببرند. ارث بردن از یک واسط به این معنی است که تمام متدهای تعریف شده در واسط باید پیاده سازی شوند. For more information, see Interfaces.

Generic Types(انواع عمومی / انواع جنریک)

کلاس ها و ساختار ها را میتوان با یک یا چند پارامتر نوع تعریف کرد.client code  نوع (type) آن را مشخص میکند  زمانی که یک نمونه از نوع (type) ایجاد میکند(منظور اینکه زمان ایجادش نوع آن مشخص میشود). برای مثال کلاس  List<T> در فضای نام  System.Collections.Generic  با یک پارامتر نوع (type parameter) تعریف شده است.  کد کاربر (client code)  یک نمونه از List<string> یا List<int>  ایجاد میکند  برای مشخص کردن نوعی که لیست نگهداری خواهد کرد.For more information, see Generics.

Static Types (انواع ثابت /انواع استاتیک)

کلاس ها (و نه ساختار ها)  را می توان به صورت استاتیک اعلام کرد. یک کلاس استاتیک میتوانند تنها اعضای استایک داشته باشد و نمیتواند با کلیدواژه New نمونه از آن سااخت.هنگامی که برنامه  load (بارگذازی)  میشود یک نسخه از کلاس در حافظه بارگذاری میشود،و اعضای آن از طریق نام کلاس قابل دسترسی هستند.کلاس ها و ساختارها می توانند حاوی اعضای استایک باشند.For more information, see Static Classes and Static Class Members.

Nested Types(انواع تو در تو)

یک کلاس یا ساختار را می تواند در  کلاس یا ساختار دیگری قرار داد.For more information, see Nested Types.

Partial Types (انواع بخشی/انواع جزئی)

شما میتوانید بخشی از یک کلاس ، ساختار یا متد را در یک فایل کد و بخش دیگری در یک فایل کد جداگانه تعریف کنید.  For more information, see