مجموعه آموزش سی شارپ

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

لینک دانلود فایل آموزش سی شارپ
http://www.tabatabaei.info/csharpsamples/CSharpTutorial.pdf

آموزش سی شارپ - قسمت بیست و سوم

بازنويسي عملگرها در سي شارپ - Operator Overloading in csharp

تمامي عملگرها (operators) در سي شارپ داراي رفتار هاي از پيش تعيين شده اي هستند و شما مي توانيد از اين عملگرها در عبارت هاي خود استفاده کنين:

int i = 10;
int j = 20;
int m = i * j / 2 + 14;
Console.WriteLine("m is :{0}",m);


اما اگر شما عبارت زير را بنويسيد چطور؟

Person p = new Person("Ali",20);
Person p2 = new Person("Reza",30);
Person p3 = p + p2;
Console.WriteLine("Name: {0}, Age:{1}",p3.Name , p3.Age);


در صورتيکه اين کد را Compile کنين متوجه يک خطاي Compile Time خواهيد شد که به شما توضيح مي دهد که امکان جمع بستن دو Person با يکديگر وجود ندارد يا به عبارت ديگر عملگر + براي Person تعريف نشده است.
در سي شارپ شما مي توانين بسياري از عملگرها را دوباره نويسي کنين به عبارت ديگر شما مي توانين در مواقع لزوم تعريف جديد از يک عملگر در سي شارپ داشته باشيم. در تصوير زير ليست عملگرها به همراه توضيحاتي راجع به امکان بازنويسي شان مي بينيد.



همانطور که در تصوير مشخص است شما نمي توانين تمام عملگرها را دوباره نويسي کنين.
در سي شارپ يک کلمه کليدي به نام operator وجود دارد که براي بازنويسي عملگرها بايد از آن استفاده کنيم. به عنوان مثال براي اينکه مثالي که در ابتدا نوشتيم درست عمل کند و وقتي عبارت بالا را اجرا مي کنيم يک شيء جديد از جنس Person ايجاد شود که نامش از جمع بستن نام اين دو فرد و سنش از جمع بستن سن اين دو فرد تشکيل شود من در کلاس Person اين کد را مي نويسم:

public static Person operator +(Person p1, Person p2)
{
Person p = new Person();
p.Name = p1.Name + " " + p2.Name;
p.Age = p1.Age + p2.Age;
return p;
}

دقت بفرمائيد که حاصل جمع دو شيء از جنس Person يک Person مي باشد و من در پياده سازي عملگر + يک فرد جديد ساخته ام. اما اگر بخواهيم عملگر == يا همان برابري را دوباره نويسي کنيم بايد دقت کنيم که خروجي آن بايد يک عبارت true /false و از جنس bool باشد. در نتيجه اگر من بخواهم که مبناي مقايسه دو شيء از جنس Person را براساس نامشان قرار دهم از اين کد استفاده مي کنم:

public static bool operator ==(Person p1, Person p2)
{
return p1.Name == p2.Name;
}

نکته مهم در اين مثال اين است که شما وقتي عملگر == (برابري) را دوباره نويسي مي کنين بايد عملگر != (نابرابري) را هم دوباره نويسي کنين:

public static bool operator !=(Person p1, Person p2)
{
return !p1==p2;
}


بارگزاري مثال

آموزش ADO .NET‌ - قسمت اول

مروري بر ADO .NET
استفاده از بانك هاي اطلاعاتي در توليد نرم افزارهاي كاربردي در همه جاي دنيا هميشه مورد توجه بوده و مي باشد.. ايجاد و گسترش انواع تكنولوژي هاي در اين رابطه همواره مورد توجه شركت هاي بزرگ نرم افزاري دنيا از جمله شركت مايكروسافت غول نرم افزار دنيا بوده است. شركت مايكروسافت به همراه بسته دات نت يك پكيج براي كار با منابع اطلاعاتي به نام ADO .NET1 را نيز ارائه كرده كه كمك شاياني در استفاده از بانك هاي اطلاعاتي و طراحي نرم افزار هاي Data Intensive‌ نموده است.

ADO .NET‌ مجموعه ايست از كلاسهايي كه دسترسي برنامه نويسان .NET را به داده و بانك اطلاعاتي را فراهم مي نمايد. مجموعه غتي براي ايجاد نرم افزارهاي توزيع شده (distributed) و نرم افزارهايي كه به نحوي با بانك اطلاعاتي )يا داده( سرو كار دارند (data intensive) مي باشد. به عنوان يكي از اجزاء .NET Framework مي باشد و دسترسي به داده هاي رابطه اي (relational) و XML‌ و Application Data را فراهم مي سازد.

ADO .NET امكان دسترسي به منابع داده اي همچون Microsoft SQL Server ، Oracle و همينطور XML و منابعي كه از طريق OLE DB و ODBC قابل دسترسي هستند را دارا مي باشد. نرم افزارهاي مختلف مي توانند از ADO .NET براي ارتباط با منابع داده اي و دريافت ، اداره كردن و بروز رساني داده ها استفاده نمايند.
با توجه به نگرش جديدي كه در دنياي توسعه نرم افزاري طي سال هاي اخير ايجاد شده در بسته جديد ADO .NET سعي شده تا نيازهاي جديد طراحي نرم افزار مانند "استفاده از طراحي disconnected" ، "كاربرد گسترده از XML" و "پشتيباني از انواع منابع اطلاعاتي" و در نهايت "پشتيباني كامل از .Net" را براي توسعه نرم افزارهاي كاربردي مرتفع نمايد. همچنين در ساخت ADO .NET‌ مايكروسافت سه اصل را رعايت كرده است كه در آينده بيشتر در موردشان صحبت خواهيم كرد:

  • بكار بردن دانش ADO
برنامه نويسان زيادي تا قبل از ارائه ADO .NET از بسته قبلي مايكروسافت (ADO) براي كار با داده استفاده مي كردند. تيم ساخت ADO .NET براي اينكه اين افراد بتوانند به راحتي به بسته جديد مايكروسافت سئويچ كنند سعي بر استفاده هرچه بيشتر از دانش محصول قبلي خود و البته ارائه تكنيك هاي جديد و امكانات جديد تر در بسته ADO .NET نموده است.
  • پشتيباني از طراحي نرم افزارهاي چند لايه (n-tier programming model)
ايده كار داده ها به صورت disconnected‌ به مهمترين مسئله در طراحي نرم افزار ها شده است. به همين جهت ADO .NET بهترين روش براي پشتيباني از ديدگاه disconnected و توسعه نرم افزارهاي چند لايه (n-tier) - كه اين روز ها بسياري از نرم افزارها به اين صورت ايجاد مي شوند - را ارائه مي نمايد.
  • پشتيباني كامل از XML
اين روز ها واژه هاي داده و XML‌ با هم گره خورده اند. XML در رابطه با رمز گزاري(encoding) داده هاست و كار با داده هاي XML هر روز هر روز بيشتر و بيشتر مي شود. به همين جهت كار با XML به صورت كاملا پايه اي در بسته ADO .NET ديده شده است و كلاس هاي XML در NET Framework. و ADO .NET در يك معماري گنجانده شده اند. به صورتيكه شما مجبور به انتخاب يكي از اين دو نيستيد و به راحتي مي توانيد با هر دو آنها به صورت همزمان و در كنار هم كار كنيد.

1. در سري آموزشي ADO .NET از نسخه 2.0 اين محصول و در مثال ها از زبان برنامه نويس سي شارپ استفاده خواهد شد.

دريافت قسمت اول - نسخه PDF

CSharp Tuning و دو خبر جدید - بروز شده

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

لینک دانلود فایل آموزش سی شارپ
http://www.tabatabaei.info/csharpsamples/CSharpTutorial.pdf


خبر دوم اینکه می خواهم یک سری مطالب جدید برای آموزش استفاده صحیح از ADO .NET ایجاد کنم. خیلی از دوستان درخواست کرده بودند که ارتباط با بانک های اطلاعاتی و استفاده از ADO .NET رو بررسی کنیم که من هم با توجه به اهمیت این موضوع در تولید نرم افزارهای Data Intensive که معمولا هم کاربردی هستند این سری از پست ها رو شروع خواهم کرد.

ضمنا چند تا از دوستان هم درخواست آموزش ASP .NET را داشتند که حتما به زودی به آن هم خواهیم رسید.
منتظر نظراتتون هستم.