



تمرینهای سری دوم (مهلت تحویل: ۲۶/۱/۸۵)
تمرینهای سری سوم (مهلت تحویل: ۲/۲/۸۵)
(اگه فونتاش رو هم ندارید از اینجا دانلود کنید)
موفق باشید.
اخبار موثق از آقای دکتر طوسیان حاکی از این است که استاد پویان روز پنجشنبه (و شاید روز جمعه هم) به صورت فشرده چند جلسه کلاس جبرانی برگزار خواهند نمود.
اطلاعات بیشتری ندارم.
این روزا هر جا که بریم از تکنولوژی AJAX صحبت می شه.
حالا این AJAX چیه الان می گم خدمتتون.
منتها قبلش یه سری چیزایی رو واسه مقدمه بگم.
تا امروز، یعنی تا قبل از به وجود اومدن این
تکنولوژی، وقتی شما تو یه سایت می خواستید یه سری اطلاعات از یه بانک اطلاعاتی که
رو سرور بود رو در بیارید (این بانک اطلاعاتی می تونست مبتنی بر اکسس، یعنی
OLEDB
یا اس کیو ال یا XML یا دیتا بیسهای ODBC و ... باشه) ، با
تغییر درخواست شما، به این امر نیاز پیدا می شد که کل صفحه ی HTML که روبروی شماست ریفرش شه. در
نظر بگیرید تو سایت دانشگاه هستید و می خواید تو صفحه ی اساتید از صفحه ای که مخصوص
استاد رضوانیه به صفحه ای که مخصوص استاد روحانیه برید. خوب رو اون لینک مخصوصش
کلیک می کردید و یه ریفرش تو کل صفحه حاصل می شد و یه صفحه ی جدید باز می شد. خوب
این ریفرش می صرفه! یعنی هیچ اشکالی هم توش نیست، جابجایی بین صفحات دو استاد انجام
می شد. اصلا شاید نتونیم اینو بگیم ریفرش چون یه صفحه ی دیگه برامون باز شده. حالا
اینو در نظر بگیرید: تو همین تابلوی گفتمان خودمون وقتی یه پیغام جدید می دید، این
صفحه ی تابلوی گفتمان برای شما ریفرش می شه و شما صفحه ی جدیدی حاوی حرف خودتون رو
می بینید. (خدائیش نمی صرفه)
یه زمانی با برادر عامری به این نکته فکر می
کردیم که آیا می شه برای دیدن نظرات جدید نیازی به ریفرش کردن صفحه نباشه؟ و این که
هر کس که نظر می ده همون لحظه برای همه قابل دیدن باشه، یعنی نیازی نباشه که طرف
صفحه ی تابلوی گفتمانش رو ریفرش کنه؟
خوب رفتیم دنبال این سیستم. اون چیزی که
زیاد بود یه سیستم ریفرش منظم بود مثلا هر 5 ثانیه یه بار یه ریفرش می کرد! خوب این
زیاد چنگی به دل نمی زد.
اما نهایتا توی وبلاگ این برادر به یه همچین
چیزی رسیدیم، یه مایه چت آنلاین بود.
خوب اینا که گفتم مقدمه ی این شد که بفهمیم
AJAX
چیه. هدف این بنده خدا اینه که بتونه چرخش و گرفتن اطلاعات تو وب رو مثلا خیلی شبیه
کنه به همین ویندوز خودمون، یعنی کاربر نهایی فرق زیادی بین یه Windows Application
و Web Application
حس نکنه. خوب این مسئله با معرفی یه شیء توسط شرکت معظم مایکروسافت محقق شد. اسمش
هست XMLHTTPRequest. اکثر مرورگرهای جدید
هم از جمله فایرفاکس ازش پشتیبانی می کنن.
با ساختن این شیء و به کارگیری زبان زیبای
جاوا اسکریپت شما می تونید به این امر دست پیدا کنید. تو وبلاگ همون برادر که
خدمتتون عرض کردم، یه سیستم چت آنلاین هست به زبان ASP، که با استفاده از همین شیء
کار می کنه.
در واقع این شیء در ابتدا برای این نوشته شد
که دسترسی به اطلاعات یه دستابیس XML سهولت بیشتری داشته باشه و
نیازی به ریفرش کردن صفحات نباشه.
توی AJAX هم از همین شیء استفاده شد و
الان اگه یه سرچ بفرمایید صد ها مقاله می بینید راجع به پیاده کردن این عزیز با
راهکارهای مختلف. خودم تعداد زیادی کنترل رو دیدم برای ASP.Net که دوستان محبت کرده بودن و
نوشته بودن و به سادگی یه Drag
& Drop تو محیط VS.Net می تونید ازش بهره
ببرید..
البته نمی گم با AJAX کاملا ریفرشینگ رو بی خیال می
شیم، نه، نهایتا فقط اون قسمتی ریفرش می شه که باید اطلاعات جدید توش نمایش داده
بشه.
انشاالله اگه نسخه ی جدید Yahoo! Mail
عرضه شه (که الان بعضی از دوستان به Yahoo! Mail Beta دسترسی دارن) قدرت و
زیبایی این تکنولوژی رو با گوشت و پوست درک می کنین. رابط کاربری که یاهو برای
سرویس میل بعدیش ردیف کرده فوق العاده است و این قدرت رو مدیون AJAX
ه.
خوب امیدوارم مطلبم خوب بوده باشه. شاید
بعدها که رفتید تو کار برای نوشتن برنامه های قدرتمند و کاربرپسند تحت وب به این
AJAX
هم احتیاج پیدا کنید.
موفق باشید.
این که جناب دکتر پویان اومدن و همون اول هدف رو نشونه گرفتن و به قول استاد عرب to the point کار کردن و هی از شیء و گرایش بهش! حرف زدن مارا بر آن داشت که یه پستی راجع به این موجودات زیبا (یعنی اشیاء) بنویسیم و از خودمون یه پست علمی به جای بگذاریم که آیندگان به نیکی از ما یاد کنن. (بیکاری هم البته تاثیر خودش رو میذاره دیگه)
حتما همتون تمرین دوم استاد معظم رو یادتون هست: یه دستگاه ATM (خودپرداز یا عابر بانک خودمون) و یا مثلا از اون دستگاههایی که پول میگیره خوراکی میده!!! رو مدل کنید.
به نظر میرسه منظور از مدل کردن این باشه که ما بیایم و یه دستگاه رو با خصوصیات و کارایی که میکنه و غیره معرفیش کنیم.
خوب اصول برنامه نویسی شیءگرا هم همینه. در دنیای برنامه نویسی شیءگرا همه چیز شیء محسوب میشن. اما این اشیاء از کجا میان و اصلا مفهوم یه شیء تو یه زبان برنامه نویسی چی میتونه باشه؟ عرض میکنم.
اگه ما بخوایم یه دستگاه ATM رو ببریمش تو دنیای برنامه نویسی شیءگرا اول مدلش میکنیم که به این کار میگن OOM. (Object Oriented Modeling).
در نظر بگیرید تمام دستگاههای ATM رو. چرا ما بهشون میگیم ATM؟ خوب معلومه چون ATM ان! یعنی کارای یه دستگاه ATM رو میکنن. خوب ما تو دنیای برنامهنویسی هم همینو داریم. البته در دنیای برنامهنویسی شیءگرا. بذارید تمام دستگاههای دارای این خصوصیات و کارها رو ببریم تو یک مجموعه: و اسم اون مجموعه رو بذاریم کلاس. بله شیءگرایی از همین جا شروع میشه. کلاس تو برنامه نویسی شیءگرا خصوصیات و کارای شیء رو توصیف میکنه. برای شروع اسم کلاس دستگاههای ATM رو میذاریم همون ATM.
ما تو برنامه نویسی میایم یه کلاسو تعریف میکنیم و بعد از روی اون کلاس اشیاء رو میسازیم.
توی یه کلاس میایم یه سری متغیر تعریف میکنیم، البته در سطحی که دیگران بهش دسترسی داشته باشن، اسم اونا رو میذاریم خصوصیات.
توی یه کلاس میایم یه تعداد تابع تعریف میکنیم، مثل متغیرها سطح یا Scope یا میدان دیدش رو به صورت public میذاریم و اسم اونا رو میذاریم تابع عضو (یا Method). (زیاد گیر به مسائل برنامه نویسیش ندید! فعلا فقط میخوام مفهوم کلاس رو بگم!)
خصوصیات که معلومه چی هستن. اینا خصوصیات اشیایی هستن که ما از رو این کلاس میسازیم. مثلا رنگ یه دستگاه ATM که یه خصوصیتشه میتونه به وسیلهی یه متغیر که تو کلاس ATM تعریف شده مشخص شه، اسمشو بذاریمcolor . این که هیچ، مهمتر از رنگ دستگاه مقدار پولیه که داره. خوب یه متغیر گنده! میتونه نشون دهندهی اون باشه، مثلا LeftAmount. میتونیم مثلا فرآیند دادن پول به مشتری رو با یه تابع عضو یا متد مشخص کنیم. یه تابع که ورودیش مقدارپولیه که کاربر میخواد و کاری که تابع میکنه اینه که از LeftAmount ماشین مقداری که کاربر میخواد رو کم میکنه و پول رو میده بیرون.
پس یه کلاس شد مجموعهای از توابع و متغیرها، و بعد ما از روی یه کلاس هر چند تا که بخوایم (جدا از مسائل فنی مثل حافظه!) شیء بسازیم. مثلا فرض کنید ما مأموریم تمام دستگاههای ATM شاهرود رو با یه برنامه مدیریت کنیم. خوب میایم از روی این کلاس ATM چند تا شیء میسازیم، یعنی این که متغیرهایی از نوع کلاس ATM میسازیم. (البته این مثال شاهرود خیلی خوبه چون عملاATM های شاهرود خیلی کم پیش میاد که درست باشن!!) یعنی اگه با C++ برنامه مینویسید باید داشته باشیم: (C# هم به این شبیه. جاوا هم فکر کنم تو همین مایه هاست)
ATM atm1;
یا اگه با VB.NET محبوب من مینویسید میتونید داشته باشید:
DIM atm1 AS ATM
متغیر atm1 شیئی است از نوع ATM. حالا مثلا میتونیم داشته باشیم (به همون C++):
Cout<< Atm1.LeftAmount;
میایم و مقدار پولی که تو atm1 مونده رو میچاپیم. و ...
خوب یه سری مسائلی هست برای کلاسها مثل وراثت، چندشکلی بودن و ... که فعلا برای جلوگیری از روده درازی نمیگیم!
حالا بشینید و ATM رو مدل کنید! (اگه منظور یه چیزی تو این مایهها این بوده باشه!!)
خوب امیدوارم مفید باشه این پست و به یه درد اون تمرینه خورده باشه.
مخلص همگی.