|
|
#1 (لینک این پست) |
![]() |
یکی از گیج کننده ترین مفاهیمی که در در دنیای برنامه نویسی شی گرا ممکن بسیاری از برنامه نویسان با آن مواجه می شوند این است که یک کلاس چیست و به چه چیزی اطلاق می شود؟ پاسخ این سوال در صورت آن نهفته است کلمه کلاس(Class) در زبان انگلیسی به معنای دسته است در واقع کلاس دسته ای است از ویژهگی ها و خصوصیات در باره یک موجودیت معین که می تواند در دنیای واقعی وجود داشته باشد و یا خیر. که در یک مکان گرد آوری شده اند و به صورت یک دسته در آمده اند تا از بهم ریختگی و درهم شدن در امان باشند در واقع یک کلاس یکسری اطلاعات و ویژه گی ها است درباره چیزی. به عنوان مثال اطلاعات شخصی یک فرد اعم از نام، نام خانوادگی، شماره تلفن و.... اگر در مکانی جمع شوند می توانند یک کلاس را تشکیل دهند. اما شی چیست؟ شی در واقع نمونه ای است از یک کلاس یک کلاس یکسری ویژه گی ها را در یک مکان گردآوری می نماید اما این ویژه گی ها خام یا به اصطلاح مقداردهی نشده اند یعنی به عنوان مثال اگر همان کلاس اطلاعات شخص را در نظر بگیرید اگر شئی از این کلاس تعریف نکنیم خالی است درست است که این کلاس ویژه گی هایی را گردآوری کرده اما این ویژهگی ها با هیچ مقداری پر نشده اند. نکته مهمی که در مورد اشیا وود دارد این است که اشیایی از یک کلاس می توانند از یکدیگر متمایز باشند یعنی مثلا نام یکی از افراد ممکن است علی باشد و نام دیگری حسن درست است که هر دوی این اشیا از کلاس اطلاعات شخصی هستند ولی مقادیر متفاوتی را درون خود جای داده اند.
نحوه تعریف کلاس ها در C#: نکته ای که در اینجا لازم می بینم به شما یادآوری کنم این است که برای نوشتن یک کلاس یا هر برنامه دیگری بهتر است ابتدا تمامی جنبه های آنرا در نظر بگیرید و ابتدا آن را روی کاغذ پیاده سازی نمایید و سپس به نشتن آن بپردازید چرا که طراحی قبل از پیاده سازی به شما کمک زیادی در پیش گیری از خطاهای منطقی می کند درست است که ممکن است به نظر بیاید این کار طلف کردن وقت است اما به یاد داشته باشید برای ساخت یک خانه ابتدا باید نقشه آنرا در دست داشته وگرنه هیچ کس نمی داند چه چیزی اتفاق می افتد مثلا ممکن است لوله های آب به جای اینکه از داخل دیوار ها رد شوند از سقف سر در بیاورند!!! البته طراحی کلاس ها مبحث بسیار گسترده ای است و شامل موارد بسیار زیادی می شود که از حوصله این مقاله خارج است اما به عنوان راهنمایی های کلی می توانم به شما بگویم که ابتدا بهتر است یک نقشه کلی از کلاستان تهیه نمایید در این مرحله احتیاجی نیست به جزئیات بپردازید در واقع شما در این مرحله نیازمندیهای مسئله خود را طرح می کنید و اعمالی را که انتظار دارید کلاستان انجام دهد بر روی کاغذ یا در هر مکان دیگری می آورید پس از این مرحله می توانید کلاس خود را جزء به جزء پیاده سازی نمایید. تنها نکته باقیمانده این است که بهتر است بخشی را نیز به خطاهایی که ممکن است در کلاس شما بیفتد اختصاص دهید و به خطاها هم فکر کنید. اما می رسیم به نحوه تعریف کلاس ها در C# همان طور که می دانید C# بر خلاف عضو قدرتمند خانواده خود C یک زبان کاملا شی گرا است و برنامه نویسی ساختاریافته را پشتیبانی نمی کند و هر چیزی که شما در C# پیاده سازی می نمایید باید به صورت کلاس ها باشد بنابراین برای برنامه نویسی با C# باید کاملا با ریزه کاری های تعریف و پیاده سازی کلاس ها آشنا باشید در غیر این صورت نخواهید توانست از ویژه گی های این زبان به درستی استاده نمایید. برای تعریف یک کلاس در C# می توانید این عمل را در یک فایل کلاس یا انجام دهید این فایل ها دارا پسوند .CS هستندبرای ایجاد چنین فایل هایی می توانید پس از ایجاد پروژه جدید در Visual Studio روی نام پروژه خود راست کلیک کرده و سپس گزینه Add و سپس Class را انتخاب نمایید پس از انجام این عمل کلاس مورد نظر شما ایجاد خواهد شد. شکل کلی تعریف کلاس ها در C# به صورت زیر است: Access Modifier class ClassName { //you class body } قسمت هایی که به صورت کج(Italic) مشخص شده اند با نام های دلخواه شما جایگزین خواهند شد بخش اول که Access Modifier است مشخص کننده این است که آیا کلاس های شما در خارج از این فایل هم می توانند مورد استفاده قرار بگیریند یا خیر این قسمت می تواند شامل دو گزینه public یا private همان طور که می دانید در C# کلاس ها در بخش هایی به نام فضای نامی (namespace) دسته بندی شده اند تا دو کلاس به یک نام باعث ایجاد اختلال در برنامه نشود تمامی کلاس هایی که شما در یک فایل کلاس تعریف می کنید هم بخشی است از یک فضای نام اگر به بالای فایل کلاس خود نگاهی بیندازید می بینید که در ابتدای کد شما خطی مانند زیر وجود دارد البته به جای name یک نام قرار دارد: namespace name { Access Modifier class ClassName { //you class body } } حال اگر کلاس شما دارای مشخصه دسترسی public باشد با اضافه کردن فضای نام خود به فایل دیگری (توسط دستور using که در ادامه توضیح داده شده) می توانید متغیری از نوع کلاس خود تعریف نموده و از آن استفاده کنید اما اگر مشخصه دسترسی کلاس شما private باشد فقط در همان فایل و فضای نام می توانید از کلاس خود استفاده نمایید به یاد داشته باشید اگر توصیف کننده دسترسی را ننویسید به طور پیش فرض private در نظر گرفته خواهد شد. پس از نوشتن نام کلاس خود و توصیف کننده دسترسی می توانید بدنه کلاس خود را بین دو علامت {} بنویسید در این قسمت می توانید متغیر ها و توابع مورد نیاز خود را در درون کلاس تعریف نمایید برای تعریف یک متغیر در کلاس باید به همان صورت عادی عمل نمایید تنها نکته ای که باید به آن توجه نماید این است که یک مشخصه دسترسی هم باید برای متغیر خود در نظر بگیرید که می تواند شامل public / private / protected باشد اگر مشخصه دسترسی متغیر یا تابعی درون کلاس شما private باشد آن متغیر و یا تابع فقط توسط اعضای داخلی کلاس در دسترس خواهد بود و یک شی از بیرون نمی تواند به آن عضو دسترسی داشته باشد مشخصه دسترسی protected در ادامه برسی می شود. پس از تعریف کلاس خود می توانید البته اگر لازم است و مایل هستید از آن در برنامه خود استفاده نمایید برای اینکه بتوانید از یک کلاس که در یک فایل (البته در همان پروژه) است استفاده نمایید باید با استفاده از دستور using نام فضای نامی خود را در بالای برنامه اضافه نمایید باید این دستور را در کنار بقیه دستورات using در بالای برنامه اضافه نمایید اگر به ابتدای فایل خود مثلا کد فرم برنامه خود نگاهی بیندازید این دستورات را پیدا خواهید کرد به عنوان مثال در بالای یک فرم عادی پس از ایجاد این دستورات using قرار دارند: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; شما هم می توانید دستورات using خود را به این قسمت اضافه نمایید دستورا using به کامپایلر می گوید که از کلاس های موجود در فضای نام ذکر شده در جلوی آن می خواهیم استفاده نماییم. پس از اضافه کردن فضای نامتان به پروژه می توانید متغیری از نوع کلاس مورد نظر تعریف نموده و از آن استفاده نمایید برای انجام این عمل باید به صورت زیر عمل نمایید: YourClassName InstanceObject=new ClassName(); همان طور که مشاهده می نمایید برای تعریف یک کلاس ابتدا باید نام کلاس خود را ذکر نمایی و سپس نام شی مورد نظر خود از نوع کلاس را ذکر نموده و پ از آن باید بعد از علامت مساوی و با ذکر کلمه کلیدی new نام کلاس خود را به همراه دو پرانتز باز و بسته بیاورید. اما سوالی که در اینجا ممکن است برای شما مطرح شود این است که چرا کلاس ها به این گونه تعریف می شوند و کاربرد کلمه کلیدی new چیست؟ در پاسخ باید بگویم هنگامی که شما یک متغیر از نوع کلاس تعریف می کنید این متغیر یک شی نیست بلکه در واقع یک ارجاع است که می تواند به آن شی اشاره کند و شی واقعی با استفاده از کلمه کلیدی new ایجاد می گردد کاربرد کلمه کلیدی new در این است که ایم کلمه کلیدی در زمان اجرا حافظه مورد نیاز برای ایجاد شی را از سیستم می گیرد و یک ارجاع به آن را باز می گرداند که این ارجاع می تواند در متغیر تعریف شده ذخیره کردد تعریف تمامی اشیا در C# باید به این صورت انجام شود. اما پس از کلمه کلیدی new نام کلاس به همراه دو پرانتز ذکر می شود این به C# می گوید که تابع سازنده کلاس را فراخوانی کن تابع سازنده تابعی است که در ابتدای ایجاد هر شی فراخاونی می شود، این تابع هم نام با نام کلاس بوده و هیچ نوع مقدار بازگشتی هم ندارد اگر شما تابع سازنده ای برای کلاس خود تعریف ننمایید C# سازنده پیش فرض کلاس را اجرا خواهد کرد مانند مثال قبلی. در صفحه بعد به عنوان مثال تعریف یک کلاس ساده را آورده ام این کلاس که PersonInfo نام دارد شامل اطلاعات یک انسان از قبیل قد، رنگچشم و... است: public class PersonInfo { private int _Age; private string _Name; private string _LastName; public void Show() { Console.Write("Name=" _Name " Last Name=" _LastName "Age=" _Age.ToString()); } } همان طور که مشاهده می نمایید این کلاس شامل چند متغیر خصوصی و یک تابع است. همان طوریکه در مثال بالا مشاهده نمودید تعریف یک کلاس بسیار ساده بوده و احتیاج به انجام اعمال پیچیده ای ندارد اما تنها نکته ای که در تعریف این کلاس باید به آن توجه نمایید این است که همان طور که می بینید نام متغیر های عضو کلاس که اصطلاحا به آنها فیلد می گویند با یک _ شروع شده است مثل: _Name این نوع نامگذاری در مورد متغیرهای خصوصی بسیار مرسوم است چرا که ممکن است در یک کلاس بخواهید خصوصیت هایی(که در ادامه بررسی شده اند) را تعریف کنید که همنان متغیر شما باشد در چنین مواقعی نامگذاری متغیرها به این صورت باعث جلوگیری از ایجاد تداخل خواهد شد |
|
|
|
| کاربر مقابل از mscomp بخاطر پست مفید و زیبایش تشکر کرده است | آسمونی (10-16-2008) |
| فروشگاه اینترنتی خریدنی دات کام | |
|
|
![]() |
| كاربران در حال ديدن تاپیک: 1 (0 عضو و 1 مهمان) | |
| ابزارهاي تاپیک | |
| نحوه نمايش | |
|
|
تاپیک های مشابه
|
||||
| تاپیک | آغازگر تاپیک | انجمن | پاسخ ها | آخرین ارسال |
| ..::: فقط رپ :::... | Morteza | موسیقی | 28 | 19 ساعت پيش 09:10 PM |
| راهنمای طراحی قالب وبلاگ و کدهای بلاگفا | Morteza | طراحی صفحات استاتیک | 4 | 09-27-2008 08:43 PM |
| بایدها و نباید ها در روابط دختران و پسران | Morteza | عشق و دلدادگی | 19 | 09-09-2008 10:12 PM |
| آموزش کامل دلفی همراه با نحوه ایجاد پایگاه داده | majidhosseiny86 | Delphi | 1 | 12-03-2007 05:56 PM |
| Nokia 6233 موسیقی در اوج | foadunique | . اخبار موبایل | 0 | 11-26-2007 09:55 AM |