بایگانی

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

چند شکلی (Polymorphism)

۹ شهریور ۱۳۸۵ ۱ دیدگاه

چند شکلی (Polymorphism):

 

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

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

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

چند شکلی در اغلب موارد از طریق رابطه تعمیم(Generalization) پیاده سازی می شود.تصور کنید که یک سوپر کلاس به نام کالا داریم که دارای متدی به نام تخفیف می باشد. کلاس های مواد غذایی، پوشاک،کتاب و …  را در نظر بگیرید.این کلاس ها،زیر کلاس، کلاس کالا می باشند. که صفات و متد های آن را به ارث برده اند.اما نحوه محاسبه تخفیف در کلاس های مختلف با همدیگر متفاوت می باشد.در این حالت در هر زیر کلاس متد تخفیف نسبت به عملیاتی که باید انجام بدهد تا تخفیف را محاسبه کند باید بازنویسی شود اما با همان نام قبلی تخفیف.متد تخفیف در کلاس های مختلف معرف رفتار جداگانه ای هست اما تخت همان نام قبلی تخفیف.

او …

و با نبودن چگونه توانستن بود ؟
و خدا بود و با او عدم بود .
و عدم گوش نداشت .
حرف هایی است برای گفتن که اگر گوشی نبود ، نمی گوییم .
و حرفهایی است برای نگفتن …
حرف های خوب و بزرگ و ماورائی همین هایند .
و سرمایه ی هر کسی به اندازه ی حرف هایی است که برای نگفتن دارد …
و خدا برای نگفتن حرف های بسیار داشت .
درونش از آنها سرشار بود .
و عدم چگونه می توانست مخاطب او باشد ؟
و خدا بود و عدم .
جز خدا هیچ نبود .
در نبودن ، نتوانستن بود .
با نبودن نتوان بودن .
و خدا تنها بود .
هر کسی گمشده ای دارد .
و خدا گمشده ای داشت …

علی شریعتی

Categories: غیرفنی Tags:

رابطه تعمیم (Generalization)

رابطه تعمیم (Generalization):

 

شما زمانیکه در یک سوپر مارکت قدم می زنید. شما مواد غذایی را بر حسب ویژگهای آنها در قسمت های مختلف یک سوپر مارکت مشاهده می کنید. میوه ها و سبزیجات در یک قسمت فروشگاه، کوشت در قسمتی دیگر از فروشگاه و خشکبار را در قسمتی دیگر از فروشگاه پیدا می کنید. همه اینها مواد غذایی هستند، اما اینها انواع مختلفی از مواد غذایی هستند.عبارت های “تا حدی”(““Kind of)، “نوعی از” (““Type of) یک رابطه تعمیم را بین دو کلاس نشان میدهد.(برای مثال سیب نوعی از میوه است و میوه نیز نوعی از غذا است.) در بعضی مواقع  عبارت “هست یک” بیانگر رابطه تعمیم است.(برای مثال سیب قرمز یک سیب هست.)

این نوع رابطه اغلب، وراثت(inheritance) نامیده می شود.مثال سیب را در نظر بگیرید. سیب نوعی میوه است پس سیب تمام ویژگیهای یک میوه را به ارث می برد.همچنان سیب (specialization) از میوه است زیرا آن تمام ویژگیهای میوه را به ارث می برد و همچنین سیب بعضی از ویژگیها را دارد که فقط متعلق به سیب می باشد و سیب را از دیگر میوه ها متمایز می کند.پس می توان گفت که میوه یک تعمیم (generalization) از هندوانه، سیب، هلو و همه دیگر اشیاء است که در این گروه قرار دارند.

وراثت در سیستم های شی گرا همانند به ارث بردن مشخصات رفتاری و بدنی از والدینتان است. مشخصات رفتاری و بدنی، همان صفات و رفتارهای یک کلاس هستند که یک کلاس از کلاس دیگر می تواند به ارث ببرد.وراثت زیستی یک مدل سلسله مراتبی بوجود می آورد که شما را قادر می سازد با دنبال کردن این سلسله مراتب و بالا رفتن در آن اجداد خودتان را بشناسد. در سیستم های شی گرا نیز دقیقا به ابن صورت است که شما می توانید با دنبال کردن این رابطه، کلاس مولد کلاس جاری را بدست آورید. سیب قرمز یک سیب است. پس کلاس مو لد سیب قرمز ، کلاس سیب است. سیب نوعی میوه است. پس کلاس مولد سیب، کلاس میوه است. سیب یک زیر کلاس(sub class) است. میوه یک سوپر کلاس(super class)است.

 

سوپر کلاس: یک سوپر کلاس، کلاسی است که دارای ویژگیهای است که بین دو یا چند کلاس مشترک است و آنها را با آن کلاس ها به اشتراک گذاشته است. سیب یک سوپر کلاس برای سیب قرمز است. همه صفات و رفتارهای مشترک بین سیب قرمز و سیب، در کلاس سیب تعریف شده است و سیب قرمز از آن صفات و رفتارها استفاده می کند.

 

زیر کلاس : یک زیر کلاس، کلاسی است که دارای ویژگیهای است که منحصر به آن کلاس می باشد همراه با ویژگیهای که در یک سوپر کلاس تعریف شده است و آنها را از آن سوپر کلاس به ارث می برد. یک کلاس می تواند هم سوپر کلاس باشد و هم یک زیر کلاس. کلاس سیب یک سوپر کلاس برای کلاس سیب قرمز است و یک زیر کلاس برای کلاس میوه است.

 

کلاس انتزاعی(class abstract ) : کلاس انتزاعی، کلاسی است که نمی تواند نمونه ای داشته باشد. یک کلاس انتزاعی باید توسط یک کلاس به ارث برده شود تا از صفات و رفتارهای آن استفاده شود.

او …

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

دکتر شریعتی

Categories: غیرفنی Tags:

روابط (مفاهیم شی گرایی)

۷ شهریور ۱۳۸۵ ۱ دیدگاه

رابطه ها:

اشیاء برای اینکه کاری انجام بدهند نیاز دارند با هم کار کنند پس آنها نیاز به روشی دارند که با هم ارتباط برقرار کنند. وقتی که یک مشتری بلیط های را سفارش می دهد، مشتری باید یک سفارش ایجاد کند و بلیط مورد نظرش را به آن سفارش اضافه کند. اشیاء نرم افزاری که نماینده مشتری، سفارش، بلیط هستند نیاز دارند تا رابطه بین اشیاء دنیا واقعی را عینا تکرار کنند.

یک لینک(Link) رابطه بین دو شی است. یک رابطه(association) یک ارتباط بین دو کلاس هست.

رابطه بین کلاس ها (اشیاء) به سه شکل متفاوت تقسیم می شود:

  1. ارتباط (association)
  2. رابطه تجمع (aggregation)
  3. رابطه ترکیب (composition)

 

ارتباط (association) :

ساده ترین شکل رابطه، ارتباط می باشد. که یک رابطه نظیر به نظیر(peer-to-peer) بین دو شی می باشد. یک شی بطور ساده درباره شی دیگر می داند بهمان طریقی که یک فرد ممکن است فرد دیگری را بشناشد. یک ارتباط یه یک کلاس امکان می دهد تا درباره صفات و رفتارهای کلاس دیگر بداند.

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

برای مثال کلاس تحویل دار درباره صفات و رفتارهای کلاس حساب بانکی می داند و کلاس حساب درباره صفات و عملیات تحویل دار می داند. بنابراین این دو کلاس می توانند پیغامهایی را به یکدیگر ارسال کنند.

 

رابطه تجمع (aggregation):

رابطه تجمع، یک رابطه بین یک واحد کل و جزء است. در رابطه تجمع یک کلاس می تواند شامل نمونه های از کلاس های دیگر نیز باشد. برای مثال یک کلاس ماشین را در نظر بگیرید، که خود از چندین کلاس دیگر مانند یک کلاس موتور، چندین کلاس لاستیک و تعدادی کلاس دیگر برای سایر بخش ها تشکیل شده است.

در رابطه تجمع، شی جز به شی کل وابسته نیست. شی کل و جزء در زمانهای مختلف ایجاد و از بین می رود یعنی ممکن است شی جزء را ایجاد کنید بدون اینکه شی کل را یجاد کنید. برای مثال شی موتور و لاستیک را ایجاد می کنید بدون اینکه شی ماشین را ایجاد کنید. یا بر عکس ممکن است شی ماشین را با اشیاء که قبلا وجود داشته اند ایجاد کنیم بدون اینکه نیاز باشد همزمان با ایجاد ماشین، آنها را ایجاد کنیم.

برای مثال یک کلاس برای تیم پروژه در نظر بگیرید. و یک کلاس برای کارمندان شرکت در نظر بگیرید. تیم پروژه، از کارمندان شرکت تشکیل شده است. اما ممکن است یک تیم پروژه منحل شود در حالیکه کارمندان به کار خود در شرکت ادامه می دهند.

 

رابطه ترکیب (composition):

رابطه ترکیب، شبیه رابطه تجمع می باشد اما با یک تفاوت:

در رابطه ترکیب، چرخه حیات جزء نمی تواند بیش از چرخه حیات کل باشد. به عبارت دیگر شی جزء هیچ وقت نمی تواند بدون شی کل وجود داشته باشد، شی جزء همزمان با شی کل بوجود می آید و همزمان با شی کل از بین می رود.

برای مثال یک پنجره در سیستم عامل ویندوز را در نظر بگیرید، یک پنجره از چندین شی تشکیل شده است بعنوان مثال دکمه Minimize، Maximize، Close ، یک منو و …. زمانیکه یک شی پنجره ایجاد می شود همزمان با آن تمام دکمه ها و منو ایجاد می شود. با بستن پنجره تمام اشیاء، پنجره، دکمه ها و منو از بین می روند. امکان ندارد بدون وجود یک شی پنجره یک شی منو ایجاد شود و به کاربر نمایش داده شود یا با بستن و از بین رفتن شی پنجره، شی منو از بین نرود.  

رابطه ترکیب همان حذف پخش شونده (cascading deletion) است. در یک رابطه ترکیب هنگامیکه رکورد اصلی حذف می شود تمام رکورد های مرتبط با رکورد اصلی حذف می شوند.

رابطه ترکیب، مستلزم چرخه های حیات همزمان است، به طوریکه وقتی شی، کل حذف می شود، اشیاء جز نیز حذف می شود.

 

 

ملت م…

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

دریغ برملتی که در خواب شهوت را منفور می داند، و اما در بیداری تسیلم اش می شود.

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

دریغ بر ملتی که سیاست مدارش روباه، فیلسوفش تردست، و هنرش، هنر وصله و پنیه و تقلید باشد.

دریغ بر ملتی که حاکم جدیدش را با بوق و کرنا خوشامد می گوید، و با ققهه و غوغا وداعش می گوید، تا با بوق و کرنا دیگری را خوشامد گوید.

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

جبران خلیل جبران

 

Categories: غیرفنی Tags:

کلاس (مفاهیم شی گرایی)

۳ شهریور ۱۳۸۵ ۱ دیدگاه

کلاس (Class)

 

صفات و رفتارهای مربوط به شی یک کتاب را در قسمت اول مفاهیم شی گرایی بررسی کردیم، تمامی صفات و رفتارهای مربوط به این شی کتاب را دیگر کتابها نیز دارند پس شما می توانید یک مجموعه از قوانین را ایجاد کنید و برای همه کتابها نیز از آن استفاده کنید. مجموعه قوانین را کلاس می نامند. یک کلاس مجموعه ای از اشیاء است.اگر مجموعه ای از اشیاء دارای صفات و رفتارهای مشابه باشند، شما می توانید این اشیاء را در یک کلاس گروهبندی کنید.

یک کلاس یک الگو (template) است که صفات و رفتارهای یک شی واقعی را تعریف می کند. یک کلاس را همانند یک قالب شرینی با شکل حرف A در نظر بگیرید. قالب شرینی حرف A نیست اما چیزی را شبیه حرف A تعریف می کند. اگر شما یک حرف A را بخواهید ، قالب شرینی را بر روی خمیر شرینی قرار می دهید و یک حرف A بوجود می آورید ، اگر شما یک حرف A دیگر را بخواهید دوباره قالب را روی خمیر قرار می دهید و یک حرف دیگر A را بوجود می آورید و هر چند بار دیگر که بخواهید می توانید این فرایند را با همان قالب شرینی تکرار کنید.

پارگراف بالا درباره کلاس ها نیز صادق است. هنگامیکه شما یک شی را به نمایندگی از یک کلاس می خواهید ، شما یک نمونه (instance) از آن کلاس را ایجاد می کنید. یک نمونه شبیه حرف A است همانند هنگامیکه شما قالب شرینی را از روی خمیر بر می دارید.

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

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

 

و چنان بی تابم، که دلم می خواهد

 

بدوم تا ته دشت، بروم تا سر کوه.

 

دورها آوایی است، که مرا می خواند.

سهراب سپهری

Categories: غیرفنی Tags:

اشیاء انتزاعی (مفاهیم شی گرایی)

۲ شهریور ۱۳۸۵ ۱ دیدگاه

اشیاء انتزاعی (Abstract Objects) :

یک شی انتزاعی (Abstract Object) توصیفی از یک شی واقعی بدون در نظر کرفتن جزئیات آن شی است.

Abstract Object = Real Object – Details

(شی انتزاعی = شی واقعی – جزئیات)

به عنوان مثال ما برای یک شی فرد خصوصیاتی مانند نام ، نام خانوادگی ، قد و وزن را در نظر می گیریم و از بقیه صفات مربوط به آن صرفنظر می کنیم.

یک شی انتزاعی مدلی از شی واقعی است. یک شی واقعی همه صفات و رفتارهای تعریف شده یک شی انتزاعی را دارد همراه با جزئیات حذف شده از شی انتزاعی. برای مثال شی انتزاعی فرد یک مدل برای یک شخص واقعی است.شی انتزاعی می گوید که یک شخص واقعی باید یک نام ، نام خانوادگی ، قد و وزن داشته باشد. یک شخص واقعی مقادیر مرتبط با این صفات را مشخص می کند. مانند:

نام : بهروز

نام خانوادگی : بختیاری

قد : ۱۷۵

وزن : ۶۰

یک شی واقعی (Real Object) یک نمونه از شی انتزاعی است. شما می توانید بگوید که یک شخص واقعی یک نمونه از فرد انتزاعی است.

شی انتزاعی = یک مدل از شی واقعی

شی واقعی = یک نمونه از شی انتزاعی

انتزاعی کردن اشیاء واقعی :

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

پگاه، دروگران از جاده روبرو سر می رسند:

 

رسیدگی خوشه هایم را به رویا دیده اند.

 

سهراب سپهری

Categories: غیرفنی Tags: