مردم جهان به دو دسته تقسیم می شوند دسته اول کسانی که موافقند مردم جهان به دو دسته تقسیم میشن و دسته دوم کسانی که مخالفند مردم جهان به دو دسته تقسیم میشن

وبلاگ آموزش سی شارپ

سلام خدمت همه شما دوستان عزیز که به من لطف داشتید و وبلاگ رو دنبال کردین...از مباحثی که قصد داشتم مطرح کنم
File,delegate,event
هنوز باقی مونده که احتمالاً تو تابستون می گم...شاید هم نگفتم هیچ وقت!:D
به هر حال ادامه آموزش رو تو درس ساختمان داده می گم! به آدرس زیر:
http://datastructurekelas.blogspot.com
تا اطلاع ثانوی موفق باشید!:D

۱۳۸۸ بهمن ۲, جمعه

indexer

سلام
بعد از یک امتحان آمار سنگین و نافرم ونا جور و غیره
اومدیم سراغ indexer
indexer چیه؟! به چه کاری میاد؟!
indexer یه چیزی مثل property ها هست از نظر تعریفی و کارش اینه که میذاره رو آرایه ای از شی ها و Object ها به طور مستقیم دسترسی داشته باشیم!
مثلاً وقتی یک آرایه 10 عنصری داشتیم وقتی می خواستیم مثلاً عنصر هفتم رو مقدار دهی کنیم با این فرض که اسم آرایه A باشه این کار رو می کردیم!
A[6]=78;
و دقیقاً همین کار رو برای Object ها با indexer ها انجام می دیم!
حالا indexer رو چه جوری تعریف می کنیم:
indexer مثل property تعریف میشه و set و get داره!
اول سطح دسترسی یا modifier رو تعریف می کنیم! بعد مقدار برگشتی یا return type و در آخر هم مقدار آرگومان ها در کنار کلمه index و در آخر هم set و get:
(modifier) (return type) this [(argument) index]
{
get
{
// Get codes goes here
}
set
{
// Set codes goes here
}
}
مثلاٌ:
private string []data = new string[5];
public string this [int index]
{
get
{
return data[index];
}
set
{
data[index] = value;
}
}
و این هم استفاده کردنش تو برنامه اصلی!
class program
{
public static void Main()
{
MyClass mc = new MyClass();
mc[0] = "Rajesh";
mc[1] = "A3-126";
mc[2] = "Snehadara";
mc[3] = "Irla";
mc[4] = "Mumbai";
Console.WriteLine("{0},{1},{2},{3},{4}",mc[0],mc[1],mc[2],mc[3],mc[4]);
}
}
برای کسایی که می خوان برنامه سازی پیشرفته امتحان بدن تا همین جا کافیه ولی برای کسایی که می خوان بیشتر بدونن:
indexer ها به ارث هم می رسن:
using System;
class Base
{
public int this[int indxer]
{
get
{
Console.Write("Base GET");
return 10;
}
set
{
Console.Write("Base SET");
}
}
}

class Derived : Base
{

...

..

.
}
class program

{
public static void Main()
{
Derived d1 = new Derived();
d1[0] = 10;
Console.WriteLine(d1[0]);
}
}

indexer ها رو میشه override کرد یعنی Polymorphism:

using System;

class Base
{
public virtual int this[int index]
{
get
{
Console.Write("Base GET");
return 10;
}
set
{
Console.Write("Base SET");
}
}
}

class Derived : Base
{
public override int this[int index]
{
get
{
Console.Write("Derived GET");
return 10;
}
set
{
Console.Write("Derived SET");
}
}
}

class program
{
public static void Main()
{
Base b1 = new Derived();
b1[0]= 10;
Console.WriteLine(b1[0]);
}
}
و از همه مهم تر میشه indexer ها رو Abstract هم تعریف کرد!

using System;

abstract class Abstract
{
public abstract int this[int index]
{
get;
set;
}
}

class Concrete : Abstract
{
public override int this[int index]
{
get
{
Console.Write(" GET");
return 10;
}
set
{
Console.Write(" SET");
}
}
}

class program
{
public static void Main()
{
Concrete c1 = new Concrete();
c1[0] = 10;
Console.WriteLine(c1[0]);
}
}

منبع کد ها: http://www.csharphelp.com/2006/04/-c-indexers/

۱۳۸۸ دی ۲۴, پنجشنبه

Interface یا اعضای واسط

درست شد
سلاملکم!
قبل از هر چیزی می خواستم تشکر کنم از کسایی که نظر می دن و روح ما رو شاد می کنن! هرچی نظرات بیشتر باشه روح ما شاد تر میشه!:D
یه آقا یا خانومی هم تو اولین پستم خواسته بودن که بگم چرا سی شارپ! اما از اونجایی که به معرفی زبان های برنامه نویسی نمی پردازم بهتره بود یک آدرس وبلاگ یا ای میل می دادن که توضیح بدم!
ولی در کل C# برای این که از نظر شی گرایی زبان خیلی قویی هست و در زمینه WEB APP هم خیلی خیلی قوی عمل می کنه و همین طور زبان آسونیه از نظر دستوراتش خیلی زبان مفیدیه گرچه که هنوز خیلی ها با VB.Net حال می کنن!
interface چیه؟!
یه چیزی تو مایه های کلاس های Abstract هست که همه اعضاعش public هستن بی چون و چرا
حالا چراش رو برو از خود کسی که طراحیش کرده بپرس!:D
فاییده اصلی interface اینه که ارث بری چندگانه (Multi inheritance) رو برای ما ممکن می کنه که خیلی فاییده داره (دقیقاً نمی دونم فاییده اش چیه...ولی مفیده دیگه...ایشالا وقتی حرفه ای شدیم می فهمیم فاییده اش چیه) که این کار از عهده کلاس های معمولی و کلاس های گنگ(Abstract ) بر نمیاد
توی interface نمیشه field تعریف کرد! ولی انواع event,indexer,property,method رو میشه تعریف کرد!
event چیه؟!
بعداً می رسیم بهش....عجله نکن!
از خاصیت های Interface اینه که چی؟!
؟!
آهان..ببخشید...از خاصیت های interface اینه که هر کلاسی که ازش مشتق بشه...وظیف داره یعنی وظیفه داره که تمامیه event,indexer,property,method هایی رو که تو interface وجود داره رو برای خودش تعریف کنه!
و این موضوع حتماً باید اتفاق بیفته....اگر تعریف نشه error میده که خیلی خوشایند نیست برای انسان!
تا یادم نرفته بگم که یک interface رو میشه از یک interface مشتق گرفت

بعضی وقتا...ما احتیاج داریم که یکی از متد ها یا ویژگی ها یا حادثه ها رو پنهان کنیم از کلاس هایی که از interface مشتق شدن (البته این کار عین خودزنیه تو تفاوت Abstract و Interface میگم چرا) به هر حال! باید اسم interface interface رو موقع تعریف ضابطه درج کنیم که پنهان بشه
برای دست رسی به این عضو پنهان شده کافیه که به صورت cast اسم اینترفیس رو بیاریم
مثلاً در تعریف اعضا:(ishape اسم interface هست)
int ishape.shapeshifter(int val)
{
...
..
.
}
مثلاً در Main
ishape tmp = (ishape)myshape;

برخلاف متدهای Abstract که باید اونها رو override می کردیم تا بتونیم ازشون استفاده بکنیم متد ها و چیزهایه دیگه interface رو باید پیاده سازی بکنیم...یعنی با همون نام مثلاٌ متد و مقدار برگشتی و غیره! به لطف یکی از بچه های دانشگاه که من رو از جهل مرکب در اورد(آن کس که نداند و نداند که نداند...درجهل مرکب ابدالدهر بماند!)من فکر می کردم می دونم جریان اینترفیس رو...ولی به لطف ایشون فهمیدم که نه خیر...در جهل مرکب دارم به سر می برم!...خلاصه متوجه شدیم که اگر اینترفیس ها رو پاک کنیم و وراثت ها رو هم بگیریم...همچنان برنامه کار می کنه! علتش هم اینه که کلاس هایی که از اینترفیس ها مشتق میشن وابستگی به اینترفیس ندارن و فقط باید و باید حتماً تمامی متدها و غیره ی اینترفیس رو پیاده سازی کنن! اما در صورتی که از کلاس مشتق بگیریم یا Abstract ها به خاطر این که باید override بکنیم متدها و غیره رو وابستگی ایجاد میشه بین کلاس پدر(یا مادر) و کلاس های فرزند!
این هم مثال اینترفیس!:
interface IMyInterface
{
void MethodToImplement();
}

class InterfaceImplementer : IMyInterface
{
static void Main()
{
InterfaceImplementer iImp =
new InterfaceImplementer();
iImp.MethodToImplement();
}

public
void MethodToImplement()
{
Console.WriteLine("MethodToImplement() called.");
}
}




Blogged with the Flock Browser

۱۳۸۸ دی ۱۸, جمعه

Abstract class

did you miss me?!:D
سلام
امروز می خوام کلاس های گنگ یا Abstract رو بگم برات

خب
اول ا ز همه بگم که این بحث ادامه بحث وراثت هست! یه مدت به یه سری بحث های دیگه رفتم که الان روباره ادامه وراثت رو می رم

اگه یادت باشه وقتی که می خواستیم یه کلاس رو از یک کلاس دیگه مشتق بگیریم مجبور بودیم برای این که خاصیت های کلاس پایه رو تغییر بدیم و اون چیزی رو که می خوایم تو کلاس مشتق شده بیاریم! و باید override می کردیم و کار های دیگه!
ولی فاییده کلاس های Abstract اینه که مثل کلاس های معمولی احتیاجی نیست که متد ها رو تعریف کنیم! بلکه فقط اسم متد رو میاریم و هر کلاسی رو که بخوایم ازش مشتق گیری جدا جدا متد ها رو برای کلاس مشتق شده استفاده می کنیم!
نکته خیلی مهم اینه که از کلاس های Abstract نمیشه Object ساخت و ازشون نمونه گیری کرد
توجه کنیم که متد های Abstract حتماً باید تو کلاس های Abstract تعریف بشن
توی کلاس های Abstract : properties , methods, fields می تونن تعریف بشن!
مثال
abstract class Vehicles

{

private int noOfWheel;

private string color;

public abstract string Engine

{

get;

set;

}

public abstract void Accelerator();

}

و بقیه ماجرا مثل همون وراثت از طریق کلاس هست متد مورد نظر رو Override می کنی و سایر چیز ها
مثل:
Class Car : Vehicles
{
public override string Engine
{
get
{
...
..
.
return Engine ;
}
set
{
...
..
.
Engine = value ;
}
}
public override Void Accelerator()
{
...
..
.
}
...
}

موفق و مؤید و پیروز باشی!

Blogged with the Flock Browser

۱۳۸۸ دی ۱۲, شنبه

مثال شنبه آخرین جلسه کلاس استاد کی نژاد

بچه ها لطف کنین صحت لینک رو اعلام کنین!
لینک دانلود با پسوند .cs
لینک دانلود با پسوند .txt
(می دونید دیگه کلیک راست و Save target As...)
برنامه:

using System;
using System.IO;

namespace _1
{
public class f_in_out
{
string buffer;
public void appfile()
{
Console.WriteLine("Enter text to be stored i the file.");
Console.WriteLine("Enter a blank line to end input.");
StreamWriter myfile = File.AppendText("text.txt");
do
{
buffer = Console.ReadLine();
myfile.WriteLine(buffer);
} while (buffer != "");
Console.WriteLine("Done Writing");
Console.WriteLine("------------");
myfile.Close();
}
public void readfile()
{
StreamReader myfile1 = File.OpenText("text.txt");
while ((buffer = myfile1.ReadLine()) != null)
{
Console.WriteLine(buffer);
}
myfile1.Close();
}
}
class Program
{
static void Main()
{ f_in_out fob=new f_in_out();
fob.appfile();
fob.readfile();
Console.ReadLine();

}
}
}