خرید بک لینک

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

  1. Equals: این رفتار بررسی می کند که دو شئ با یکدیگر برابر هستند یا خیر.
  2. GetHashCode: این رفتار عددی را برمی گرداند که شناسه شئ ایجاد شده می باشد.
  3. GetType: نوع یا Type شئ را بر میگرداند. این متد را در بخش Reflection بیشتر بررسی خواهیم کرد.
  4. ToString: زمانی که این رفتار را برای یک شئ صدا می زنید، رشته ای مرتبط با آن شئ را بر میگرداند که به صورت پیش فرض Type Name یا نام نوع آن کلاس را بر میگرداند. در بخش Polymorphism با این متد بیشتر آشنا می شوید.


گفتیم زمان تعریف کردن یک شئ، نوع داده والد را به جای خود کلاس برای متغیر در نظر گرفت:


همینطور که مشاهده می کنید فرقی نمی کند مقدار متغیر چه باشد، هر مقداری را می توان در متغیر از نوع object ذخیره کرد. در این قسمت سعی کردیم مقدماتی از مبحث وراثت را با هم مرور کنیم. در بخش بعدی بحث وراثت را با بررسی مفهوم Polymorphism ادامه خواهیم داد.

شی

دیدگاه شی 1 (Object Oriented) از اواسط دهه 1970 تا اواخر 1980 در حال مطرح شدن بود.

در این دوران تلاشهای زیادی برای ایجاد روشهای تحلیل و طراحی شی گرا صورت پذیرفت. در نتیجه این تلاشها بود که در طول 5 سال یعنی 1989تا 1994 ، تعداد متدلوژیهای شی گرا از کمتر از 10 متدلوژی به بیش از 50 متدلوژی رسید. تکثیر متدلوژیها و زبانهای شی گرایی و رقابت بین اینها به حدی بود که این دوران به عنوان "جنگ متدلوژیها " لقب گرفت. از جمله متدلوژیهای پر کاربرد آن زمان می توان ازShlayer- Mellor ، Coad-yourdan ، Fusion ،OMT ،OOSE ، Booch و غیره نام برد. فروانی و اشباع متدلوژیها و روشهای شی گرایی و نیز نبودن یک زبان مدلسازی استاندارد ، باعث مشکلات فروانی شده بود . از یک طرف کاربران از متدلوژیهای موجود خسته شده بودند ، زیرا مجبور بودند از میان روشهای مختلف شبیه به هم که تفاوت کمی در قدرت و قابلیت داشتند یکی را انتخاب کنند . بسیاری از این روشها ، مفاهیم مشترک شی گرایی را در قالبهای مختلف بیان می کردند که این واگرایی و نبودن توافق میان این زبانها ، کاربران تازه کار را از دنیای شی گرایی زده می کرد و آنها را از این حیطه دور می ساخت . عدم وجود یک زبان استاندارد ، برای فروشندگان محصولات نرم افزاری نیز مشکلات زیادی ایجاد کرده بود.

پیدایش شی گرایی

برنامه نويسي شي گرا در اوايل دهه ۱۹۷۰ توسط آلن کي Alan Kay طراحي شده يعني اولين قدمهاي اين سبک برنامه نويسي توسط آلن کي برداشته شده است. اولين زبان شي گرا توسط آلن کي طراحي شد. اسم اين زبان Small Talk است.

آلن کي گفته بود که : آن چيزي که باعث شد اين فکر به ذهنم برسد نحوه عملکرد سلولهاي زيست محيطي بود. يعني اين سبک برنامه نويسي از روي سلولهاي جاندارها الگو برداري شده است.

آن چيزي که باعث شد که آلن کي از روي سلول هاي جانداران الگو برداري کند نحوه زندگي سلولها بود:

  • هر سلول نمونه اي از اصل است و هر خصوصياتي که دارد از اصل خود به ارث برده.(ژنتيک سلول). همچنين هر سلول رفتارهايي دارد که از اصل خود به ارث برده.
  • سلولها همگي مستقل از هم زندگي مي کنند و براساس ارسال پيام هاي شيميايي با يکديگر ارتباط برقرار مي کنند. ارسال پيام به اين صورت است که پيام از پوسته يکي خارج و به پوسته ديگري وارد مي شود.
  • سلولها مي توانند از يکديگر متمايز شوند.

با توجه به گفته های بالا


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

Small Talk مانند سلولهاي جانداري عمل مي کند. يعني آلن کي در تمامي قسمتهاي اين زبان تعيين کرده بود که اشيا با هم ارتباط برقرار مي کنند و داراي شناسنامه اي هستند و همچنين مستقل از همديگر کار مي کنند.

اصول اوليه اي که آلن کي براي برنامه نويسي شي گرا تعيين کرده بود اينها هستن:

  • هر چيزي يک شي است.
  • هر برنامه اي شامل اشيا هست که اشيا با ارسال پيام به يکديگر تعيين مي کنند که چه کاري بايد الان انجام بشود.
  • هر شي يک حافظه Memory براي خودش دارد که بتوان به وسيله آن اشياي ديگر را ساخت.
  • هر شي خودش از يک کلاس Class هست.

در زبان های برنامه نویسی شئ گرا نیز ما باید به شناسایی موجودیت ها و اشیاء مورد استفاده در برنامه بپردازیم و خصوصیات و رفتارهای آن را تعریف کنیم. فرض کنید تصمیم داریم برنامه ای برای مدیریت یک اداره بنویسیم. برنامه اداره شامل یکسری اشیاء می باشد مانند:

  1. عضو بخش های مختلف اداره
  2. اپراتور نرم افزار اداره
  3. دسته بندی بخش های مختلف اداره
  4. کارمند


پس از شناسایی موجودیت ها باید خصوصیت ها و رفتارهای آن ها را شناسایی کنیم. برای مثال شئ عضو اداره را در نظر بگیرید. این شئ شامل یکسری خصوصیت ها به شرح زیر می باشد:

  1. کد رهگیری
  2. نام
  3. نام خانوداگی
  4. شماره ملی
  5. نام پدر
  6. جنسیت
  7. مسئول کدام بخش بودن


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

    1. ورود به اداره
    2. خروج از اداره
    3. مرخصی

برچسب: نویسنده: مریم اسدیان تاريخ: شنبه 9 دی 1396 ساعت: 13:49

صفحه بندی