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

انتزاع:

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

 

 

 

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

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

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

 

6-2-1-2- مراحل اجرای طراحي شي ءگرا

در تحليل و طراحي شي ءگرا پنج فعاليت اساسي زير بايد انجام شود:

1.  يافتن کلاس ـ شي ها

2.  شناسايي ساختارها

3.  تفکيک موضوعي

4.  تعريف مشخصه ها

5.   تعريف روالها
هرچند اين فعاليت ها به مفهوم دقيق کلمه، مراحل متوالي اجراي متدولوژي نيستند و برخي از آنها را مي توان جزئاً به صورت موازي انجام داد، با اين وجود به خاطر وابستگي موضوعي فعاليت هاي پسين به فعاليت هاي پيشين و حرکت تدريجي از کليات به جزئيات مي توان آنها را هم ارز مراحل پيشرفت متدلوژي به مفهوم متداول آن شمرد.
در اين بخش اهداف و جزئيات هر مرحله (فعاليت ) شرح داده شده است:

1.يافتن رده ـ شي ها: هدف اصلي تحليل گر در اين مرحله، کسب شناخت از قلمرو کار سيستم و تشخيص رده ها و اشيايي است که نقش اساسي در کارکرد آن بازي مي کنند. نوع اقداماتي را که در اين مرحله انجام مي شود، مي توان با اولين مراحل مدلسازي داده ها در روشهاي کلاسيک ساخت يافته مقايسه کرد. در آن روشها، تحليل گر از طريق مطالعه قلمرو کار و يا روشهايي مانند مصاحبه، مرور مدارک و… سعي مي کند هستنده هاي عمده و اساسي سيستم را شناسايي و ثبت کند. در OOA نيز وظيفه تحليل گر در اين مرحله، کشف و شناسايي رده ها و اشياي مهم سيستم است. براي اين کار او بايد مدارک موجود را مطالعه کرده، با افراد مختلفي مصاحبه کند و احياناً سيستم هاي موجود يا مرتبط را بررسي نمايد.
عمل اساسي تحليل گر، به عنوان استخراج رده ها و اشياء از قلمرو کار توصيف شده است. يک کلاس ـ شي ء که آنرا با نماد زير نشان مي دهند، واحدي است متشکل از يک کلاس و اشيايي که در آن رده قرار مي گيرند.

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

·      شيء، مدل تجريدي چيزي است که در قلمرو کار وجود دارد.

·      اطلاعاتي که در مورد هر شي ء مي خواهيم در سيستم نگهداي کنيم، مشخصه هاي شي ء مي   ناميم.

·      اندرکنش ميان هر شي ء و ديگر اشياء روالها (يا خدمات ) شي ء ناميده مي شود.

·      کلاس، مجموعه اي است از اشيايي که اطلاعات و اندرکنشهاي مشترک دارند.

مهمترين و حساس ترين وظيفه تحليل گر در اين مرحله، تشخيص و شناسايي صحيح اشياء در قلمرو کار است. کد و يوردون چند ضابطه زير را به عنوان ملاکهاي تشخيص اشياء و کلاس هاي سيستم برمي شمرند :

o    ماندگاري اطلاعاتي ؛ آيا هيچ يک از داده هاي مربوط به شي ء لازم است در سيستم حفظ شود؟ اگر چنين نيست، احتمالا اين شي ء را نبايد جزء اشياء سيستم به شمار آورد.

o    ماندگاري عملياتي ؛ آيا هيچ يک از عمليات يا پردازشهاي مربوط به شي ء لازم است در سيستم حفظ شود ؟ اگر چنين نيست، احتمالا لزومي به وارد کردن شي ء در اشياء؛ سيستم نمي باشد. اگر براي شيئي، نه داده و نه پردازش ماندگاري وجود نداشته باشد، يقيناً مي توان آن را از مجموعه اشياء سيستم ها خارج کرد.

o    بيش از يک مشخصه ؛ اشياء سيستم معمولا بايد بيش از يک مشخصه داشته باشند.

o    بيش از يک شي ء در يک کلاس ؛ آيا همه مشخصه هاي تعيين شده، به همه اشياء عضو کلاس قابل اطلاق هستند ؟ اگر چنين نباشد، احتمالا بايد آن کلاس را به دو يا چند کلاس (به صورت سلسله مراتبي ) تجزيه کرد.

o     قابليت اطلاق عمليات ؛ آيا همه عمليات (خدمات ) تعيين شده، به همه اشياء عضو کلاس قابل انتساب هستند ؟ اگر چنين نباشد، مشابه ضابطه فوق، بايد کلاس هاي فرعي ايجاد کرد.

o    وجود اشياء در قلمرو کار ؛ همه اشياء سيستم را بايد از قلمرو کار (مسأله ) استخراج کرد و نه از راه حلهاي مسأله. به عنوان مسأله در يک سيستم ثبت نام دانشگاه، “دانشجو” شيي است که در قلمرو کار مستقيماً وجود دارد. اما چيزي مانند “فرم ثبت نام “، عليرغم آنکه در جهان خارجي واقعاً وجود دارد، وجودش وابسته به نحوه پياده سازي يکي از راه حلهاي سيستم است. به عبارت ديگر مي توان راه حلي براي پياده سازي سيستم تصور کرد که در آن شي ء “فرم ثبت نام ” وجود نداشته باشد.

o    اجتناب از اشياء مشتق ؛ اشياء مشتق، اشيايي هستند که مي توان آنها را از ساير اشياء يا مشخصه ها استخراج کرد، اينگونه اشياء را نبايد جزو اشياء واقعي سيستم به شمار آورد.

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

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

ساختار عموم ـ خصوص ؛ در اين نوع ارتباط که آن را به اختصار gen-spec مي نامند، يک کلاس عمومي به دو يا چند کلاس فرعي مرتبط مي شود. به عنوان مثال کلاس “کارکنان ” را مي توان به دو کلاس “کارکنان تمام وقت ” و “کارکنان پاره وقت ” تجزيه کرد. اين نوع رابطه بين کلاس ها را با نماد زير نشان مي دهند.

ساختار کل – جزء ؛ رابطه کل ـ جزء ميان چند کلاس برقرار است که يکي از آنها دربرگيرنده بقيه محسوب مي شود. اين رابطه ممکن است به يکي از اشکال زير برقرار باشد:

o رابطه يک کلاس کلي و اجزاء تشکيل دهنده آن ؛ مثلا بين يک سازمان و واحدهاي مختلف آن
o رابطه ظرف و مظروف ؛ مثلا بين يک کلاس درس و صندلي هاي موجود در آن
o رابطه مجموعه و اعضاي آن ؛ مثلا يک دانشکده و اساتيد آن
ساختار کل ـ جزء با نماد زير نشان داده مي شود.

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

3. تفکيک موضوعي: تفکيک موضوعي که مي توان آن را شناسايي موضوعات نيز نام نهاد، مرحله اي است که در آن مدل توليد شده در مراحل قبل که شامل فهرست و ساختار کلاس ها و اشياء سيستم است، به محدوده هاي موضوعي مختلف تفکيک مي شود. اين کار ممکن است در سيستم هاي کوچک تر ضروري نباشد، اما در سيستم هايي که بيش از 20 تا 30 کلاس در آنها شناسايي شده است، بدون تفکيک موضوعي نمي توان تحليل و طراحي را به خوبي پيش برد.
مرحله تفکيک موضوعي در روش OOA مشابه خوشه سازي فعاليت ها در رهيافت هاي سنتي مي باشد. تحليل گر بايد با دريافت نظرات کاربران، کلاس هاي شناسايي شده را در چند محدوده موضوعي شامل کلاس هاي مرتبط با هم تقسيم بندي کند. حاصل کار در اين مرحله به توليد مدلي منجر مي شود که شامل فهرست محدوده هاي موضوعي و کلاس هاي موجود در هر محدوده است. اين مدل را لايه موضوعي سيستم مي نامند که مکمل لايه ساختاري سيستم است.
به عنوان مثالي از لايه موضوعي در يک سيستم، مي توان به تقسيم بندي تراکنش هاي يک مؤسسه بانکي به دريافت، پرداخت، گشايش اعتبار و تهاتر اشاره کرد.
بايد توجه کرد لايه موضوعي، خود ساختاري سلسله مراتبي دارد. يعني هر موضوع ممکن است از چند موضوع فرعي تشکيل شده باشد و همين طور الي آخر.

4. شناسايي مشخصه ها: در اين مرحله مشخصه هاي کلاس ـ شي ءها تعيين مي گردد. اين مرحله با مرحله تعيين مشخصه ها در مدل داده اي روشهاي سنتي متناظر است. نام مشخصه هايي که براي هر شي ء تعريف مي شوند، در قسمت مياني نماد کلاس ـ شي ء نوشته مي شود.
تعيين رابطه بين کلاس ـ شي ءها مهم در همين مرحله انجام مي شود. اگر بين دو کلاس ـ شي ء ارتباطي وجود داشته باشد (در واقع بين مصداقهاي آنها رابطه اي باشد)، اين ارتباط با خطي که بين نماد دو کلاس ـ شي ء کشيده مي شود، نمايش داده مي شود. چندبه چندي رابطه نيز در دو انتهاي خط فاصل نوشته مي شود.
در OOA ملاحظات مربوط به پياده سازي بانک اطلاعاتي، مانند بهنجارسازي يا تعيين کليدها در مراحل بعد (طراحي ) انجام مي شود.

5. تعريف فرآيند: منظور از فرآيند (که در روشهاي مختلف شي ءگرايي به آن خدمت ، روش يا رفتار نيز گفته مي شود) عملياتي است که يک شي ء در پاسخ به دريافت يک پيام انجام مي دهد. در اين مرحله از OOA، فرآيندهاي کلاس ـ شي ءها تعيين مي گردد. يک راه براي تعيين
فرآيندهاي لازم، تعريف فرآيندهايي است که براي تغيير دادن حالت شي ءها لازم به نظر مي رسد. به اين منظور مي توان به مدل داده اي تهيه شده در مرحله قبل مراجعه کرد. برخي از فرآيندهاي ديگر از اعمال فرآيندهاي اساسي ايجاد، حذف و دسترسي به شي ءهاي مختلف حاصل ميشود.
غير از اين اعمال اساسي، بقيه فرآيندها به دو دسته کلي تقسيم مي شوند :

B         فرآيندهاي محاسباتي

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

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

 

6-2-1-3-

ابزارهای طراحي شي ءگرا

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

نمودار کلاس ها – نمودار شي ءها – نمودارهاي پيمانه اي – نمودارهاي فرآيند – نمودار تبديل حالت – نمودار زمانبندي – نمودار وراثت

شي ءگرايي يک روش مدلسازي و ساخت سيستم هاست که آن را مي توان تقريباً در تمام حوزه هاي سنتي کاربرد سيستم ها به کار بست. با اين وجود تاکنون اين روش بيشتر در مورد طراحي و ساخت سيستم هاي کنترل صنعتي، سيستم هاي کنترل بيدرنگ ، سيستم هاي عامل همه منظوره يا ويژه و سيستم هاي اطلاعات جغرافيايي (GIS) به کار رفته است. در اينگونه سيستم ها، طبيعت و ماهيت قلمرو کار مدلهاي شي ءگرا را ايجاب مي کند. عناصر سيستم در چنين حالتهايي، واحدهاي خودکار و نسبتاً مجزايي هستند که برحسب دريافت پيام هاي داخلي يا محيطي از خود واکنش نشان مي دهند و کارکرد کل سيستم از برآيند همين واکنشها شکل مي گيرد. [7]
6-2-1-4- کاربرد روش شیء گرا

    

شي ءگرايي يک روش مدلسازي و ساخت سيستم هاست که آن را مي توان تقريباً در تمام حوزه هاي سنتي کاربرد سيستم ها به کار بست. با اين وجود تاکنون اين روش بيشتر در مورد طراحي و ساخت سيستم هاي کنترل صنعتي، سيستم هاي کنترل بيدرنگ ، سيستم هاي عامل همه منظوره يا ويژه و سيستم هاي اطلاعات جغرافيايي (GIS) به کار رفته است. در اينگونه سيستم ها، طبيعت و ماهيت قلمرو کار مدلهاي شي ءگرا را ايجاب مي کند. عناصر سيستم در چنين حالتهايي، واحدهاي خودکار و نسبتاً مجزايي هستند که برحسب دريافت پيام هاي داخلي يا محيطي از خود واکنش نشان مي دهند و کارکرد کل سيستم از برآيند همين واکنشها شکل مي گيرد.
با وجود توسعه نسبتاً موفق متدلوژيهاي شي ءگرا در دهه 1990ميلادي و وجود ابزارهاي قوي براي پشتيباني اين روشها، گزارشي از کاربرد وسيع اين متدلوژيها در عرصه تحليل و طراحي سيستم هاي اطلاعاتي در دست نيست. تحقيقي که در سال 1991در مورد ميزان به کارگيري متدلوژيهاي مختلف توسعه سيستم صورت گرفته است، نشان مي دهد که تنها 3 تا 5درصد عمليات مهندسي نرم افزار به صورت جدي به شي ءگرايي اختصاص دارد. مي توان فرض کرد که همين ميزان اندک نيز بيشتر در لايه هاي پياده سازي و ساخت واسط کاربر به کار رفته است. کاربرد روش شي ءگرا در تحليل و طراحي سيستم ها، بويژه در مورد سيستم هاي بزرگ و بسيار بزرگ، مستلزم غلبه بر پيچيدگي هاي مفهومي و ابزاري بسياري است که معمولا از عهده متخصصين عادي خارج است. در مورد آينده متدلوژيهاي شي ءگرا از نظر کاربردپذيري و رواج استفاده، عملا نمي توان اظهار نظر قطعي کرد. [7]

 

6-2-1-5- مزایا و معایب متدولوژيهاي شي ءگرا

از آنجا که رهيافت شي گرا به مهندسي نرم افزار و توسعه سيستم ها يک روش نسبتاً جديد و روشهاي جديد در حيطه علوم و مهندسي معمولا قبل از ارزيابي و بررسي دقيق، به اعتبار نو بودنشان مورد استقبال متخصصين قرار مي گيرد، امروزه گرايش شديدي به مطرح کردن اين روشها در زمينه توسعه سيستم ها وجود دارد، بي آنکه اين اشتياق به رواج عملي آن در کاربردهاي واقعي انجاميده مي باشد. به همين دليل ارزيابي و نقد واقع بينانه متدولوژيهاي شي ءگرا تا حدي دشوار است. با اين وجود نکات زير را مي توان به عنوان نقاط قوت و ضعف اين روشها برشمرد :
1. مزايا

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

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

سازگاري با تغييرات ؛ مدلهايي که با استفاده از روشهاي OOA ساخته مي شوند، در مقابل تغييرات نسبتاً انعطاف پذيري بالايي دارند و بسادگي مي توان اين مدلها را همگام با تغييرات، بهنگام کرد.

2. معايب

دشواري ؛ مفاهيم و روشهاي طراحي شي ءگرا نسبتاً پيچيده است و به ويژه براي تحليل گران و طراحاني که با روشهاي ساخت يافته سنتي پرورش يافته اند، انس و آشنايي با قالب فکري شي ءگرا معمولا دشوار است.

عدم رواج ؛ تعداد شرکتها و گروههايي که بتوانند پروژه هاي توسعه سيستم را با استفاده از روشهاي OOA به صورت موفقيت آميزي اجرا کنند، بسيار اندک است. به همين دليل ايجاد و نگهداري سيستم ها با استفاده از روشهاي شي ءگرا مستلزم هزينه نسبتاً بالايي است که در مورد پروژه هاي کوچک و متوسط مقرون به صرفه نمي باشد.

تلفيق ناپذيري با ساير روشها ؛ روشهاي ساخت يافته سنتي در الگوي مفهومي و ابزارها و مراحل تا حد زيادي با هم اشتراک دارند. به همين دليل براي پياده سازي سيستم هايي که با اين روشها تهيه مي شوند، گزينه هاي متعددي با تلفيق و ترکيب متدلوژيها قابل انتخاب است. اما روشهاي شي ءگرا به دليل پيروي از يک قالب فکري کاملا مجزا، بسادگي قابليت تلفيق و ترکيب با بقيه روشها را ندارند.

3. جمع بندي
در مجموع پيروي از متدولوژيهاي شي ءگرا در تحليل و طراحي نظام آمارهاي ثبتي توصيه نمي شود. زيرا زيرساخت انساني و فني استفاده از اين روشها به ويژه در کشور ما هنوز به حد کافي توسعه نيافته است و از سوي ديگر در اين مورد به نظر مي رسد مي توان از روشهاي ساده تري که در خور ماهيت اساساً داده گراي اين سيستم ها نيز باشند، استفاده نمود. [7]

 

6-3- JAVA

6-3-1- تاریخچه

 

جاوا (JAVA) یک زبان برنامه نویسی است که درسال 1994 توسط یکی از مهندسین شرکت سان (sun) به نام جیمز گوسلینگ نوشته شد، جیمز از نوشتن برنامه با C++ خسته شده بود و جاوا را برای رفع نیازهای خود طراحی کرد. مثل لینوکس ترودلز که لینوکس (Linux) را برای استفاده خود پدید آورد.
جیمز ابتدا نام این برنامه را oak گذاشت. در آن‌زمان شرکت sun از توسعه oak منصرف شد ولی با پیشرفت و گسترش اینترنت و مشخص شدن قابلیت های برنامه و تطابق بعضی ویژگی های آن با نیازهای اینترنت شرکت sun پروژه oak را فعال نمود و نام جاوا را برای آن برگزید.
نام جاوا از Jsut Another Vague Acronym گرفته شده است و دلیل آن این بود که تیم برنامه نویسان جاوا به قهوه خیلی علاقه داشتند. این موضوع در لوگوی جاوا هم مشهود است.
نگارش نسخه اول جاوا در سال 95 آغاز شد و در سال 97 نسخه 1/1 و در سال 98 نسخه 2/ 1به بازار ارایه شد. البته تا کنون نسخه های متفاوت با قابلیت های متفاوت به بازار ارایه شده است.

جاوا زبان مادر برای سیستم عامل سولاریس است، مثل بیسیک برای سیستم عامل ویندوز و زبان سی برای یونیکس. [8]

 

6-3-2- قابلیت ها

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

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

 

6-3-3- JAVA2

توانایی های بالقوه جاوا با نیازهای روز اینترنت همخوانی پیدا کرد و به سرعت به صورت زبان بالفعل اینترنت و محاسبات تجاری درآمد. جاوا به سرعت گسترش یافت و طریقه محاسبات و همچنین استفاده از اینترنت را تغییر داد, به طوری که وقتی شما به صورت آنلاین کتابی می خرید یا سهامی را به فروش می رسانید در حال استفاده از جاوا هستید.
پس از گذشت 8 سال فعالیت جاوا این سوال مطرح می شود که جاوا چگونه می تواند بر موج جدید محاسبات پردازش تاثیر گذار باشد؟
دیدگاه های مختلفی دراین زمینه وجود دارد ولی مهم ترین آنها این است که جاوا اگر می خواهد نقش خود، یعنی افزایش کاربرد کامپیوتر را حفظ کند باید از پیچیدگی خود بکاهد. یکی از کلیدهای موفقیت جاوا نسخه تجاری  JAVA2 است که با نام J2EE شناخته شده است. J2EE نسخه جدید JAVA به وسیله شرکت SUN و با همکاری شرکت های IBM و HP تهیه شده است. J2EE بسیار قدرتمند است و توانایی های زیادی دارد ولی همانطور که می دانیم با افزایش قدرت پیچیدگی ها نیز افزایش می یابد. اما جاوا برای این که با سازگاری بیشتری در هنگام اجرا کار کند و قدرت خود را نیز حفظ کند باید ساده تر باشد.

جاوا 2 یا به این مساله توجه خواهد داشت و نقش خود را درمحاسبات حفظ خواهد کرد و یا به دلیل کاربردی نبودن به دست فراموشی سپرده می شود. اما امیدواری بسیاری وجود دارد که جاوا 2 موفق عمل کند, چون سرمایه ها و افکار زیادی آن را پشتیبانی می کنند. اما برای نیل به این هدف باید قادر به حل دو مساله باشد.جاوا 2 هنوز هم به طوری باور نکردنی پیچیده مانده است طوری که تنها برای افراد ماهر و نیروهای متخصص قابل استفاده است.
با توجه به یک نیاز جهانی برای کاهش قیمت ها و شرح حال به روز و جدید سازندگان فناوری اطلاعات پیچیدگی می تواند عاملی نابود کننده باشد. جاوا 2 باید با حفظ استانداردهای خود و توجه به نیازهای مشتریان و در صدر قرار گرفتن درعرصه های رقابتی روند تجاری شدن خود را تسریع کند.
همان طورکه ساده تر کردن Visual Basic کاربرد ویندوز را افزایش داد, جاوا 2 نیز باید میانه رو باشد و با کاهش پیچیدگی از حالت اختصاص یافتن به نخبگان خارج شود.
کاهش پیچیدگی جاوا2, آن را در سطح وسیعی قابل فهم و کاربردی می کند ضمن آن که در وقت کاربران هم صرفه جویی می شود وباعث استفاده بهینه از توانایی های آن می شود. علاوه بر آن در زمینه تجاری نیز به مقدار قابل توجهی در هزینه و وقت صرفه جویی می شود.
دومین مساله میزان سرعتی است که نوآوری جاوا 2 در اختیار مشتریان خود می گذارد. میزان سادگی جاوا2 شاید چندان اهمیت نداشته باشد اما در مقابل برای اینکه جاوا2 در عرصه بازار هم حضور یابد باید سرعت خود را به حد ایده آل و مناسب برساند.افرادی هستند که شاید به کیفیت اهمیت چندانی ندهند ولی به سرعت آنها نیاز باشد بنابر این در اینجا سرعت مهمترین مساله خواهد بود.
جاوا2 هنوز هم می تواند پیشتاز باشد ولی باید در دستورالعمل های خود تغییراتی را ایجاد کند. متخصصان حرفه ای جاوا (JCP) در میدان رقبا در صدر قرار دارند و برای جذب مشتری بیشتر فناوری های خود را قبل از ورود به بازار استاندارد می کنند.
این تغییرات یکی دوسال به طول خواهد انجامید و در حال حاضر با رشد نیازهای مشتریان, فروشندگان ناچاربه عرضه فناوری هایی هستند که صورت تجاری داشته باشد اما در حقیقت این فناوری ها باید قبل از عرضه, موارد مربوط به استاندارد در آنها اعمال شود. درحال حاضرweb فناوری هایی را عرضه می کند که در سطح وسیعی مورد استفاده قرار می گیرد و توسط world wide web consortium استاندارد می شود یعنی این فناوری ها اول در بازار عرضه می شود و بعد عمل استاندارد سازی بر آنها اعمال می شود.جاوا 2 با استانداردی که مورد نیاز مشتری است و با سرعتی بالاتر از انواع قبلی عرضه می شود به طوری که اگر این فناوری نبود باید مرتب مراحل نوآوری, اجرا, استاندارد مورد توجه قرار می گرفت