در برنامه نویسی وب ، همیشه نیازمند این هستیم که به کاربر یک پیام نمایش دهیم.

حا آنکه هر برنامه نویس وب سایتی این کار را به روش خودش انجام می دهد، برخی از یک لیبل استفاده می نمایند ، برخی از دو لیبل با رنگ های قرمز و سبز جهت نمایش پیام های موفقیت و پیام های ارور استفاده می کنند ، برخی یک لیبل می گذارند و در کد نویسی بر اساس نوع پیامی که می خواهند نمایش دهند ، رنگ لیبل را تغییر می دهند و ....

بنده به شخصه تمایل دارم پیام هایم را درون دو باکس قرمز کمرنگ و سبز کمرنگ با یک کادر قرمز و سبز و یک آیکون تیک سبز رنگ و یک آیکون ضربدر قرمز نمایش دهم تا کاربر سایت از دیدن زیبایی پیام ها کیف کنه :)

برای این کار یک راه حل این است که شما از یک کنترل پنل و یک کنترل لیبل بهره ببرید که کار بسیار جالبی است ، و محل قرار گیری نیز بهتر است داخل مستر پیج باشد تا نیاز به نوشتن این بخش در تک تک صفحات نباشد (بدیهی است که خصوصیت visible کنترل های پنل باید false باشد تا در حالت عادی درون صفحه نمایش داده نشوند)
چطوری میشه از توی یک کلاس به کنترل های داخل یک صفحه دسترسی داشت ؟!

حال تصور کنید می خواهید پیامی را به کاربر نمایش دهید ، در اینصورت می بایست کدهایی شبیه به کد زیر را بنویسید :


نوشتن 3 خط کد برای هر پیام کاری خسته کننده است و حجم کد نویسی شما را بالا می برد و در نتیجه خوانایی کدهای پروژه شما را کم می کند.

در asp.net و سی شارپ با توجه به وجود چیزی به نام شیء گرایی ، همیشه این امکان را دارید که کدهای خود را بصورت یک شیء (کلاس) در بیاورید و از شیء های خود در همه پروژه هایتان استفاده نمایید.
اگر شما برنامه نویس خوبی هستید و با شیء گرایی آشنا هستید ، برای اعمالی مثل صفحه بندی اطلاعات،ریسایز تصویر، نوشتن متن روی تصاویر(نوشتن عنوان یا آدرس سایت روی تصاویر بصورت خودکار)، بررسی پسوند و نوع فایلهایی که قرار است روی سایت آپلود شوند، ساخت تصویر امنیتی و ... نباید هر بار از 0 کد بزنید و یا یک تابع را در صفحات مختلفتان کپی نمایید!

شما با یک زبان شیء گرای بسیار عالی و منحصر به فرد کار می کنید (سی شارپ) و باید بتوانید از این برتری در مقابل برنامه نویسان سورس باز استفاده نمایید.

پس باید بتوانید بسته به نیازتان انواع مختلفی از کلاس های مختلف را برای خودتان بسازید تا در هر پروژه فقط نیاز به این داشته باشید که کلاس های از قبل آماده شده خود را در پروژه اضافه و از توابع و امکانات آن کلاس های به راحتی استفاده نمایید (به راحتی نوشتن یک using در ابتدای کد های صفحه تان)!

خوب حال که با اهمیت کلاس نویسی و شیء گرایی آشنا شدید ، به این نتیجه خواهید رسید که :
چگونه می توان از داخل یک کلاس سی شارپ به کنترل های داخل یک صفحه و یا به کنترل های درون مسترپیج یک صفحه دسترسی داشته باشید؟

بحث جالب دیگری که در سی شارپ و شیء گرایی وجود دارد ، بحث ارث بری در کلاس های سی شارپ است.
بنده در اینجا قصد ندارم کلاس آماده ای که جهت نمایش پیام ها ساخته ام را برایتان بگذارم ، چون عقیده دارم که خودتان باید تلاش کنید و کلاس خودتان را ایجاد نمایید ، چه بسا روش شما از روش من بهینه تر باشد!

عادت کردن به گرفتن کدهای آماده باعث می شود که برنامه نویس دنبال راه حل های بهتر نره و به همون کدی که بهش میدن بسنده کنه!
در صورتی که شاید خودش بتونه راه حل بهتری رو برای اون مسئله ارائه بده و چه بسا در راه پیاده سازی راه حلش ، کلی مطالب دیگه هم یاد بگیره.

در جواب سوال بالا باید خدمتتون عرض کنم که همه صفحات شما باید از کلاس System.Web.UI.Page ارث بری کنند ، این کلاس کلاس اصلی صفحات است که باعث میشه که همه صفحات متد ها و رویداد های استانداردی داشته باشند که در اینجا نمی خوام وارد جزئیات این داستان بشم.

ارث بری در سی شارپ:
فرض کنید که 2 کلاس A و B داریم ، که هر کدوم خصوصیات خودشون رو دارند و توابع (رفتار) خاص خودشونم دارن.
حال اگر ما کلاس B رو از A ارث بدین (B:A)  یعنی کلاس B رو فرزند کلاس A در نظر بگیریم ، طبق قانون ارث بری ، کلاس فرزند تمامی خصوصیات و رفتار کلاس پدرش رو به ارث می بره و انگار که شما تمامی خصوصیات و رفتار کلاس پدر رو درون خودش نشستین و نوشتین.

قضیه دوم در ارث بری اینه که اگر در مثال بالا شما یک کلاس C هم داشته باشین ، اگر کلاس C رو از B ارث بدین (C:B) یعنی کلاس B پدر کلاس C باشه.
در اینصورت مثل این می مونه که کلاس C از کلاس A هم ارث برده باشه ، یعنی تمامی خصوصیات و رفتار پدربزرگش رو هم به ارث می برده.
(توی ریاضی هم داریم که اگر A=B=C باشد ، پس A=C هم هست و در اینجا هم همینه)

حال گفتیم که تمامی صفحات باید از کلاس System.Web.UI.Page ارث بری داشته باشن ، از طرفی هم گفتیم که کلاس فرزند به اطلاعات کلاس پدرش دسترسی داره و ...

پس اگر من یک کلاس با نام Test بسازم و اونو از System.Web.UI.Page ارث بدم و بعد صفحاتم رو به جای System.Web.UI.Page از کلاس Test ارث بدم ، از طرفی ارث بری صفحاتم از کلاس System.Web.UI.Page برقرار می مونه و از طرفی هم من در کلاس Test به راحتی به تمامی کنترل ها و خصوصیات صفحاتم دسترسی خواهم داشت.
مسلما به مستر پیج صفحه هم دسترسی خواهم داشت.
پس می تونم یک تابع مثلا با نام ()ShowMessage توی کلاس Test بنوسیم که بیاد و یک لیبل موجود در مستر پیج صفحمو بگیره و توش یک پیامی رو نمایش بده و توی صفحاتم کافیه که فقط تابع رو فراخونی کنم.

پس اینجوری وقتی همه صفحاتتون از کلاس Test ارث بری کنند ، تمامی صفحات تابعی با نام ()ShowMessage خواهند داشت که این تابع رو از کلاس Test بدست میارن.

به همین راحتی شما یک خروار کد تکراری رو به یک چیزی مثل ()ShowMessage تبدیل کردین.
(فراخونی یک تابعی که توی کلاس Test نوشتین).

امیدوارم که ارزش و اهمیت شیء گرایی رو بهتر درک کرده باشید و بعد از خوندن این پروژه برید و یک عالمه کلاس برای کاراتون بسازید تا کد نویسی پروژه هاتون رو به حداقل برسونین :)
تا تجربه ای جدید و آموزشی دگر بدرود
NetNic رو فراموش نکنین

نوشته شده در تاریخ شنبه 15 تیر 1392    | توسط: ح.م    | طبقه بندی: آموزش ASP.NET،     | نظرات()