تحقیق درباره پایگاه داده شی گراء
تحقیق درباره پایگاه داده شی گراءشي گرايي:در نظر بگيريد براي رانندگي مجبور بوديد از تمام نكات فني و همه اتفاقاتي كه در موتور و پيستونها اتفاق ميافتد با خبر بوديد واقعاً گيج كننده ميشد، اينطور نيست! در واقع برنامه نويسي ابتدا بدين صورت بود و فقط افراد خاصي ميتوانستند اين كار را انجام دهند ولي با ظهور شي گرايي همه چيز عوض شد. حالا ببينيم يك شي دقيقاً چكار ميكند. اول اينكه يك شي طوري طراحي شده كه برنامه نويسي همانند دنياي اطراف ما بنظر برسد. يك شي همه چيزهاي مربوط را دور هم جمع ميكند مثلا توابع ، زيرروالها، متغييرها و حتي پايگاه داده مربوط همه و همه در يك جا و به صورت يك موجوديت. كار ديگر شي اين است كه جزئيات را از ديد شما پنهان ميكند به طوري كه شما بدون آن كه از ماهيت دروني آنها آگاه باشيد ميتوانيد به راحتي از آنها استفاده كنيد. همانطور كه بدون آنكه از جزئيات دروني و مدارهاي يك تلوزيون باخبر باشيد با آن كار ميكنيد و اين به يكي از آرزروهاي ديرينه برنامه نويسان يعني سادگي و عدم پيچيدگي پاسخ داد. حال بياييد ببينيم يك شي چگونه اين كارها را انجام ميدهد. شي هاي يك زبان مانند دلفي همانند اشياي دنياي واقعي مثل ماشين و متورسيكلت اهرمهايي براي كنترل نياز دارند كه اين وظيفه را Method ها به عهده ميگيرند. متدها نقش زيرروالها را در زبانهاي قديميايفا ميكنند. شي ها براي حفظ حالت جاري از Properties استفاده ميكنند مثلاً شما با ديدن كيلومتر ماشين به سرعت آن پي ميبريد و در اشيا با خواندن يك Properties همان كار را انجام ميدهيد. در واقع Properties يا خاصيتها نقش متغييرها و به طور كلي ساختمان دادهها را در زبانهاي قديميايفا ميكنند البته تفاوتهايي بين يك متغيير و Properties وجود دارد كه شما به تدريج به آن پي ميبريد. حالا به مفاهيم مشكل تر شي گرايي ميرسيم. اشيا قابليتي بنام ارث بري دارند در واقع هر شي ميتواند خصوصيات خود را به فرزند خود منقل كند و يا به عكس ميتواند از والد خود خصوصياتي را به ارث ببرد. حالا سعي ميكنم با مثالي اين را تشريح كنم. فرض كنيم شما ميخواهيد شي اي ايجاد كنيد مثل قناري شما ابتدا ميتوانيد شي به نام پرنده بوجود آورده و همه خصوصيات پرنده را در آن ايجاد كنيد. سپس شي بنام قناري ايجاد ميكنيد كه خصوصيات مربوط به پرندگان را ميتواند از شي پرنده به ارث ببرد و بقيه خصوصيات را براي آن مشخص كنيد و اگر بعداً خواستيد پرنده ديگري مثل گنجشك را معرفي كنيد هنوز هم ميتوانيد از شي پرنده استفاده كنيد و اين يعني راحت تر شدن كد نويسي. قانون مهميكه بايد بخاطر داشته باشيد و به سادگي از آن رد نشويد اين است كه هر شي ميتواند بجاي والد خود بكار گرفته شود چون همه خصوصيات آن را دارد ولي يك والد نميتواند بجاي فرزند خود بكار رود اين مثل اين است كه دوست شما ، شما را به يك ميهماني دعوت كند و بگويد ميتوانيد پرنده خود را بياوريد و شما ميتوانيد قناري را با خود ببريد ولي در صورتي كه ميگفت فقط ميتوانيد گنجشك با خود بياوريد شما نميتوانستيد هر پرنده ديگري را با خود ببريد. اين نكته مهم در آنجا كاربرد دارد كه در صورتي كه پارامتر يك زيرروال از نوع يك شي باشد همه فرزندان آن شي ميتوانند به آن زيروال ارسال شوند. براي فهم اين موضوع عجله نكنيد و فقط قانون را بياد داشته باشيد. مطلب ديگري كه راجع به شي گرايي بايد بدانيد Class و instance ميباشد . در واقع اشيا فقط يك قالب ميباشند كه نميتوانند به تنهايي مورد استفاده قرار گيرند. براي مثال وقتي شما ميگوييد قناري منظورتان قناري خاصي نيست. ولي وقتي يك قناري را با اسميكه براي آن گذاشته ايد صدا ميزنيد يك قناري خاص را در نظر داريد. در واقع قناري به طور كلي وجود خارجي ندارد بلكه يك قناري خاص كه مثلاً اسم آن تويتي است وجود خارجي دارد در واقع Class مانند قناري و Instance مانند تويتي است و اين به معني اين است كه ما همواره ابتدا كلاسها را تعريف كرده و سپس براي استفاده يك نمونه يا Instance از آن را بوجود ميآوريم. رويداد گرايي: در زبانهاي قديميدستورات خط به خط انجام ميشد تا برنامه به پايان برسد و اين يك روند قابل پيشبيني را ايجاد ميكرد ولي با به وجود آمدن روشهاي رويدادگرا برنامه منتظر يك اتفاق ميماند تا عكس العمل نشان دهد. در اشياي روزمره هم همين طور است مثلاً يك ماشين حساب تازماني كه شما دكمه اي را فشار ندهيد عمل نميكند. در اينجور زبانها بايد برنامه را طوري طراحي كنيد كه كدهايتان براي عكس العمل نشان دادن به كار كاربر نوشته شده باشد. اين خلاصهاي از شي گرايي و رويداد گرايي بود. |
مفاهيم شي گرايي
در ديدگاه شئگرا از سه دريچه به مسايل مينگرند. يكي نگرش به مسايل به عنوان مجموعهاي از اشياء مرتبط با هم است. اشيا در قالب موجوديتهاي مفعول شناخته ميشوند. در اثر فعل اشيا بر يكديگر ساختار سيستم در حال سكون مشخص ميشود. دريچه ديد ديگر، نگرش به تغيير رفتار و عملكرد هر شئ در طول زمان و به دنبال رويدادهاي حاصل از ارتباط آن با ساير اشياء است
مفاهيم شئگرايي ديدگاه شئگرا
در ديدگاه شئگرا از سه دريچه به مسايل مينگرند. يكي نگرش به مسايل به عنوان مجموعهاي از اشياء مرتبط با هم است. اشيا در قالب موجوديتهاي مفعول شناخته ميشوند. در اثر فعل اشيا بر يكديگر ساختار سيستم در حال سكون مشخص ميشود. دريچه ديد ديگر، نگرش به تغيير رفتار و عملكرد هر شئ در طول زمان و به دنبال رويدادهاي حاصل از ارتباط آن با ساير اشياء است. ديدگاه سوم، جريان گردش دادهها و اطلاعات درون سيستم مشخص ميكند.
شئگرايي تجربه بهتري از جهان خارج است. در تئوري، اين بدان معناست كه اگر مسئله تغيير كند (تغيير در نيازهاي سيستم) راه حل به آساني قابل تغيير است، زيرا نگاشت بين مسئله و راه حل آسان است.
شناخت اشياء
در شناخت شئگرا ديدگاه اوليه آناليست تعيين اجزاء تشكيل دهنده سيستمها است. اجزاء سيستمها در قالب اشياء مشخص ميشوند. يك شئ موجوديتي[1]است كه هم ميتواند مفعول باشد و هم فاعل. افعال در قالب عمليات مشخص ميشوند. گوناگوني اشياء مانعي براي شناخت است. لذا اشياء را براساس صفات مشتركشان كلاسهبندي ميكنند. براي نمونه، كلاس پرندگان يا كلاس سوابق در واقع نوع دو دسته از اشياء را مشخص ميكنند. كلاس اشياء نشاندهنده صفات، خواص و افعال مشترك اشياء مفعول است. كلاس اشياء از تجريد[2] اشياء ايجاد ميشود.
اصولا ًانسان براي شناخت هر چيزي تجزيه و تحليل ميكند. يكي ديگر از كارهاي فوقالعاده ذهن است، تجريد است. تجريد غير از تجزيه است. در عمل تجريد جهت شناخت، تجزيه انجام نميشود. ذهن انسان پس از اينكه چند چيز مشابه را درك كرد، صفات مشترك آنها را بدست ميآورد و صفت محض هر يك از آنها را از صفت مشترك تميز ميدهد و از آن صفت مشترك يك صفت كلي ميسازد كه بر همه اشياء كثيره يعني بر همه اشيايي كه از آنها اين صفت كلي و مشترك بدست آمده، صدق ميكند.در اين حالت گفته ميرود كه اين مفهوم كلي از اشياء انتزاع يا تجريد شده است، مثل مفهوم دانشجو كه از محمد و آيدين و غيره انتزاع ميشود.
در واقع با تجريد، جزئيات خاص را ناديده گرفته، كليتها را مجزا ميكنند. تشخيص كليتها راهي براي شناخت توسط ذهن انسان است. براي اين منظور ذهن اشياءرا تعميم ميدهد. براي نمونه كارخانه يك كليت است. چنانچه يك كليت در ذات و حقيقت اشياء مربوطه ميباشد و در واقع ماهيت اشياء مربوطه، قائم به آن ميباشد،آنرا كل ذاتي گويند. وگرنه آن كل عرضي است. براي نمونه كليت جسم براي انسان يك كليت ذاتي است. اما آنچه شئ در وجود خود به آن محتاج نباشد، عرضي است. براي نمونه خندان، گريان، سفيد پوست، مريض، ... جزء عوارض هستند.
اصول منطق حكم ميكند كه لازمه شناخت اشياء تعيين پنج كليت است. اين پنج كليت عبارتند از: نوع، جنس، فصل، عرض عام و عرض خاص.
نوع، مفهوم كلياي است كه شامل افراد و عناصر يك مجموعه ميشود. براي نمونه نوع انسان نمايانگر ويژگيهاي كلي و نام كلاس دستهاي از اشياء است.
جنس،مفهوم كلياي است كه شامل افراد و عناصر بيش از يك مجموعه ميشود. براي نمونه در جنمله انسان حيواني ناطق است، انسان از جنس حيوان معرفي شدهاست. علاوه بر حيوان بودن ناطق هم است. اين وجه مميزه ناطق بودن فاصله بين انسان و حيوان را مشخص ميكند.
اصولاً كليت فصل، مفهوم كلياي است كه باعث ميشود افراد يا عناصر يك نوع مشخصشوند.
برطبق تعاريف شئگرايي در زبانهاي برنامهسازي، انسان يك كلاس و حيوان كلاس مافوق براي انسان است. بعبارت ديگر انسان خواص حيوان بودن را از كلاس حيوان به ارث ميبرد. وجه مميزه و ويژگيهاي خاص كلاس انسان، ناطق بودن است كه در داخل اين كلاس مشخص ميشود. بااستفاده از رابطه وراثت ويژگيهاي حيوان بودن از كلاس حيوان به ويژگيهاي انسان افزوده ميشود.
كلاس يك دسته از اشياء بايد نمايانگر ماهيت و در واقع كليت ذاتي آن دسته از اشياء باشد. در واقع ماهيت هر چيزي نمايانگر نوع آنست. با تعيين كلاس و سوپر كلاس براي يك شئ درواقع تعريفي براي آن شئ ايجاد ميشود. درجمله، حيوان موجود زنده است، كلاس حيوان به عنوان زيركلاسي از كلاس موجود زنده تعريف شدهاست. موجود زنده كليت جنس را براي نوع حيوان مشخص ميكند. اصولاً، تعريف، قضيهاي است كه ماهيت شئ را بيان ميكند. بنابراين با رجوع به تعاريف ميتوان مجموعه اشياء تشكيل دهنده يك سيستم را مشخص نمود.
علاوه بر سه كليت نوع، جنس و فصل ، عوارض (جمع عرض) نيز از عوامل شناخت اشياء هستند. براي نمونه، تعجب كردن، عرض خاص و ويژه انسانها است. عوارض اشياء شامل مكان، فعل يا عملكرد، انفعال، اضافات و كم و كيف ميباشند.
مدل اشياء
مدل اشياء نمايانگر چگونگي ارتباط ثابت بين اشياء تشكيل دهنده يك كلاس است. لذا، جهت ايجاد مدل اشياء بايد هويت اشياء موجود در سيستم مورد نظر را شناسايي نموده، ارتباط بين آنها را مشخص كرد.
براي تعيين هويت اشياء بايد در نظر داشت كه اشياء صرفاً فيزيكي نيستند، مفاهيم نيز ميتوانند به عنوان اشياء مطرح باشند. به عنوان نمونه زمانبندي در سيستمهاي عامل را ميتوان به عنوان يك شئ در نظر گرفت. اصولاً اشياء را در حالت كلي به دو دسته تقسيم ميكنند:
-1-اشياء فيزيكي
- 2-اشياء مفهومي
رفتار اشياء
رفتار هر شيء را بطور جداگانه مشخص ميكنند. رفتار شئ نمايانگر چگونگي تغيير حالت آن در اثر رويدادها است. چگونگي صفات و مقادير خواص شئ در يك مدت زمان، حالت را مشخص ميكند. رويدادها محرك افعال تعيين شده بر شئ مفعول هستند. اين افعال موجب تغيير مقادير خواص و صفات شئ و در واقع تغيير حالت آن ميشوند. رويدادها ممكن است موجب ارتباط و تغيير حالت اشياءمرتبط ميشوند.
رويدادها را ميتوان از متن ارتباطات لحظهاي و متوالي يك شئ با اشياء اطراف آن در جهت انجام هدفي خاص مشخص نمود.
در حالت كلي اتفاقات مؤثر بر يك شئ را به سه دسته ميتوان تقسيم كرد. يك دسته اتفاقاتي هستند كه موجب تولد يا ايجاد يك كلاس از اشياء ميشوند. دسته ديگر اتفاقاتي هستند كه در طول حيات شئ موجب تغييرات در آن ميشوند. دسته سوم اتفاقاتي هستند كه موجب مرگ و حذف يك شئ از داخل سيستم ميشوند.
زبان يكپارچه مدلسازيچيست؟
زبان يكپارچه مدلسازي يك نمادگذاري استاندارد براي مدلسازي اشياء در توسعه سيستمهاي شئگرا ميباشد. اين نمادگذاري از اتحاد نمادگذاريهاي بكار رفته در سه متدلوژي و طراحي شئگراي سيستمهاي بوجود امده است:
· متدلوژي بوچ كه يك مجموعه از اشياء و ارتباط بين آنها را توصيف ميكند.
· متدلوژي رامبو كه به تكنيك مدلسازي اشياء معروف است.
نمايش داده ميشود. براي بيشتر سيستمها، يك بازيگر ميتواند با چند مورد استفاده تعامل داشته باشد و يك مورد استفاده ميتواند بوسيله چند بازيكر شدوع شود.
مصارف دياگرام موارد استفاده
· دياگرام موارد استفاده محدوده سيستم را تعريف ميكند و ما را قادر ميسازد اندازه و محدوده پروژه را در يك پروژه توسعه نرمافزار نشان دهيم.
· دياگرام موارد استفاده بسيار شبيه به نيازمنديها است، اما فهرست نيازها به سادگي فراموش شده و خدشهدار ميشوند. قصد عمده از دياگرام موارد استفاده تمركز بيشتر روي نيازها است.
· مجموع همه دياگرام موارد استفاده كل سيستم را تشكيل ميدهند. اين يعني هر چيزي كه در دياگرام موارد استفاده نباشد خارج از محدوده سيستم در حال توسعه قرار دارد. بنابراين دياگرام موارد استفاده بايد كامل و بدون نقص و نقاط مبهم باشد.
· دياگرام موارد استفاده اجازه ارتباط بين مشتري و تيم توسعه را ميدهد (زيرا نمودارها بسيار ساده هستند و هركسي ميتواند آنرا درك كند(
دياگرام موارد استفاده، تيم توسعه را در مرحله توسعه نرمافزار كمك ميكند.
· دياگرام موارد استفاده روشي براي طراحي كار توسعه بدست ميدهند و اجازه ميدهند كه زمان طي شده در توسعه را پيشبيني كنيم.
· دياگرام مورد استفاده، اساس توليد سيستم تست هستند.
نمودار كلاس
رسم نمودار كلاس مهمترين فعاليت در همه روشهاي طراحي شئگرا است. از آن ميتوان در مرحله تجزيه و تحليل و طراحي استفاده كرد. علاوه براين، از اين نمودار براي رسم طراحي براي درك نيازهاي مشتري نيز بهره گرفته ميشود.
نمودار همكاري
زمان مدلسازي يكپارچه، دو نمودار براي تشريح تعامل اشيا به نامهاي نمودار ترتيبي و نمودار همكاري دارد. اين دو نمودار بسيار به هم نزديكند. اين دو نمودار نمودارهاي تعامل ناميده ميشوند.
در طول توسعه نرمافزار به روش شئگرا، هر چيزي كه نرمافزار نهايي نياز داشته باشد بوسيله همكاري اشياء صورت خواهد گرفت. ميتوان نمودار همكاري را باي تشريح چگونگي وضعيت اشياء در حال همكاري به كار برد. يك نمودار همكاري به ما اجازه نمايش تعامل بين اشيا در محدوده زمان را ميدهد.
نمودار ترتيبي
يك نمودار ترتيبي در ارتباط مستقيم با نمودار همكاري بوده ولي شكل متفاوتي دارد. خطوط نقطهچين در اين نمودار نشان دهنده زمان است.
موجوديت ياEntityبه هر چيزي كه در مورد آن اطلاعي در داخل سيستم نگهداري ميشود، اطلاق ميگردد.
تجريد ياAbstractionروشي است براي خلاصه كردن و توصيف اشياء. انتزاع به عمل خاص ذهن گفته ميشود كه آنرا تجريد نيز مينامند. انتزاعي به مفهوم بدست آوردن مشتركات و بالنتيجه كليت اشياء است
كنترل دسترسي تشخيصي در پايگاههاي داده شيء گرا
يكي از مسائل مهم در پايگاههاي داده مسئله تامين امنيت است . يكي از كنترلهايي كه تامين امنيت در پايگاههاي داده بايستي انجام شود ، كنترل دسترسي ميباشد . يك سيستم كنترل دسترسي ، نحوه دسترسي هر كاربر به دادههاي موجود در پايگاه داده را محدود و كنترل ميكند . يكي از سياستهاي كنترل دسترسي ، كنترل دسترسي تشخيصي ميباشد در اين سياست براي هر كاربر اجازههايي براي دسترسي به دادهها تعين ميگردد . هر درخواست دسترسي صادر شده توسط يك كاربر با توجه به اجازههايي كه وي دارد بررسي و در نهايت قبول يا رد ميشود همچنين در اين سياست يك كاربر ميتواند بر طبق قواعدي و براساس تشخيص خود ،اجارههايي كه دراختيار دارد را به كاربران ديگر واگذار كند يا اجازههايي كه واگذار نموده را پس بگيرد
مدلهاي امنيتي و كنترل دسترسي پايگاههاي داده بسيار وابسته به مدل داده پايگاه داده ميباشند . از آنجايي كه پايگاههاي داده شيءگرا از مدل داده شي،گرا كه نسبت به مدل داده رابطهاي از پيچيدگي بيشتري برخوردار است تبعيت ميكند . بنابر اين مدلهاي امنيتي ارائه شده براي پايگاههاي داده رابطهاي براي پايگاههاي داده شيءگرا
مناسب نيستند . براي مثال وجود ويژگيهايي همچون ارث بري ، متدها ، و اشياء مركب در مدل داده شيءگرا براي پايگاههاي داده باعث ميشود كه مدلهاي امنيتي كلاسيك براي پايگاههاي داده شيءگرا و مفيد نباشد . به همين دليل لازم است كه مدلهاي امنيتي كلاسيك براي پايگاههاي داده شيءگرا كارا و مفيد نباشند . به همين دليل لازم است كه مدلهاي امنيتي جديدتري براي پايگاههاي داده شيءگرا ارائه شوند
اگر چه تاكنون مدلهايي براي كنترل دسترسي تشخيصي در پايگاهاي داده شيءگرا ارائه شدهاند ، ولي تمامياين مدلها داراي نقطه ضعفها و معايبي ميباشند . بخصوص هيچ يك از اين مدلها تماميويژگيهاي مدل داده شيءگرا براي پايگاههاي داده را مد نظر قرار ندادهاند و علاوه بر آن ، اين مدلها براساس مدلهاي داده غير استاندارد برا پايگاههاي داده شيءگرا ميباشند.
در اين پايان نامه مدلي براي كنترل دسترسي تشخيصي در پايگاههاي داده شيءارائه شده است كه نسبت به مدلهاي موجود از نقطه ضعفها و معايب كمتري برخوردار است . بخصوص مدل پيشنهادي براساس مدل دادهODMG كه امروزه به عنوان يك استاندارد براي پايگاههاي داده شيءگرا مطرح است ميباشد . علاوه بر اين ، براي شبيه سازي و نمايش نحوه عملكرد اين مدل محيطي ايجاد شده است كه داراي امكانات زير ميباشد
امكاناتي براي ايجاد شماي پايگاههاي داده شيءگرا براساس مدل داده ODMG بصورت مجازيامكاناتي براي ايجاد كاربران مجازي در پايگاه داده ايجاد شدهامكاناتي براي واگذاري و باز پسگيري دسترسيهاي بهموجوديتهاي مختلف توسط كاربراني كه مجاز به اين كار ميباشند
امكاناتي براي انجام تحليلهاي امنيتي
با استفاده از اين محيط ، شماي سيستمهاي مختلفي براساس مدل داده ODMG ايجاد گرديد . سپس در سيستمهاي ايجاد شده حالتهاي مختلف عملكرد مدل بررسي شد كه نتايج بدست آمده از بررسي عملكرد مدل مطلوب بوده است.
برنامه نويسي شي ئ گرا
object-oriented programming
ميدانيد كه كليه برنامه هاي كامپيوتري داراي دو عضو هستند : كد و دادهعلاوه بر اين ، يك برنامه را ميتوان بطور نظري حول محور كد يا داده اش سازماندهينمود . يعني بعضي برنامه ها حول محور " آنچه در حال اتفاق است " ( كد ) نوشتهشده و ساير برنامه ها حول محور " آنچه تحت تاثير قرار گرفته است " ( داده)نوشته ميشوند . اينها دو الگوي مختلف ساخت يك برنامه هستند . روش اول را مدلپردازش گرا (process-oriented model) مينامند . در اين روش يك برنامه بعنوانكدهاي فعال روي داده ها در نظر گرفت . زبانهاي رويه اي (procedural) نظير C ازاين مدل بنحو موفقيت آميزي استفاده ميكنند . اما همانطوريكه در قسمتهاي قبلعنوان شد ، بموازات رشد و گسترش برنامه ها ، اين روش منجر به بروز مشكلات بيشترو پيچيده تري خواهد شد .
براي مديريت پيچيدگي فزاينده ، دومين روش معروف به برنامه نويسي شي ئ گراپيشنهاد شده است . برنامه نويسي شي ئ گرا يك برنامه را حول محور داده هاي آن(يعني اشيائ ) و يك مجموعه از رابطها (interfaces) خوش تعريف براي آن داده هاسازماندهي ميكند . يك برنامه شي ئ گرا را ميتوان بعنوان داده هاي كنترل كنندهدسترسي به كدها (data controlling access to code) تلقي نمود . بعدا" خواهيدديد با شروع بكار واحد داده هاي كنترل كننده بسياري ازمزاياي اين نوع سازماندهينصيب شما خواهد شد .
تجريد Abstraction
تجريد يك عنصر ضروري در برنامه نويسي شي ئ گرا است . افراد پيچيدگيها را بااستفاده از تجريد مديريت مينمايند . بعنوان نمونه ، مردم درباره اتوموبيلهرگز بعنوان مجموعه اي از هزاران قطعات منفك از هم تفكر نميكنند. آنها اتوموبيلرا بعنوان يك شي ئ خوب تعريف شده داراي نوعي رفتار منحصر بفرد تلقي ميكنند .
اين تجريد به مردم امكان ميدهد تا از يك اتوموبيل استفاده نموده و به خواربارفروشي بروند ، بدون اينكه نگران پيچيدگي اجزايي باشند كه يك اتوموبيل را تشكيلميدهند . آنها قادرند براحتي جزئيات مربوط به نحوه كار موتور، سيستم هاي انتقال وترمز را ناديده بگيرند . در عوض آنها مختارند تا از اتوموبيل بعنوان يك شي ئكلي استفاده نمايند .
يكي از شيوه هاي قدرتمند مديريت تجريد با استفاده از طبقه بنديهاي سلسلهمراتبي (hierarchical) انجام ميگيرد . اين امر به شما امكان ميدهد تا معني ومفهوم سيستم هاي پيچيده را كنار گذاشته و آنها را به اجزائ كوچك قابل مديريتتقسيم نماييد. از ديد بيروني ، يك اتوموبيل يك شي ئ منفرد است . از ديد داخلياتوموبيل شامل چندين زير سيستم است : فرمان ، ترمزها ، سيستم صوتي ، كمربندهايايمني ، سيستم حرارتي ، تلفن سلولي و غيره . هر يك از اين زير سيستم ها بنوبهخود از واحدهاي تخصصي كوچكتري تشكيل شده اند. بعنوان نمونه ، سيستم صوتي اتوموبيلشامل يك راديو، يك پخش CD و يا يك پخش صوت است . نكته مهم اين است كه شما بدينترتيب بر پيچيدگي اتوموبيل ( يا هر سيستم پيچيده ديگر ) با استفاده از تجريدسلسله مراتبي ، فائق ميآييد . تجريدهاي سلسله مراتبي سيستم هاي پيچيده را ميتوان در مورد برنامه هاي
كامپيوتري نيز پياده سازي نمود. داده هاي يك برنامه پردازش گراي سنتي را ميتوانتوسط تجريد اشيائ عضو آن ، منتقل نمود . يك ترتيب از مراحل پردازش را ميتوانبه مجموعه اي از پيامها بين اشيائ تبديل نمود. بدين ترتيب ، هر يك از اين اشيائرفتار منحصر بفرد خودش را تعريف خواهد كرد . ميتوانيد با اين اشيائ بعنوانموجوديتهاي واقعي رفتار كنيد كه به پيامهايي كه به آنها ميگويند چكاري انجامدهند ، مرتبط و وابسته هستند . اين هسته اصلي برنامه نويسي شي ئ گراست . مفاهيم شي ئ گرايي در قلب جاوا قرار گرفته اند ، همچنانكه پايه اصلي ادراكاتبشري نيز هستند. مهم اينست كه بفهميد اين مفاهيم چگونه در برنامه هاي كامپيوتريپياده سازي ميشوند . خواهيد ديد كه برنامه نويسي شي ئ گرا يك نمونه قدرتمند وطبيعي براي توليد برنامه هايي است كه بر تغييرات غير منتظره فائق آمده و چرخهحيات هر يك از پروژه هاي نرم افزاري اصلي ( شامل مفهوم سازي ، رشد و سالخوردگي ) را همراهي ميكنند . بعنوان نمونه ، هر گاه اشيائ خوش تعريف و رابطهاي تميز وقابل اطمينان به اين اشيائ را در اختيار داشته باشيد ، آنگاه بطور دلپذيريميتوانيد قسمتهاي مختلف يك سيستم قديميتر را بدون ترس جابجا نموده يا بكلي ازسيستم خارج نماييد .
سه اصل oop
كليه زبانهاي برنامه نويسي شي ئگرا مكانيسمهايي را در اختيار شما قرار ميدهندتا مدل شي ئگرا را پياده سازي نماييد. اين مدل شامل كپسول سازي (encapsulation) وراثت (inheritance) و چند شكلي (polymorphism) ميباشد . اكنون نگاه دقيقتريبه اين مفاهيم خواهيم داشت .
كپسول سازي encapsulation
كپسول سازي مكانيسمياست كه يك كد و داده مربوط با آن كد را يكجا گرد آورينموده ( در يك كپسول فرضي قرار داده ) و كپسول بدست آمده را در مقابل دخالت ياسوئ استفاده هاي غير مجاز محافظت مينمايد . ميتوان كپسول سازي را بعنوان يكلفافه (wrapper) درنظر گرفت كه كد داده مربوطه را نسبت به دستيابيهاي غيرمعمولو غير منتظره ساير كدهاي تعريف شده در خارج از لفافه محافظت ميكند . دستيابيبه كد و داده موجود داخل لفافه از طريق رابطهاي خوب تعريف شده كنترل خواهد شد. در دنياي واقعي ، سيستم انتقال اتوماتيك در يك اتوموبيل را درنظر بگيريد . اينسيستم صدها بيت از اطلاعات درباره موتور اتوموبيل شما را كپسول سازي ميكند : مثل سرعت حركت شما ، شيب سطح در حال حركت و موقعيت اهرم انتقال . شما بعنوانيك كاربر قفط يك راه براي تاثير نهادن در اين كپسول سازي پيچيده خواهيد داشت:بوسيله تغيير اهرم انتقال دهنده ، اما با استفاده از سيگنالهاي برگشتي يا برفپاك كن شيشه جلو ، نميتوانيد روي سيستم انتقال قدرت اتوموبيل تاثيري بگذاريد. بنابراين دست دنده ( اهرم انتقال دنده ) يك رابط خوب تعريف شده ( والبته منحصربفرد ) براي سيستم انتقال است . مضاف بر اينكه آنچه درون سيستم انتقال اتفاقميافتد ، تاثيري بر اشيائ خارج از سيستم نخواهد داشت . بعنوان مثال ، دنده هايانتقال ، چراغهاي جلو اتوموبيل را روشن نميكنند . از آنجاييكه سيستم انتقالاتوموبيلها كپسول سازي شده ، دهها توليد كننده اتوموبيل قادرند سيستم هاي انتقالدلخواه خود را طراحي و پياده سازي نمايند . اما از نقطه نظر كاربر اتوموبيلهمه اين سيستم ها يكسان كار ميكنند. درست همين ايده را ميتوان در برنامه نويسيكامپيوتر نيز پياده سازي نمود . قدرت كدهاي كپسول شده در اين است كه هر كسيميداند چگونه به آنها دسترسي يافته و ميتواند صرفنظر از جزئيات اجرا و بدونترس از تاثيرات جانبي از آنها استفاده نمايد .
در جاوا كپسول سازي بر اساس كلاس (class) انجام ميگيرد . اگر چه كلاس باجزئيات بيشتري در اين كتاب بررسي خواهد شد ، اما بحث مختصر بعدي در اين موردسودمند خواهد بود. كلاس توصيف كننده ساختار و رفتاري ( داده و كد ) است كه توسطيك مجموعه از اشيائ اشاعه خواهد يافت . هر شي ئ در يك كلاس شامل ساختار و رفتارتعريف شده توسط همان كلاس است . بهمين دليل ، به اشيائ گاهي " نمونه هايي از يككلاس " نيز ميگويند . بنابراين ، يك كلاس يك ساختار منطقي است ، يك شي ئ دارايواقعيت فيزيكي است .
وقتي يك كلاس بوجود ميآوريد ، در حقيقت كد و داده اي كه آن كلاس را تشكيلميدهند ، مشخص مينماييد . اين عناصر را اعضائ (members) يك كلاس مينامند .
بطورمشخص ، داده تعريف شده توسط كلاس را بعنوان متغيرهاي عضو(member variables) يا متغيرهاي نمونه (instance variables) مينامند . كدي كه روي آن داده ها عملميكند را روشهاي عضو (member methods) يا فقط روشها (methods) مينامند .
(اگر با Cو C++و آشنا باشيد ميدانيد كه روش در برنامه نويسي جاوا همان تابع (function) در زبانهاي Cو C++و ميباشد . ) در برنامه هاي خوب نوشته شده جاواروشها توصيف كننده چگونگي استفاده از متغيرهاي عضو هستند . يعني كه رفتار ورابط يك كلاس توسط روشهايي تعريف ميشوند كه روي داده هاي نمونه مربوطه عملميكنند .
چون هدف يك كلاس پياده سازي كپسول سازي براي موارد پيچيده است ، روشهايي برايپنهان كردن پيچيدگي اجزائ در داخل يك كلاس وجود دارد. هر روش يا متغير داخل يككلاس ممكن است خصوصي private يا عموميpublic باشد . رابط عمومييك كلاس ، معرفيكننده هر چيزي است كه كاربران خارج از كلاس نياز به دانستن آنها دارند . روشهاو داده هاي خصوصي فقط توسط كدهاي عضو يك كلاس قابل دسترسي هستند . بنابراين هركد ديگري كه عضو يك كلاس نباشد، نميتواند به يك روش خصوصي دسترسي داشته باشد.
چون اعضائ خصوصي يك كلاس ممكن است فقط توسط ساير بخشهاي برنامه شما از طريقروشهاي عموميكلاس قابل دسترسي باشند، ميتوانيد مطمئن باشيد كه فعل و انفعالاتغير مناسب اتفاق نخواهد افتاد . البته ، اين بدان معني است كه رابط عموميبايد با دقت طراحي شود تا كاركرد داخلي يك كلاس را چندان زياد برملا نكند .
وراثت inheritance
وراثت رويه اي است كه طي آن يك شي ئ ويژگيهاي شي ئ ديگري را كسب ميكند . اينموضوع بسيار اهميت دارد زيرا از مفهوم طبقه بندي سلسله مراتبي حمايت ميكند . همانطوريكه قبلا" گفتيم ، بسياري از دانشها توسط طبقه بندي سلسله مراتبي قابلفهم و مديريت ميشوند. بعنوان مثال سگهاي شكاري طلايي يكي از انواع طبقه بنديهايسگها هستند كه بنوبه خود جزئي از كلاس پستانداران خونگرم بوده كه در كلاس بزرگتريتحت عنوان حيوانات قرار ميگيرند . بدون استفاده از سلسله مراتب ، بايد خصوصيات هر يك از اشيائ را جداگانه توصيف نمود . اما هنگام استفاده از سلسله مراتب ، براي توصيف يك شي ئ كافي استكيفيتهايي كه آن شي ئ را در كلاس مربوطه منحصر بفرد و متمايز ميسازد ، مشخصنماييد . آن شي ئ ممكن است خصوصيات عموميرا از والدين خود بارث برده باشد . بدين ترتيب در مكانيسم وراثت ، يك شي ئ ميتواند يك نمونه مشخص از يك حالتعموميتر باشد . اجازه دهيد تا با دقت بيشتري به اين رويه نگاه كنيم. بسياري از افراد، دنيا را بطور طبيعي بعنوان مجموعه اي از اشيائ ميدانند كهدر يك روش سلسله مراتبي بيكديگر مرتبط شده اند . نظير حيوانات ، پستانداران وسگها . اگر بخواهيد حيوانات را با يك روش تجريدي توصيف نماييد ، بايد برخيخصوصيات نظير اندازه ، هوش و نوع اسكلت آنها را مشخص نماييد . حيوانات همچنينويژگيهاي خاص رفتاري دارند ، آنها تغذيه نموده ، تنفس كرده و ميخوابند . اينتوصيف از خصوصيات و رفتار را توصيف " كلاس " حيوانات مينامند . اگر بخواهيد توصيف يك كلاس مشخصتر از حيوانات مثل پستانداران داشته باشيدبايد خصوصيات دقيقتري نظير نوع دندانها و آلات پستانداري را مشخص نماييد . اينرا يك زير كلاس (subclass) از حيوانات و خود حيوانات را كلاس بالاي (superclass)
پستانداران گويند . چون پستانداران نوعي از حيوانات هستند ، بنابراين كليه
خصوصيات حيوانات را بارث برده اند. يك زير كلاس ارث برنده درحقيقت كليه خصوصياتاجداد خود در سلسله مراتب كلاس را به ارث ميبرد .
منابع و ماخذ:
www.ui.ac.ir
www.irandevelopers.com
www.raydana.com
منبع : سايت علمی و پژوهشي آسمان -- صفحه اینستاگرام ما را دنبال کنیداين مطلب در تاريخ: چهارشنبه 20 اسفند 1393 ساعت: 11:32 منتشر شده است
برچسب ها : تحقیق درباره پایگاه داده شی گراء,مفاهيم شي گرايي,شناخت اشياء,زبان يكپارچه مدلسازي چيست؟,مصارف دياگرام موارد استفاده,برنامه نويسي شي ئ گرا,