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

شی گرایی :‌ رفتارها[توسعه نرم‏افزار , ]

در ادامه بحث شی گرایی، و اینکه نوشتم هر شی دارای ساختار است خب گفته بعدی این است که هر شی یک سری رفتار(behavior) را در طی زمان انجام میدهد.

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

اگر بخواهم با مفاهیم برنامه نویسی کامپیوتر تناظر برقرار کنم منظورم از رفتار همان متودهای کلاس است.

انواع روشهای اجرای یک رفتار: همزمان، غیر همزمان

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

در روش غیرهمزمان شی فرستنده پیام منتظر میماند تا شی گیرنده پیام رفتار درخور را انجام دهد. روش غیرهمزمان ساده تر است و جزئیات و پیچدگیهای کمتری دارد.

اینکه یک رفتار همزمان اجرا شود یا ناهمزمان به دو صورت میتواند مشخص شود، درهنگام تعریف رفتار نوع اجرای آن مشخص شود، در هنگام صدا زدن رفتار نوع اجرا مشخص شود. در حال حاضر صرفاً میتوان در هنگام صدا زدن رفتار نوع اجرا را مشخص کرد اما در آینده در C#3.0 این امکان اضافه شده است که در هنگام تعریف متود(رفتار) نوع اجرای آن را همزمان معین کرد.

دو نکته مهمی که در طراحی رفتارها وجود دارد اینست که

یک : تا انجایی که امکان دارد از ساختن رفتارهایی که در محیط اطراف(اشیا دیگر) تغییر ایجاد میکنند پرهیز کنید در غیر اینصورت یک اصل نرمال سازی کلاس(class normalization) به نام کم جفت شدگی (low coupling) را زیر پا خواهید گذاشت.

دو : از ساختن رفتارهایی که هم در ساختار داخلی خود و هم در اشیا دیگر تغییر ایجاد میکنند پرهیز کنید.

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

منظور از پیام یا Message در واقع درخواستی است برای اجرای یک رفتار. یعنی یک شی از یک شی دیگر میخواهد که کاری را انجام دهد. حتی ممکن است شی گیرنده پیام هیچ رفتاری را انجام ندهد. اگر بخواهم با مفاهیم برنامه نویسی کامپیوتر تناظر ایجاد کنم پیام در حقیقت همان صدا زدن یک متود است و یا فعال کرن یک event است.

 بحث پیامها را در ادامه مفصلتر ادامه میدهم، صرفاً در اینجا این یک توضیح کوچولو دادم تا اشتباهاً رفتار را با پیام اشتباه نگیرید مهم است بین رفتار و پیام تفاوت قائل شویم.

تاریخ فرستادن:چهارشنبه 19 بهمن 1384، نویسنده: فرشید کزازی (همیشه همینه)
تعداد بازخوردها: ، شما هم دیدگاه خود را ارائه کنید

 

درباره فرشیدکزازی

 
 

هیچ چیز قابل گفتنی درباره خودم وجود نداره.
کاری داشتید به farshidkazazi@gmail.com پیام بفرستید.

 

 

درباره آکنده

 
 

این وبنوشت دربردارنده دیدگاهها و گفتنیها و نوشتینهای من است و من هرچی که دلم بخواهد میام و اینجا مینویسم و چون فعلاً نرم افزار کار میکنم، زمینه تخصصی آن بیشتر به آن گرایش دارد.

** اسم وبنوشت هیچ معنای خاصی ندارد، اولین کلمه ای بود که موقع ثبت نام به ذهنم رسید.

دسته بندی نگاره ها:
عمومی (7)
توسعه نرم‏افزار (13)

 

 

وبنوشتهای دیگر

 
  زیر چتر باران
واژگان مدیریت دانش
 

 

ابزارها

 
 
جستجو در بلاگ


برای دریافت نگاره ها از طریق email با وارد کردن آدرس email نام‏ نویسی کنید:
بایگانی گذشته
مرداد 1385 (2)
تیر 1385 (3)
اردیبهشت 1385 (1)
بهمن 1384 (4)
آذر 1384 (1)
آبان 1384 (4)
مهر 1384 (5)