ما :
تنها سکوت را مي شکنيم . مي گوييم ، هر چه باشد ، به اميد فرسودن آوايي ، فرسودن سري ، يا بي اميد ، بي دليل . اما پايان خواهد يافت ، يا نفس بند خواهد آمد که چه بهتر ، سکوت خواهد شد . آيا سکوتي هست ؟ نه نه ، در سکوت نمي شود دانست ، هيج وقت نخواهيم دانست . اما حداقلش بيرون رفتن از اينجا که هست ، نيست ؟ نمي دانيم .
آيا بايد ناتواني هايمان را ارج بگذاريم ؟ يا پنهان کنيم ؟ توانايي هايمان را چه ؟
بيان مي کنيم ...
تمامش خالي ، تمامش وسوسه انگيز است .
هميشه بعد از گفتن ، نوبت شنيدن است . قائده ي گفتگو هم همين است . ما تنها سکوت را مي شکنيم ، بي هيچ مکثي براي تفکر ...
من :
اشتباهم اين است که سعي مي کنم فکر کنم ، يکي از اشتباهاتم . اين طور که هستم بعيد است بتوانم ، حتي به همين منوال . اگر اين طور است کاش باز هم باز شوند و مرا ببلعند ، اين کلمه هاي کوچک . ولي آرام تر حرف مي زنم ، هر سال کمي آرام تر . شايد . کند تر هم ، هر سال کمي کندتر . شايد . اما نه از روي تعقل ، از تنگي نفس .
تو :
تو نمي خواهي بشنوي . تو نمي خواهي فکر کني . تو امّا مي داني . تو حداقل مي تواني سبيلت را تاب بدهي . "تو" يک دشنام است ؟!
درخت عرعر دانشگاه ما
ناگهان ، نه ، سرانجام ، سرانجام ، دیگر نتوانستم ، نتوانستم ادامه بدهم . یکی می گفت ، نمی توانی اینجا بمانی . نه می توانستم آنجا بمانم نه می توانستم ادامه بدهم . الآن محل را توصیف می کنم ، اهمیتی ندارد . مثل یابوی پیری که وسط خیابان از پا بیفتد ، روی سنگی نشسته ام و عرعر را نگاه می کنم . چطور ادامه بدهم ، نباید شروع می کردم . نه ، باید شروع می کردم . یکی گفت ، شاید همان قبلی ، برای چه آمدی ؟ می توانستم بمانم توی لانه ام ، دنج و خشک ، نمی توانستم . لانه ام ، الآن توصیفش می کنم ، نه ، نمی توانم . ساده است ، دیگر هیچ کاری از دستم ساخته نیست ، اینطور می گویند . به تن می گویم ، بجنب پاشو ، بعد حس می کنم تقلا می کند ، که فرمان ببرد . باز تقلا می کند ، تا وقتی که دست بکشد . به سر می گویم ، راحتش بگذار ، آرام بگیر . من از این جر و بحث ها دورم، نباید غمش را بخورم ، هیچ چیز لازم ندارم ، نه اینکه جلوتر بروم ، نه اینکه سرجایم بمانم ، واقعا هیچ کدام برایم فرقی نمی کند . راستی این آدمها کیستند ؟ به دنبال من بالا آمده اند ، پیش از من ، با من ؟ کف گودالی هستم که به دست قرن ها حفر شده ، قرن ها هوای گند .
آدم خیال می کند خانه است ، بنا می کند به زوزه کشیدن و جان گرفتن ، زوزه های شفابخش ، ساکت ماندن بهتر است ، اگر کسی بخواهد بترکد ، تنها راهش همین است ، جیک نزدن ، فقط لبخند ، منفجر شدن از زور نفرین های فروخورده ، ترکیدن از خاموشی ، همه چیز ممکن است .
اینجا دست کم از این خبرها نیست ، نه صحبتی از آفریدگار و نه چیز واضحی از آفرینش و این حرف ها . خشکی ممکن است ، یا خیسی ، یا لجن ، مثل قبل از زندگی . دقیقا چه خبر است ؟ دقیقا . رو به آسمان کرد و گفت ، هوای خوب سرآمد ، و شکی نیست ، که کمی بعد ، برف . به عبارت دیگر شب تیره بود . وقتی بالاخره سررسید ، اما نه ، عجیب ، نه نبود ، با وجود آسمان پوشیده . راه دراز بود ، راهی که به سرپناه برمیگشت ، از دل مزرعه ها ، پیچ در پیچ ، باید هنوز آنجا باشد . به لب پرتگاه که می رسد می پرد ، شاید بعضی بگویند از نفهمی ، اما نه ، از زیرکی .
خاطره ای دور ، دور از خاطرات آخرین ، ممکن است ، پاها انگار هنوز کار می کنند . حیف که امید مرده است . نه . چطور آن بالا آدم امید داشت ، هر از چند گاهی . چه امیدهای رنگ به رنگی .
دست بردار ، می خواستم بگویم از همۀ این ها دست بردار . راهش همین است . نمی دانم ، من اینجایم ، همین را می دانم و بس ، و اینکه این هنوز من نیستم ، همین است و باید آن را ساخت . هیج جا نه تنی هست ، نه راهی برای مردن .

سرشار از ناکامی *
از بخت بد ماست که باید اولین دوره ی IT تهران جنوب باشیم . موقعیتی که ابتدا ، آن را یک فرصت می پنداشتیم ، هر روز گریبانمان را بیشتر می فشارد . به اواخر ترم رسیده ایم اما هنوز تلفن گروهمان را وصل نکرده اند ! وارد این بحث تکراری نشویم بهترست ... کافیست سری به رئیس گروه بزنید و حالش را بپرسید !
... سر ها در گریبان است
کسی سر بر نیارد کرد پاسخ گفتن و دیدار یاران را .
نگه جز پیش پا را دید نتواند...
ترم اول در سردرگمی کامل سپری شد . نه از فناوری اطلاعات چیزی فهمیدیم و نه خواستیم مثل نرم افزاری ها باشیم . شاید همان " فناوری و اطلاعات " باشیم ** !
برای جبران ضعف ناشی از "بد درس دادن" (!) مبانی ، دانشجوی دکترای کامپیوتر و البته مدیر گروه واحد کرج را برایمان آوردند . جلسه ی اول در خاطر همه ی ما هست ؛ ترازهای بالای بچه ها چه وسوسه های قشنگی را در سر استاد سرشار مان پروراند . " از برق نگاهتون می خونم که باهوشید ! " php / C++ / Java ... واقعآ قشنگ بود .
اما هر جلسه که می گذشت ، به تعداد چرت زنان افزوده می شد . کار به آنجا رسید که استاد علنآ گفت : " حیف وقتی که من برای شما صرف می کنم ! " مشکل از کجاست ؟ از آزمون دانشگاه آزاد اسلامی است که تراز بالا در آن ، هیچ معنا و مفهومی ندارد ؟ از مسئولین - البته محترم - دانشگاه است که با گروه همکاری نمی کنند هیچ ، چوب هم لای چرخش می گزارند ؟ یا از رئیس گروه نجیبمان است که توان مقابله با این جو و مشکلات را ندارد ؟ یا از استاد است که نمی داند چگونه دانشجویان را سر شوق بیاورد ، بیاموزد و دانشجو پرورد ؟ شاید هم از ماست که فقط ادعا داریم ؛ هیچ نمی دانیم و تلاش هم نمی کنیم بدانیم...
متأسفم ... آینده از آن ما نیست...
...که سپهر ما مرده یا زنده ، به تابوت ستبرِ ظلمت نُه توی مرگ اندود ، پنهان است.
* در زبان فارسی سوم دبیرستان خواندیم که این عبارت غلط است!
** به پرینت خود مراجعه فرمائید .
Access Modifiers :
ما می تونیم با اضافه کردن Modifier ها به ابتدای تعریف یک Class یا Member ، نوع دسترسی به اون رو تعیین کنیم ، انواع Modifier ها در C# عبارتند از :
1 – Public : به نهادهای خارج از namespace اجازه می دهد که به member های Class دسترسی پیدا کنند.
2 – Private : Method ها و متغیرها فقط در داخل همان Class در دسترس هستند.
3 – Protected : Code رو فقط در همان Class و Subclass هایی که ازش مشتق شده اند قابل دیدن می کند.
4 – Internal : قابل دسترسی برای فایل های اسمبلی
5 – Protected Internal : قابل دسترسی برای فایل های اسمبلی و SubClass های کلاس
Instantiating Classes :
راحت ترین راه برای فهمیدن اینکه چجوری Class را در کدمان استفاده کنیم ، اینه که Class رو به عنوان نوع جدیدی از متغیرها تصور کنیم. ما قبلا با Variable Type های از پیش تعیین شده (int/float/...) کار کردیم. با تعریف کردن کلاس Authenticator ، در واقع ما به Compiler گفته ایم که یه Type جدید از متغیرها داریم ، به نام Authenticator . عبارت تعریفی Class ، همه ی چیزهایی که Compiler باید بدونه تا این Variable Type رو تجزیه و تحلیل کنه رو شامل می شه . ( همانطوری که می دونه Double از اعداد اعشاری در فرمت خاصی تشکیل شده ) در اینجا ما به Compiler گفتیم که متغیر Authenticator شامل String می شه و به ما اجازه بده تا Method های IsPasswordCorrect و ChangePassword رو فراخوانی کنیم.
ساختن متغیر (یک object) توسط کاربر رو Instantiating می گن . چون در واقع ما یک object instance ساخته ایم. Instance ، یک نمود ساده و خاص object است . بنابراین ما می تونیم Authenticator object رو درست مثل یک متغیر استفاده کنیم . مثال زیر رو ببینین :

کلاس MainEntryPoint مثل کلاس Authenticator می تونه member های خودش رو داشته باشه (Fieldها Method ها و ....) ما این رو واسه این انتخاب کردیم که متد Main رو در داخلش قرار بدیم ، اینجوری کلاس Authenticator می تونه سرجای خودش بشینه و در برنامه ی دیگه ای هم جداگانه استفاده بشه ( با Copy-Paste کردن!)
Syntax C# لازم دونسته که حتما یه Main Class داشته باشیم.
Authenticator myAccess = new Authenticator();
حالا ما یک object Authenticator جدید درست کردیم . ( نگران new =" " نباشین چون مربوط به Syntax است! ) اینجوری هم می شه نوشت :
Authenticator myAccess;
( البته به این شکل object ای درست نمی شه و فقط یک Reference به اون object ایجاد می شه )
برای فراخوانی یک Method خاص از یک object از (.) استفاده می کنیم :
done = myAccess.ChangePassword(“”, “MyNewPassword”);
حالا ما متد ChangePassword رو در object myAccess فراخوانی کردیم و خروجی رو داخل متغیر بولی done ریختیم . حواستون باشه که این غلطه و Compile Error می ده :
string myAccessPassword = myAccess.password;
Password field ، Private بوده بنابراین Code های بیرون Authenticator بهش دسترسی ندارن . اگر Public اش می کردیم ، اون وقت کار می کرد و خروجی Password می رفت تو متغیری از جنس String .
یادتون باشه که اگه از بیرون کلاس به member هاش دسترسی دارین ، می تونین مستقیما واردش کنین.
فهمیدین ؟ تا اینجا ما در کدمان هیچ چیز جدیدی ارائه ندادیم و فقط خواستیم قوانین کوچکی از Class ها رو بگیم . در قسمت بعد از Using Static member ها خواهیم گفت .
از این پس سلسله مباحث آموزشی "از دانشجو به دانشجو" خواهیم داشت !!! هرکس چیزی بلده می تونه بیاد به بقیه هم یاد بده !
اصول Object Oriented Programming :
معمولا وقتی می خواهیم زبان جدیدی یاد بگیریم ، عمده ی وقتمان صرف یادگیری Syntax آن زبان می شود ؛ چه جوری متغیر تعریف کنیم ، چجوری روند اجرایی برنامه رو کنترل کنیم و ... با این وجود ، برای نوشتن یک Code خوب ، باید اصول و متدولوژی آن زبان را بلد باشیم. در برنامه هایی که از OOP استفاده می کنند ( مثل C# و ... ) ، باید بلد باشیم از ویژگی های OOP استفاده کنیم .
در OOP ما می خواهیم به راحتی تکه برنامه هایی قابل نگهداری و استفاده مجدد بنویسیم که می توانند مجموعا کارهای بسیار پیچیده ای را انجام دهند، با این وجود ساختار کلی یک برنامه ی Object Oriented با معادل عادی آن (Procedural Programming ) تفاوت بسیار دارد.
در اینجا به توضیح ماهیت Object خواهیم پرداخت و سپس از Inheritance (وراثت) خواهیم گفت که در واقع قلب OOP است. OOP متد بسیار قدرتمندیه . باهاش آشنا که بشید ، از خودتون می پرسید چجوری قبلا بدون اون Code می نوشتید ؟!
Object چیست ؟
در زندگی روزمره هرچیزی که به عنوان یک قطعه مادی شناخته می شود ، یک Object است. یک Object می تواند یک ماشین باشد، یک خونه، یک مداد یا یک تراول چک ! ما این مفهوم رو گسترش می دیم ؛ DataBase ، کامپیوتر و حتی شهر هم Object هستند ! این جوری فکر کردن نه تنها این توانایی را به ما می ده که دنیای واقعی را مدل سازی کنیم ، بلکه به وسیله ی اون ما می توانیم برنامه های بزرگ را به تکه های کوچک قابل مدیریت تجزیه کنیم .
ایده ی اصلی این نگرش از جعبه ی سیاه اومده ؛ در زندگی Object های زیادی هستند که شما از آنها استفاده می کنید ، اما مکانیزمشان را نمی دونید ؛ مثل رادیوی ماشین ، اکثر مردم نمی دونن که رادیوی ماشین چجوری کار می کنه اما می دونن چه کاری می کنه و چجوری ازش استفاده کنن ، از این گذشته می تونن اون رو کامل در بیارن و یکی یکی سر جاش بذارن . جعبه ی سیاه می گه : "بین کاری که چیزی انجام می ده و چجوری انجام می ده تفاوت هست ! " درضمن دوتا Object می تونن کار یکسانی رو به شکلهای مختلف انجام بدن.
طبعا جایگزینی یک Object با Object دیگه، اثراتی هم داره . رادیوهای ماشین شاید دکمه ها و Switch های مختلفی داشته باشن ، صداها را با کیفیت های مختلفی پخش کنن ، اما عملکرد اصلیشون یکیه . نکته ی مهم دیگر اینه که "رابط کاربر" همچنان بدون تغییره ( شما رادیوی ماشین را مثل بقیه ی وسایل برقی ماشین به برق وصل می کنید .)
اگر چیزهایی که تا الان گفتم رو فهمیده باشین ، کلیات OOP رو متوجه شده اید ، چون OOP اجرای این مفهوم ها در برنامه نویسی است ؛ شکستن هر برنامه به چندین تکه و طراحی کردن هر تکه برای اجرای بخش خاصی در برنامه ، به این می گن Object !
اگر به اینجوری برنامه نوشتن فکر کنید متوجه فواید بسیار آن خواهید شد ؛ معماری برنامه ها ملموس تر و قابل فهم تر خواهد شد. برنامه نوشتن آسان تر خواهد شد ، تیم های برنامه نویسی راحت تر کار می کنند ؛ هر کدوم از برنامه نویس ها روی یک Object کار می کنن . همه ی آنچه باید بدونن اینه که هر Object چه کاری رو انجام می ده و چجوری می شه بهش دسترسی پیدا کرد.
در قسمت بعدی در مورد" Object در برنامه نویسی" حرف خواهیم زد .