|
در ابتدا به نمایندگی از کلیه نویسندگان وبلاگ جادوی سی شارپ سال نو رو به شما تبریک می گم.
فضای نام : Namespace ویژوال استدیو برای هر پروژه ای که شروع می کنید یک فضای نام با نام پروژه ایجاد می کند، البته شما می تونید با استفاده از پنجره خصوصیات ابن نام را تغییر دهید یا اینکه اون رو خالی کنید که به معنای اینه که پروژه شما در فضای نام قرار ندارد. همچنین شما این اجازه رو دارید که فضای نام خود را تعریف کنید. با استفاده از فضای نام می تونید کلاسهایی با نامه های مشابه در یک پروژه ایجاد نمایید، برای این منظور کافیست هر کلاس را در یک فضای نام مجزا قرار دهید. در زمان استفاده از کلاس مورد نظر نیز باید فضای نام آن را مشخص نمایید. در لیست کد 1 یک کلاس تعریف شده با نام Rectangle دیده می شود که همنام با کلاس Rectangle از فضای نام Drawing است: /// Sample Code 1 CsharpPats.Rectangle cpRect; System.Drawing.Rectangle sdRect; private void init() { rect1 = new CsharpPats.Rectangle (10, 20, 70, 100); rect2 = new System.Drawing.Rectangle (20, 30, 80, 200); } تعاریف Public, Private و Protected: در سی شارپ می توان متدهای کلاس و متغیرها را به شکل Public, Private یا Protected تعریف نمود. متد یا خصوصیت Public یا عمومی در کلاسهای دیگر قابل دسترس است. متد یا خصوصیت Private یا خصوصی فقط در همان کلاس قابل دسترس است. معمولا تمامی متغیرهای کلاس را به شکل Private خصوصی تعریف می کنیم و برای دسترسی به آنها از توابع دسترسی Get و Set استفاده می کنیم. اینکه متغیرهای در خارج از کلاس در دسترس باشند، ایده بسیار بدی خواهد بود. زیرا این امر تخلف از قانون کپسوله نمودن (Encapsulation) در شی گرایی است. یا به عبارت دیگر تمامی متغیرهای کلاس فقط باید در محدوده کلاس قابل دسترس باشند. در سی شارپ می توان متدها و متغیرها را به شکل Protected یا محافظ شده نیز تعریف نمود. متد یا متغیر محافظت شده در تمامی کلاس و زیرکلاسهای تعریف شده قابل دسترس است. یا بطور ساده متد یا متغیر محافظت شده فقط در همان کلاس یا کلاسهایی که از آن مشتق می شوند قابل دسترس است و خارج ار کلاس نمی توان به آن دسترسی داشت. Overloading: در سی شارپ نیز همانند دیگر زبانهای برنامه نویسی شی گرا می توان یک متد با نام یکسان و آرگومانها یا امضای مختلف تعریف نمود. برای مثال ما می خواهیم یک متد برای رسم مستطیل تعریف نماییم که از آن برای رسم مستطیل و مربع استفاده نماییم. در این حالت یک متد رسم دارای چهار آرگومان و دیگری دارای سه آرگومان خواهد بود. به لیست کد 2 توجه کنید: /// Sample Code 2 در مثال فوق یک فضای نام
به اسم Draw تعریف شده که دارای دو متد یکسان با آرگومانهای مختلف است (متد Draw
اصطلاحا Overload شده است) تصویر زیر استفاده از کلاس Rectangle را در زمان کد
نویسی نمایش می دهد.namespace Draw { class Rectangle { public void DrawRect(long x,long y,long w,long h) { // Write Your Code Here [Draw Rectangle] } public void DrawRect(int x,int y,int w) { // Write Your Code Here [Draw Square] } } }
Draw.Rectangle drawingRect=new
Draw.Rectangle(); drawingRect.DrawRect(15,25,200,40); drawingRect.DrawRect(30,20,50); کلمات کلیدی Virtual و Override: اگر متدی رو می خواهید در اختیار کلاسهای مشتق شده از کلاس برای بازنویسی قرار بدید، باید اون رو از نوع Virtual تعریف کرده باشید. این به معنی اینه که کلاس مشتق شده از کلاس پایه می تواند دارای یک متد با نام، آرگومان و امضای یکسان با متدی از کلاس پایه باشد. در این حالت شما باید متد خود را با کلمه کلیدی Override در کلاس مشتق شده تعریف نمایید. - دقت کنید که اگر در کلاس مشتق شده یک متد را Override کنید بدون اینکه همان متد در کلاس پایه Virtual تعریف شده باشد، کامپایلر یک خطا از شما خواهد گرفت. - اگر یک متد را بدون استفاده از کلمه کلیدی Override مجددا بازنویسی نمایید نیز کامپایلر یک خطا از شما خواهد گرفت. - اگر متدی رو در کلاس پایه Virtual تعریف نکرده باشید و در در کلاس مشتق شده متدی با همان نام بدون کلمه کلیدی Override تعریف کنید، خطایی رخ نخواهد داد و کامپایلر فقط یک اخطار تولید خواهد کرد و متد تعریف شده نیز قابل استفاده است. در لیست کد 3 مثالی از تعریف متدهای Override دیده می شود (برای تست کد زیر یک کلاس به پروژه اضافه نمایید و کدهای آن را با کد زیر جایگزین کنید): /// Sample Code 3 namespace Draw { class Rectangle { public void DrawRect(long x, long y, long w, long h) { // Write Your Code Here [Draw Rectangle] } public void DrawRect(int x, int y, int w) { // Write Your Code Here [Draw Square] } virtual public void DrawSquare(int x, int y, int w) { // Write Your Code Here [Draw Square] System.Windows.Forms.MessageBox.Show("DrawSquare From Base Class Called"); } } class Square : Rectangle { public void DrawCircle(int x, int y, int r) { // Write Your Code Here [Draw Circle] } override public void DrawSquare(int x, int y, int w) { System.Windows.Forms.MessageBox.Show("DrawSquare From Derived Class Called"); // Write Your Code Here [Draw Double Square] } } } جایگزینی یک متد با استفاده از کلمه کلیدی یک راه دیگر برای بازنویسی متدی که در کلاس پایه به صورت Virtual تعریف نشده است، استفاده از کلمه کلیدی new در کلاس مشتق شده است. اگر از این روش استفاده کنید، متد کلاس پایه در کلاس و در زمان استفاده مخفی خواهد بود. دقت کنید که در این حالت امکان دسترسی به متد پایه نخواهد بود و شما باید کدهای مورد نظر خود را در کلاس مشتق شده بطور کامل بنویسید. public new void DrawLine(int x,int y,int w,int
h) { // Write Your New Code Here [Draw Line] } تگهای فارسی: مهدی ریزوندی، سی شارپ، سي شارپ،
سی شارپ مقدماتی، آموزش ربان سی شارپ، شی گرایی در سی شارپ، فضای نام، عمومی،
خصوصی، محافظت شده، بازنویسی، متد، کپسوله کردن، کلاس، کد نمونه
English Tags:
Mehdi Rizvandi, Csharp, C sharp, C#, Introduction to C#, CSharp Guide, Object
Oriented In C#, Namespace, Public, Private, Protedted, Override, Overload,
Virtual, new, Encapsulation, Class, Method, Sample Code
+
نوشته شده در شنبه سوم فروردین 1387ساعت 23:56 توسط کنستانتین
|
|

