چندریختی:
چند ریختی کمیتی است که به یک رابط امکان می‌دهد تا از عملیات یکسانی در قالب یک کلاس عمومی استفاده کند.عمل خاص کلاس را ذات حقیقی شیء تعیین می‌کند.مثال ساده‌ای از چند ریختی،فرمان اتومبیل است.عمل فرمان اتومبیل برای تمام اتومبیل‌ها بدون توجه به ساز و کاری که دارند،یکسان است.فرمان برای اتومبیل که به طور مکانیکی کار می‌کند یا با نیروی برق یا هر چیز دیگری،عمل یکسانی را انجام می‌دهد.بنابراین،پس از اینکه شما عملکرد فرمان را یاد گرفتید،می توانید فرمان هر اتومبیلی را کنترل کنید.همین هدف در برناهه نویسی نیز اعمال می‌شود. به طور کلی،مفهوم چند ریختی،اغلب با عبارت (یک رابط،چندین روش) بیان می‌شود. این بدین معنی است که امکان طراحی رابط عمومی برای گروهی از عملیات مرتبط وجود دارد. چند ریختی یا چندشکلی به این معنا است که اشیاء می‌توانند در موقعیت‌های مختلف، رفتارهای متفاوتی بروز دهند. مثلاً یک تابع در صورتی که بر روی نمونه‌ای از کلاس آ فراخوانی شود، رفتار ب را بروز دهد در حالی که اگر بر روی کلاس ج (که فرزند کلاس آ است) فراخوانی شود، رفتاری متفاوت انجام دهد. [5]

انتزاع:

انتزاع یا تجرید به این معنا است که بخشی از یک موجودیت یک مفهوم را که میان همه وارثان مشترک است، پیش تعریف کنیم. این توانایی منجر به داشتن نگاه مشابه به موجودیت‌های مشابه می‌گردد.
یک مثال کاربردی:
در اطراف ما اشیاء زیادی وجود دارد و می‌توان تمام مفاهیم موجود در طبیعت را با اشیاء تقلیل داد. مثلاً یک ماشین باربری. این ماشین یک سری خصوصیات دارد: چهار چرخ، یک پدال ترمز، یک پدال گاز، یک فرمان و یک محل بزرگ برای قرار دادن اشیاء در آن و… این ماشین در صورتی که ما پدال گاز آن را فشار دهیم، حرکت می‌کند. در صورتی که فرمان آن را بچرخانیم تغییر مسیر می‌دهد. پس این شیء علاوه بر یک سری خصوصیات، یک سری رفتار مشخص هم به ما نشان می‌دهد. ولی فقط این یک ماشین نیست که این کار را انجام می‌دهد. تمامی ماشین‌ها این کارها را انجام می‌دهند. پس می‌توانیم این ماشین را ‘ تعریف’  کنیم و بگوییم:
ماشین باربری وسیله‌ای است که چهار چرخ، یک گاز، یک ترمز، یک فرمان و یک محل برای حمل بار دارد و اگر پدال گاز آن فشار داده شود حرکت می‌کند. این تعریف این ماشین است ولی خود آن نیست. هر زمانی چنین ماشینی بخواهیم به کارخانه تولید آن می‌رویم و از فروشندگان می‌خواهیم تا با توجه به این تعریف یک ماشین به ما بدهند.
مفاهیم فوق در زبان‌های برنامه نویسی شیءگرا گنجانده شده‌اند. در این زبان‌ها، اشیاء زیادی از پیش وجود دارند که برنامه‌نویسان می‌توانند از آنها استفاده کنند. [5]

 

 

 

ارتباط اشیاء:
مجدداً به مثال ماشین باربری بر می‌گردیم و این بار، یک ماشین سواری را تعریف می‌کنیم. ماشین سواری شیئی است که چهار چرخ، یک ترمز، یک پدال گاز و یک صندوق عقب دارد. این تعریف به تعریف ماشین باربری بسیار شبیه‌است. به عبارت دیگر ما به یک تعریف جدید می‌رسیم: خودرو. خودرو وسیله‌ای است که چهار چرخ، یک ترمز، یک پدال گاز دارد. پس از این به بعد تعریف ماشین باربری و ماشین سواری خیلی ساده‌تر می‌شود. ماشین باربری، خودرویی است که محلی برای قرار دادن بار داشته باشد و ماشین سواری خودرویی است که صندوق عقب داشته باشد.
اگر کسی به درب کارخانه مراجعه کند و بگوید که ‘خودرو’ می‌خواهد، چیزی دریافت نمی‌کند. خودرو یک تعریف انتزاعی است، برای تعریف خودرو شیء وجود ندارد پس مشتری تنها می‌تواتند ماشین باربری یا ماشین سواری بخواهد.کارواش را در نظر می‌گیریم. این کارواش خودرو را تمیز می‌کند و دیگر به طور جزئی عنوان نمی‌کند که کدام نوع خودرو را تمیز می‌کند. به عبارت دیگر نوع خودرو برای کارواش مهم نیست.وقتی شخصی قصد اجاره خودرویی دارد، و می‌خواهد جنسی را حمل کند در هنگام نماس با متصدی کرایه ماشین می‌گوید: «اگر خودرو شمااز نوع باربری است، برای من ارسال کنید»، ولی اگر قصد جابجا شدن را دارد می‌گوید : «برای من یک ماشین سواری بفرستید»

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

برخی از تعاریف کاملاً عام است و نمی‌توان از آنها نمونه شیء ساخت و تنها تعریف هستند.به این تعاریف Interface گفته می‌شود. [5]

 

 

 

 

 

 

فصل پنجم

بررسی توجیه پذیری طرح (تعداد عملیات، زمان و هزینه)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5-1- مقدمه

در این فصل عملیات سنتی که حذف می شوند، عملیات سنتی که به عملیات سیستمی تبدیل می شوند و فهرست عملیات سیستمی که اضافه شده اند آورده شده است.

 

5-2- فهرست عملیات سنتی حذف شده

منظور عملیاتی هستند که در تبدیل از عملیات فیزیکی به منطقی (نرم افزاری) حذف می گردند. این گونه عملیات معمولا یا به هیچ عنوان قابل سیستمی شده نیستند و یا اینکه می توان برای بهبود کار از آنها صرف نظر کرد. فهرست عملیات به دست آمده به شرح ذیل می باشد:

 

1.  دریافت ارائه درخواست عضویت مراجعان به مدیر جهت بررسی (اکتور کارمند)

2.  تائید درخواست (اکتور مدیر)

3.  رد درخواست (اکتور مدیر)

4.  درخواست مدارک جهت ثبت نام (اکتور کارمند)

5.  درخواست کد عضویت از مدیر برای عضو (اکتور کارمند)

6.  صدور کارت عضویت برای درخواست کننده (اکتور کارمند)

7.  تحویل و ثبت تحویل کتاب (اکتور کارمند)

8.  بازگشت کتاب (اکتور اعضا)

9.  تحویل گیری و ثبت بازگشت کتاب (اکتور کارمند)

10.   بررسی شمول جریمه دیر کرد (اکتور کارمند)

11.   پرداخت جریمه (اکتور اعضا)

12.   درخواست استفاده از سالن مطالعه (اکتور اعضا)

13.   درخواست تمدید عضویت (اکتور اعضا)

14.   تمدید عضویت (اکتور کارمند)

15.   لغو عضویت (اکتور کارمند)

 

همانگونه که مشاهده می شود 15 مورد از عملیات که در سیستم سنتی استفاده می شد حذف گردیده است.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5-3- عملیات سنتی تبدیل شده به عملیات سیستمی

هشت مورد از مواردی که به صورت سنتی بوده اند و قابل تبدیل به روش سیستمی (نرم افزاری) هستند به شرح ذیل می باشند:

 

1.         درخواست عضویت در کتابخانه

(اکتور اعضا)

2.         تحویل مدارک جهت ثبت نام

(اکتور اعضا)

3.         بررسی و اعتبار سنجی مدارک تحویلی (اکتور کارمند)

4.         تائید اعتبار سنجی مدارک

(اکتور کارمند)

5.         عدم تائید اعتبار سنجی مدارک

(اکتور کارمند)

6.         تخصیص کد عضویت به عضو

(اکتور مدیر)

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

 

 

 

 

D         درخواست کتاب (اکتور اعضا): این مورد به مشاهده و دانلود کتابها در وب سایت تبدیل می شود.

D         ارائه گزارشهای مدیریتی به مدیر (اکتور کارمند): در بخش سیستمی، دیگر مشاهده گزارش منوط به وجود یک شخص نخواهد بود و مدیر به راحتی می تواند گزارشات مدیریتی را مشاهده نماید.

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

 

5-4- فهرست عملیات سیستمی که اضافه شده اند

1.  LogIn

2.  LogOut

3.  تعیین سطح دسترسی کاربران

4.  ویرایش لیست کتابها

5.  دانلود کتاب

6.  آپلود کتاب

7.   بروز رسانی وب سایت

8.   انجام امور پشتیبانی وب سایت

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

 

5-5- فهرست مرتب شده کلیه عملیات سیستمی

1.  SignUp (کار بر عادی)

2.  LogIn (کاربر)

3.  تعیین سطح دسترسی کاربران (مدیر)

4.  ویرایش لیست کتابها  (مدیر)

5.  مشاهده گزارشات  (مدیر)

6.  ایجاد گروه کتاب جدید (مدیر)

7.  بروز رسانی وب سایت (اپراتور)

8.  انجام امور پستیبانی وب سایت (اپراتور)

9.  ایجاد آرشیو (اپراتور)

10.   دانلود کتاب (کاربر)

11.   آپلود کتاب (کاربر)

12.   مشاهده فهرست کتابها (کاربر عادی) (کاربر)

13.   جستجوی کتابها  (کاربر عادی) (کاربر)

14.   LogOut

 

 

5-6- مقایسه کتابخانه سنتی و سیستمی

5-6-1- تعداد عملیات

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

نمودار(5-1) مقایسه ای تعداد عملیات سیستمی و سنتی کتابخانه

 

جدول (5-1) مقایسه ای تعداد عملیات سیستمی و سنتی کتابخانه

ردیف تعداد عملیات سیستمی تعداد عملیات سنتی میزان کاهش عملیات درصد
1 14 23 9 39.1 %

 

 

 

5-6-2- زمان

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

 

نمودار(5-2) مقایسه ای عملیات سیستمی و سنتی کتابخانه بر حسب زمان

 

جدول (5-2) مقایسه ای عملیات سیستمی و سنتی کتابخانه بر حسب زمان

ردیف زمان ثبت نام در عملیات سیستمی زمان ثبت نام در عملیات سنتی میزان کاهش زمان
1 0.288  (حداکثر 5 دقیقه) 14 روز 99.98%

 

این طرح از نظر صرفه جویی در زمان بسیار مناسب به نظر می رسد. زیرا از نظر زمان 98% صرفه جویی شده است و این مساله بسیار مهمی است. البته برای توجیه نمودن طرح نمودارها و اعداد و ارقام دیگری نیز مورد نیاز می باشد که یکی از مهمترین این فاکتورها فاکتور هزینه های ثابت و جاری طرح می باشد. برای قابل اجزا بودن یک طرح بایستی طرح مورد نظر هم از نظر زمان و هم از نظر هزینه ها توجیه پذیر باشد. این مطلب نشان می دهد که زمان و هزینه در یک طرح با هم رابطه مستقیم دارند و نباید کاهش یکی باعث افزایش دیگری شود.

 

5-6-3- هزینه

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

 

جدول (5-3) هزینه های مربوط به روش سنتی

ردیف شرح هزینه ها هزینه ماهیانه (ریال) هزینه سالیانه (ریال)
1 نیروی انسانی (8 نفر) 000/000/24 000/000/300
2 اجاره مکان کتابخانه 000/000/8 000/000/96
3 هزینه آب و برق و تلفن و . . موارد مصرفی 000/000/2 000/000/24
4 هزینه تعمیرات و نگهداری 000/000/1 000/000/12
5 هزینه ایاب و ذهاب پرسنل 000/900 000/800/10
6 سایر هزینه ها 000/500 000/000/6
جمع کل: 000/800/448

 

جدول (5-4) هزینه های مربوط به روش سیستمی

ردیف شرح هزینه ها هزینه ماهیانه (ریال) هزینه سالیانه (ریال)
1 نیروی انسانی (2 نفر) 000/000/8 000/000/96
2 هزینه تمدید Host و Domain وب سایت 000/200 000/400/2
3 هزینه آب و برق و تلفن و . . موارد مصرفی 000/500/1 000/000/18
4 سایر هزینه ها 000/250 000/000/3
جمع کل: 000/400/119

 

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

نمودار(5-3) مقایسه هزینه ها

 

جدول (5-5) مقایسه هزینه های طرح

ردیف هزینه روش سنتی هزینه روش سیستمی صرفه جویی درصد صرفه جویی
1 000/800448 000/400/119 000/400329 73.39 %

 

ملاحظه می شود که این طرح از نظر اقتصادی بسیار به صرفه خواهد بود. زیرا از نظر هزینه ها حدود 74 درصد صرفه جویی سالیانه در بر خواهد داشت.

 

5-6-4- نتایج فاکتورهای بررسی شده

 

جدول (5-6) نتایج فاکتورهای بررسی شده

ردیف فاکتور بررسی شده میزان صرفه جویی رده
1 تعداد عملیات انجام شده 39.1 % متوسط
2 زمان 99.98% عالی
3 هزینه 73.39 % بسیار خوب
میانگین: 70.82 %

 

 

 

 

 

فصل ششم

متدلوژي شیءگرا

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6-1- مقدمه

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

 

6-2- شیءگرا

6-2-1- متدولوژي تحليل شيء گرا[1]

 

    شيءگرايي بيش از آنکه يک متدلوژي مشخص براي توسعه سيستم ها باشد، يک رهيافت و يا فراتر از آن يک قالب فکري براي مدلسازي و ساخت سيستم هاست. همچون رهيافت ساخت يافته که از نظر تاريخي ابتدا در حوزه برنامه نويسي پديد آمد و سپس به حوزه هاي تحليل و طراحي تعميم يافت، رهيافت شيءگرا نيز در آغاز در قلمرو زبانهاي برنامه نويسي توسعه يافت.
در دهه هفتاد ميلادي، زبانهايي چونSimula، Smalltalkو Modula طراحي شد که بر خلاف زبانهاي رويه اي سنتي، زبانهاي شي ءگرا ناميده مي شدند. اساس اين زبانها که به طور خاص براي ساختن برنامه هايي در زمينه شبيه سازي و هوش مصنوعي طراحي شده بودند، بر تصويرسازي قلمرو کار بر مبناي اشياء و کلاسها استقرار بود.
در آن زمان استفاده از اين زبانها چندان رواج نيافت، اما ايده هاي اساسي آن مانند وراثت، کپسوله کردن، چند ريختي و برنامه نويسي مبتني بر رويداد در يکي از موفقترين و متداول ترين زبانهاي برنامه نويسي يعني C++ به کار گرفته شد. با رواج C++ و سپس گسترش رابط گرافيکي کاربران [2](GUI) که از مفاهيم شي ءگرايي استفاده مي کردند، اندک اندک شي ءگرايي به عنوان يک قالب فکري مسلط در مهندسي نرم افزار درآمد.
تعميم و گسترش ايده هاي شي ءگرايي در حوزه تحليل و طراحي سيستم، بعدها صورت گرفت. کساني چون بوچ ، فايراسميت ، کود و يوردون متدلوژيهايي براي توسعه سيستم ها بر مبناي اين ايده ها طراحي کردند. تحليل و طراحي شي ءگرا در دهه 90ميلادي شرح و بسط زيادي پيدا کرده است و امروزه به نظر مي رسد گرايش غالب در توسعه آتي متدلوژيهاي مهندسي نرم افزار باشد.
با اين وجود، رواج، همه گيري و کاربردپذيري اين روشها همپاي توسعه فني مباني آنها رشد نکرده است و امروزه اين متدلوژيها همچنان سهم بسيار اندکي از دامنه کار توسعه سيستم ها را به خود اختصاص مي دهند.
هرچند متدلوژيهاي متعددي در خانواده روشهاي شي ءگرايي طرح شده اند، اساس اين روشها در اصل يکي است. در اين گزارش براي تشريح مفاهيم اساسي و مراحل توسعه سيستم بر مبناي شيءگرايي، يکي از متدلوژيهاي مطرح اين خانواده يعني متدلوژي تحلیل شيءگرا (OOA) انتخاب شده است. اين متدلوژي توسط کود و يوردون در سال 1991طراحي شده است. [7]

 

6-2-1-1-

nمبانی و مفاهیم شي ءگرا

براي تشريح الگوي مفهومي روشهاي شي ءگرا، شايد بهتر باشد آن را با رهيافت سنتي مدلسازي در روشهاي ساخت يافته مقايسه نمود. در الگوي ساخت يافته، در اولين تقسيم، سيستم به دو وجه “داده ” و “فرآيند” تفکيک مي شود. سپس طي روندي سلسله مراتبي و مطابق با روش از بالا به پايين، هريک از اين وجوه خود به اجزاء و مؤلفه هاي فرعي تجزيه مي شوند. اين روند تا به جايي ادامه پيدا مي کند که عناصر قابل پياده سازي (ساختار پرونده هاي فيزيکي، واحدهاي برنامه اي ) مشخص شوند.

شکل (6-1) ساختار سيستم شي ءگرا

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

از ديدگاه شي ءگرايي، قلمرو کار (يا قلمرو مسأله ) از تعدادي شي ء و ارتباط ميان اشياء تشکيل شده است. تعريف شي ء آنقدر کلي است که تعريف دقيقي نمي توان از يک شي ء به دست داد. هر چيزي ممکن است يک شي ء باشد؛ پرونده، کاربر، دستگاه فيزيکي، واحد سازماني، سيستم، و به طور کلي هر موجوديتي که داراي داده ها و رفتار مربوط به خود باشد. همانگونه که ذکر شد هر شي ء داراي دو وجه يا بعد دروني است : داده، يعني مشخصات اطلاعاتي که حالت شي ء را در هر لحظه معين مي کنند. و فرآيند، يعني رفتاري که شي ء در واکنش به محرکهاي خارجي از خود نشان مي دهد. بعد فرآيندي شي ء را در متدلوژيهاي شي ءگرا، رفتار، سرويس و متد هم مي نامند. داده هاي مربوط به يک شي ء، به شکل مشخصه هاي آن شي ء نشان داده مي شود.
اگر دو يا چند شي ء در بخشي از مشخصه ها و رفتارهاي خود مشترک باشند، مي توان شيئي کلي تر از آنها را تصور کرد که در بر دارنده آنهاست. اين اشياء کلي را کلاس (رده ) مي گويند. ميان اشياء و کلاسها رابطه عضويت (تعلق ) برقرار است. همچنين هر کلاسي مي تواند خود عضو کلاس بالاتري باشد و همين طور الي آخر. به اين ترتيب ميان کلاسها و اشياء يک سيستم، شبکه اي از ارتباطات سلسله مراتبي پديد مي آيد که ساختار اشياء يا مدل اشياء سيستم را مشخص مي کند.
ارتباط ميان کلاسها ممکن است به يکي از دو شکل عموم ـ خصوص (مثلا رابطه ميان اسناد بانکي و چک ها) يا کل ـ جزء (مثلا دانشگاه ـ دانشکده ) باشد. تحليل سيستم در روشهاي شي ءگرا اساساً عبارت است از شناسايي اشياء و کلاسهاي سيستم و تشخيص روابط ميان آنها.
همانگونه که گفته شد، هر شي ء داراي رفتار ويژه خود نيز مي باشد که در پاسخ به محرکهاي بيروني از خود نشان مي دهد. اين محرکها ممکن است از خارج سيستم يا از اشياء ديگر درون سيستم دريافت شود. اين محرکها را در اصطلاح شي ءگرايي، پيام مي نامند. عملکرد سيستم، برآيند رفتارهايي است که در اشياء سيستم از خود نشان مي دهند.
ويژگي مهمي که در ارتباط ميان دو شي ء (کلاس ـ کلاس يا کلاس ـ شي ء) مطرح مي شود، وراثت است. به اين معني که شي ء عضو يک کلاس، بخشي از داده و فرآيندهاي شي ء بالاتر را عيناً به ارث مي برد. علاوه براين، اين شي ء يقيناً داراي داده ها و فرآيندهايي است که در شي ء بالاتر وجود نداشته است. بنابراين در سلسله مراتب اشياء سيستم، هر داده يا فرآيند تنها به داده هايي دسترسي دارد (يا از داده هايي آگاه است ) که براي انجام عمليات خود به آنها احتياج دارد.
يک نتيجه ديگر، خصلتي است که از آن به کپسوله سازي تعبير مي شود، به اين معني که هر واحد تفکيک (شي ء) به طور مستقل داراي داده ها و فرآيندهاي مورد نياز خود است و بخشي از اين داده ها و فرآيندها ممکن است از ديد ساير واحدهاي سيستم مخفي باشد. به اين ترتيب شي ء ماهيتي تقريباً مستقل از بافت و محيط خود پيدا مي کند و مي توان آن را در بافت و محيط سيستم ديگري نيز بکار بست. اين ويژگي را بازکاربردپذيري مي نامند که از مهمترين مزايا و دستاوردهاي رهيافت شي ءگرا محسوب مي شود.
يکي از ويژگيهاي متدلوژيهاي شي ءگرا وحدت مفهومي الگوها در کليه مراحل زيست چرخ توسعه سيستم است. به اين معني که در طي مراحل تحليل، طراحي و پياده سازي سيستم، از مفاهيم، اصطلاحات و قالب فکري واحدي استفاده مي شود. تحليل گر کار خود را با شناسايي کلاسها و اشياء آغاز مي کند، طراح مدل منطقي و فيزيکي سيستم را با استفاده از ساختار کلاسها و اشياء مي سازد و برنامه نويس نيز با استفاده از يکي از زبانهاي شي ءگرا، اين طراحي را به کد تبديل مي کند. حتي براي طراحي بانکهاي اطلاعاتي نيز روشها و ابزارهاي شي ءگرا وجود دارد. به اين ترتيب زبان مشترکي در کليه مراحل توسعه سيستم به وجود مي آيد که امر ساخت سيستم و نگهداري و تغيير آن را تسهيل مي کند. [7]

 

وراثت:

وراثت یا ارث بری[3] از مفاهیم اساسی برنامه نویسی شیءگراست. هر شیء یک نمونه از یک کلاس است و هر کلاس می‌تواند از کلاس یا کلاسهای دیگری مشتق شده باشد )خواص متدها یا رویدادهای کلاس‌های دیگر را به ارث ببرد). در یک مثال ساده می‌توان اتومبیلی را در نظر گرفت که برای جلوگیری از بازنویسی خواص عمومی اتومبیل شامل: چهار چرخ، متدهای حرکت چرخ، متد چرخاندن فرمان، فرمان، بدنه، در و غیره، می‌توان یک کلاس پایه از اتومبیل ایجاد کرد سپس مثلاً برای اتومبیل زانتیا مدل C۵ یک کلاس جدید ایجاد کرده که خواص، متدها و رویدادهای عمومی اتومبیل را داشته باشد و فقط برای خواص، متدها و رویدادهای جدید این اتومبیل کد نوشته شود. این ویژگی باعث صرفه‌جویی در نوشتن کد و تا حدودی تضمین صحت کد موجود می‌شود. به عنوان مثال اگر کلاس پایه مشکلی داشته باشد فقط کافی است کلاس پایه تغییر داده شود و در تمامی کلاس‌هایی که از این کلاس پایه ویژگی‌ای ا به ارث برده‌اند این تغییر اعمال خواهد شد. [5]

 

کپسوله سازی:
کپسوله سازی[4]، مخفی‌سازی یا لفافه‌بندی، به این مفهوم اشاره دارد که باید بعضی خصوصیات یا رفتارهای شیء را از دید دیگران پنهان کرد. فرض کنید شما به عنوان یک راننده می‌خواهید اتومبیل شخصی تان را روشن کنید و به محل کارتان عزیمت کنید سوییچ را بر می‌دارید، استارت می‌زنید و با فشار آوردن به پدال‌های گاز و ترمز و چرخش فرمان و … به محل کارتان خواهید رسید. در طول این مسیر در اتومبیل شما به عنوان یک شیء اعمال مختلفی در حال انجام بود. مثلاً لنت ترمز به دیسک چرخ برخورد می‌کرد و باعث کم شدن سرعت می‌شد یا شمع‌ها شروع به جرقه زدن در زمانی بخصوصی می‌کردند. حال فرض کنید که عمل مخفی سازی وجود نداشت و شما مجبور بودید که جرقه زدن شمعها را کنترل می‌کردید و به سیستم سوخت رسانی در موقع لزوم دستور می‌دادید که سوخت را بداخل سیلندرها ارسال کند و… یا هیچ‌گاه به مقصد نمی‌رسیدید! یا سالم نمی‌رسیدید!
عمل مخفی سازی باعث می‌شود که اشیاء بدون آنکه از چگونگی کارکرد یکدیگر اطلاع داشته باشند با هم کار کنند.