۱۳۸۹ اردیبهشت ۲۱, سه‌شنبه

پروتکلهاي مسيريابي شبكه هاي كامپيوتري Routing Protocols

شبکه­ هاي Mobile Ad hoc عمل مسيريابي به دلايلي همچون متحرک بودن و نبود سيستم کنترلي متمرکز از اهميت بالايي برخوردار می­باشد، لذا مطالعه و بررسي بيشتري را مي­ طلبد. قبل از بررسي اين پروتکلها بايد توجه نمود که هدف از الگوريتمها و استراتژيهاي مسيريابي جديد، کاهش سربار ناشي از مسيريابي در کل شبکه, يافتن مسيرهاي کوتاه­تر و انتقال صحيح داده­ها و اطلاعات مي­باشد.

تقسيم بنديهاي مختلفي در مورد پروتکلهاي مسير يابي شبکه­هاي Mobile ad hoc وجود دارد که عبارتنداز:

جدول1-1: پروتکلهاي مسير يابي شبکه­هاي Mobile ad hoc

Hybrid

ZRP ( Zone Routing Protocol )

Reactive-On demand driven

SSR ( Signal Stability Routing )

DSR ( Dynamic Source Routing )

TORA ( Temporary Ordered Routing Algorithm )

AODV ( Ad hoc on Demand Distance Vector Routing )

RDMAR ( Relative Distance Micro diversity Routing)

Pro active-Table Driven

DSDV ( Destination Sequenced Distance Vector)

WRP ( Wireless Routing Protocol )

CSGR ( Cluster Switch Gateway Routing)

STAR ( Source Tree Adaptive Routing)












1.Table driven Pro active - :

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

DSDV : اين پروتکل بر مبناي الگوريتم کلاسيک Bellman-Ford بنا شده است. در اين حالت هر گره ليستي از تمام مقصدها و نيز تعداد hop ها تا هر مقصد را تهيه مي­کند. هر مدخل ليست با يک عدد شماره گذاري شده است. براي کاهش حجم ترافيک ناشي از بروزرساني مسيرها در شبکه از بسته­هاي افزونه استفاده مي­شود. تنها مزيت اين پروتکل اجتناب از به وجود آمدن حلقه ­هاي مسيريابي در شبکه­هاي شامل مسيريابهاي متحرک است. بدين ترتيب اطلاعات مسيرها همواره بدون توجه به اين که آيا گره در حال حاضر نياز به استفاده از مسير دارد يا نه در دسترس مي باشد.

معايب : پروتکلDSDV نيازمند پارامترهايي از قبيل بازه زماني بروزرساني اطلاعات و تعداد بروزرساني هاي مورد نياز مي­باشد.

WRP : اين پروتکل بر مبناي الگوريتم پيدا کردن مسير بنا شده، با اين استثنا که مشکل تعداد نامتنهاهي از Hop ها را برطرف کرده است. در اين پروتکل هر گره چهار جدول تهيه مي­کند: جدول فاصله , جدول مسيريابي , جدول هزينه پيوند و جدولي در مورد پيامهايي که بايد دوباره ارسال شوند. تغييرات ايجاد شده در پيوندها از طريق ارسال و دريافت پيام ميان گره­هاي همسايه اطلاع داده مي­شوند.

CSGR : در اين پروتکل گره­ها به دسته­ها يا خوشه­هايي تقسيم بندي مي­شوند . هر گروه يک سرايند خوشه دارد که مي­تواند گروهي از ميزبان­ها را کنترل و مديريت کند. از جمله قابليتهايي که عمل خوشه بندي فراهم مي­کند مي­توان به اختصاص پهناي باند و کانال دسترسي اشاره کرد. اين پروتکل از DSDV به عنوان پروتکل مسيريابيي زيربنايي خود استفاده مي­کند. در اين نوع هر گره دارای يک جدول مسيريابي و يک جدول مريوط به عضويت در گره­هاي مختلف را فراهم می­نماید.

معايب : گره­اي که سرآيند واقع شده سربار محاسباتي زيادي نسبت به بقيه دارد و به دليل اينکه بيشتر اطلاعات از طريق اين سرآيندها برآورده مي­شوند. در صورتي که يکي از گره­هاي سرآيند دچار مشکل شود کل و يا بخشي از شبکه آسيب مي­بيند.

STAR : اين پروتکل نياز به بروزرساني مداوم مسير­ها نداشته و هيچ تلاشي براي يافتن مسير بهينه بين گره­ها ندارد.

2. On demand Reactive - :

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

SSR : در اين پروتکل، مسيرها بر مبناي قدرت و توان سيگنالهای بين گره­ها انتخاب مي­شوند. بنابراين مسيرهايي که انتخاب مي­شوند نسبتا قوي تر هستند. اين پروتکل را مي­توان به 2 بخش DRP (پرتکل مسيريابي پويا) وSRP (پروتکل مسيريابي ايستا) تقسيم کرد. DRP مسئول تهيه و نگهداري جدول مسيريابي و جدول مربوط به توان سيگنالها مي­باشد.SRP نيز بسته ­هاي رسيده را بررسي مي­کند تا در صورتي که آدرس گره مربوط به خود را داشته باشد آن را به لايه­ هاي بالاتر بفرستد و در غير اين صورت به شبکه ارسال می­نماید.

DSR : در اين نوع , گره­هاي موبايل بايستي cache هايي براي مسير­هايي که از وجود آنها مطلع هستند فراهم کنند. دو فاز اصلي براي اين پروتکل در نظر گرفته شده است :کشف مسير و بروزرساني مسير. فاز کشف مسير درخواستي يا پاسخ بسته­ها و فاز به روز رساني مسير از تاييدها و خطاهاي پيوندي استفاده مي­کند.

TORA : بر اساس الگوريتم مسيريابي توزيعی بنا شده و براي شبکه ­هاي متحرک بسيار پويا طراحي شده است. اين الگوريتم براي هر جفت از گره­ها چندين مسير تعيين مي­کند و نيازمند ساعت همزمان مي­باشد. سه عمل اصلي اين پروتکل عبارتند از :ايجاد، بروزرساني و از بين بردن مسير.

AODV : بر مبناي الگوريتم DSDV بنا شده با اين تفاوت که به دليل مسيريابي تنها در زمان نياز ميزان Broad casting را کاهش مي­دهد. الگوريتم کشف مسير تنها زماني آغاز به کار مي­کند که مسيري بين دو گره وجود نداشته باشد.

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

3. Hybrid (Pro-active / Reactive) :

اين مورد با ترکيب دو روش قبلي سعي در کاهش معايب نموده و از ويژگيهاي خوب هر دو مورد بهره مي­برد. اين پروتکل جديدترين کلاس پروتکلها در اين راستا مي­باشد. معروفترين پروتکل از اين نوع ZRP (پروتکل مسيريابي منطقه اي) می­باشد. اين پروتکل از ويژگيهاي نوع Pro active براي مسيريابي گره­هاي نزديک به هم و از ويژگيهاي نوع واکنشي براي مسيريابي گره­هاي دورتر استفاده مي­کند.

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

لازم به ذكر مي­باشد كه دو نوع پروتكل مسيريابي DSDV و DSR كاربرد فراواني در شبكه­هاي MANET (شبكه هاي چند عامله) دارند.

شبکهMobile ad hoc) MANET)

شبكه­ هاي بيسيم

سيستمهاي بيسيم از حدود سالهاي 1980 مورد استفاده بوده و تاکنون شاهد نسلهاي اول, دوم و سوم اين تکنولوژي بوده­ ايم. اين نوع سيستمها بر اساس يک ساختار مرکزي و کنترل شده مانند access point عمل مي­کنند. نقاط دسترسي به کاربران امکان مي­دهند با تغيير مکان خود همچنان بتوانند به شبکه متصل بمانند. اما با اين حال به دليل حضور چنين نقاط ثابتي در شبکه محدوديتهايي بروز مي­کنند. به عبارتي در مکانهايي که امکان برقراري ساختار ثابت و هميشه پايدار وجود ندارد اين نوع تکنولوژي نمي­تواند پاسخگو باشد. با پيشرفتها و دستاوردهاي اخير بشري و به وجود آمدن blue tooth , نوع جديدي از سيستمهاي بيسيم يعني شبکه­هاي Mobile ad hoc معرفي شدند. شبکه­هاي Mobile ad hoc يا “short live” مي­توانند در غياب ساختاري ثابت و متمرکز عمل نمايند. بدين ترتيب در مکانهايي که امکان راه­ اندازي سريع يک شبکه ثابت وجود ندارد کمک بزرگي محسوب مي­شوند. شايان ذکر است که واژه ad-hoc لاتين بوده و به معني " فقط براي اين منظور" مي­باشد.

شبکه Mobile Ad hoc سيستم خودکاري متشکل از گر­ه­هاي موبايل و يا متحرکي است که توسط پيوندهاي بيسيم به يکديگر متصل شده اند. هر گره هم به عنوان سيستم نهايي و هم به عنوان مسيرياب براي بقيه گره­هاي موجود در شبکه به کار مي­رود. در چنين شبکه­اي هر کاربري مي­تواند در حالي که با گره يا گره­هاي ديگري در حال ارتباط است مکان خود را تغيير دهد.

مسير بين هر جفت از کاربران ممکن است داراي پيوندهاي چندگانه بوده و نيز راديوي بين آنها ناهمگن باشد.

پروتکل معروف IEEE 802.11 قادر به تامين امکانات شبکه­هاي Ad hoc در مواقعي که access point وجود ندارد اما در سطح پايين­تري مي­باشد. در اين حالت گره­ها مي­توانند اطلاعات را در شبکه ارسال و دريافت کنند اما قادر به مسيريابي نيستند. شبکه­هاي mobile ad hoc يا به صورت مجزا و ايزوله و يا در ارتباط با بقيه شبکه­ ها همچون اينترنت عمل مي­کنند. اين شبکه­ه ا توانسته­اند روياي اتصال به شبکه در هر مکان و هر زماني را به واقعيت تبديل نمايند. يکي از کاربردهاي بسيار واضح اين نوع شبکه در محلهاي گرد آمدن افراد با کامپيوترهاي قابل حمل است که به راحتي مي­توانند تشکيل شبکه بدهند.

انواع شبکه­ هاي بيسيم:

شبکه­ هاي بيسيم بر 3 نوع هستند:

شبکه­ هاي زيرساخت

شبکه ­هاي بيسيم : معمولا از پيوندهاي راديويي (802.11) و يا اشعه ي مادون قرمز استفاده مي­کنند. انعطاف پزيري بالايي را در محدوده اي که اين امکان در آن قرار داده شده است ايجاد کرده و پهناي باند کمتري نسبت به شبکه­ هاي سيمي دارند.

شبکه­ هاي Ad hoc: زماني که زيرساخت موجود نيست گزينه مناسبي به شمار مي­روند و نسبت به دو نوع قبل گران تر هستند.

انواع شبکه­های بیسیم Ad hoc

1. Smart sensor Networks: متشکل از چندين حسگر هستند که در محدوده جغرافيايي معيني قرار گرفته اند. هر حسگر داراي قابليت ارتباطي بيسيم و هوش کافي براي پردازش سيگنالها و امکان شبکه­سازي است.

2. Mobile ad hoc networks (MANET) : مجموعه مستقلي شامل کاربران متحرک است که از طريق پيوندهاي بيسيم با يکديگر ارتباط برقرار مي­کنند. براي اتفاقات غيرقابل پيش بيني اتصالات و شبکه­هاي متمرکز کارا نبوده و قابليت اطمينان کافي را ندارند. لذا MANET راه حل مناسبي است.گره­هاي واقع در MANET مجهز به گيرنده و فرستنده­هاي بيسيم بوده و از آنتن هايي استفاده مي­کنند که ممکن است از نوع Broad cast و يا نظير يه نظير باشند.

شبکهMobile ad hoc (MANET)

MANET مجموعه­اي از گره­هاي متحرک مجهز به گيرنده و فرستنده به منظور برقراري ارتباطات بيسيم می­باشد. گره­هاي متحرک به دليل وجود محدوديتهايي در فرستنده و گيرنده­هاي خود نمي­توانند با تمام گره­ها ارتباط مستقيم برقرار کنند. به همين دليل لازم است در مواردي که امکان برقراري چنين ارتباط مستقيمي وجود ندارد داده­ها از طريق بقيه گره ­ها که در اين حالت نقش مسيرياب را ايفا مي­کنند منتقل شوند. با اين حال متحرک بودن گره­ها باعث شده شبکه مدام در حال تغيير بوده و مسيرهاي مختلفي بين دو گره به وجود آيد. عوامل ديگري همچون Multi hopping , اندازه بزرگ شبکه, ناهمگوني انواع ميزبانها، تنوع نوع, ساختار آنها و محدوديت توان باتريها، طراحي پروتکلهاي مسيريابي مناسب را به يک مشکل جدي بدل کرده است. براي اين منظور بايستي از پروتکلهاي مناسب و امني استفاده شود که در ادامه به آنها خواهيم پرداخت ]12,15[ .

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

ديگر مسائل , مشکلات و محدوديتهاي موجود در اين شبکه­ ها:

خطاهاي ناشي از انتقال و در نتيجه اتلاف بسته

حضور پيوندهاي با ظرفيت متغير

قطع و وصل شدن­هاي زياد و مداوم

پهناي باند محدود

طبيعت broad cast ارتباطات

مسيرها و توپولوژيهاي متغير و پويا

طول کم شارژ باتري ابزار متحرک

ظرفيتها و قابليتهاي محدود گره­ها

نياز به کاربردهاي جديد (لايه کاربرد)

کنترل ميزان تراکم و جريان داده­ها (لايه انتقال)

روش­هاي آدرس دهي و مسير يابي جديد(لايه شبکه)

تغيير در وسايل و ابزار آلات اتصالي (لايه پيوند)

خطاهاي انتقال ( لايه ي فيزيکي )

کاربردهاي شبکه Mobile ad hoc :

انجام عمليات محاسباتي توزيعی و مشارکتي

در وقوع حوادث ناگوار همچون زمين لرزه , سيل و ... که امکان آسيب ديدگي ايستگاه­هاي ثابت وجود دارد .(در شبکه با ساختار ثابت در صورت آسيب ديدن ايستگاه اصلي ممکن است کل شبکه از کار بي­افتد.)

عمليات جستجو و نجات

و موارد نظامي . . .

شي گرايي Object Oriented

طراحی شی گرا

سیستم شیءگرا از چند شیء متعامل تشکیل شده است که حالت محلی را نگهداری کرده عملیاتی را بر روی آن حالت تدارک می بیند .

در سراسر توسعه از راهبرد شیء گرا استفاده می شود :

1- تحلیل شیءگرا .

2- طراحی شیءگرا .

3- برنامه نویسی شیءگرا .

اشیا و کلاس های شیء

شیء باید عملیات سازنده و وارسی داشته باشند تا حالت آن وارسی و اصلاح شود . اشیا سرویس هایی را برای اشیاء دیگر فراهم می کنند .

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

اشیای همزمان

هر شیء برای درخواست سرویس از شیء دیگر، پیام ”درخواست سرویس ” را ارسال می کند .

دو نوع پیاده سازی همزمان اشیاء وجود دارد :

1- کارگزاران .

2- اشیای فعال .

فرایند طراحی شیءگرا

فرایند کلی که در این جا استفاده می شود چند مرحله ای است :

1- درک و تعریف حیطه و حالت های کاربرد سیستم .

2- طراحی معماری سیستم .

3- شناسایی اشیای اصلی سیستم .

4- توسعه مدل های طراحی .

5- شناسایی واسط های شیء .


حیطه سیستم و مدل های کاربرد

اولین مرحله در فرایند طراحی نرم افزار درک روابط بین نرم افزار در حال توسعه و محیط خارجی آن است .

توسعه این درک ، برای تأمین عملکردهای سیستم و تعیین ساختار سیستم به کار می رود ، به طوری که با محیط خود به خوبی ارتباط برقرار کند .

حیطه سیستم و مدل استفاده سیستم ، دو مدل مکمل را برای روابط بین سیستم و محیط آن نشان می دهند:

1- حیطه سیستم، یک مدل ایستا است که سایر سیستم های موجود در محیط را توصیف می کند .

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

شناسایی اشیاء

برای شناسایی کلاس های شیء، قواعدی وجود دارد :

1- از تحلیل گرامری توصیف زبان طبیعی سیستم استفاده کنید .

2- از نهاد های ملموس در دامنه کاربرد استفاده کنید .

3- از روش رفتاری استفاده کنید .

4- از تحلیل مبتنی بر سناریو استفاده کنید .

سه نوع مدل ایستا و پویا :

1- مدل های زیر سیستم .

2- مدل های توالی .

3- مدل های ماشین حالت .

مدل توالی :

1- اشیای موجود در تعامل به طور افقی و با پیوند عمودی تنظیم می شوند .

2- زمان به طور عمودی نشان داده می شود .

3- تعامل های بین اشیا توسط فلش های برچسب داری نمایش می شوند که خطوط عمودی را پیوند می دهند .

4- چهارگوش باریک در رگ حیاتی شیء ، زمان را نشان

می دهد که شیء در حال کنترل شیء ای در سیستم است .

تعیین مشخصات واسط شیء

واسط ها باید طوری مشخص شوند که اشیا و قطعات بتوانند به طور موازی طراحی شوند .

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

تکامل طراحی

امتیاز مهم روش شیء گرا این است که تکامل طراحی را آسان می کند . علتش این است که نمایش حالت شیء بر طراحی تأثیر ندارد .

تغییر جزئیات داخلی شیء بر سایر اشیای سیستم تأثیر ندارد . علاوه بر این چون اشیا انسجام چندانی ندارند ، بدون تغییر زیاد در سیستم ، می توان اشیای جدیدی را معرفی کرد .


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

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

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

کلاس ها مهم ترین جزء شی گرایی هستند و در حقیقت کلاس ، تولید کننده یک شی محسوب می شود .

شي گرا(Object Oriented)

در اين متدولوژي سيستم به عنوان مجموعه اي از اشياء به هم مرتبط تعريف شده كه اشياء مي توانند مستقيما بر روي يكديگر تاثير بگذارند. اين تاثير هابر اثر توابع يا رفتارهاي متقابلي است كه اشياء نسبت به يكديگرخواهند داشت.اين متدولوزي در سه ساختار مجزا متولد شده و سپس از در كنار هم قرار دادن اين سه فضا زبان مدلسازي خاصي به نام UML بدستامده است.اين سه ساختار عبارتند از:

OMG((Object Modeling Group

OOSE(Object Oriented Software Engineering)

OOP((Object Oriented Programming

هفت گام اساسي مدل شي گرا

1)انتزاع(Abstraction): بطور كلي به مفهوم مجردسازي يا خلاصه سازي مي باشد.يعني انكه ما ميتوانيم به مسئله از يك ديد كلي٬به راحتي و بدون لحاظ كردن جزئيات نگاه كنيم. مثل نقشه كشور٬ شهر منطقه

2)Encapsulation :منظور از پنهان سازي يا مخفي سازي عناصر دروني يك Class و به تبع ان يك شي مي باشد.Encapsulation‌ محدود كردن اجزاي يك سيستم را نسبت به ديگر اجزاي ان سيستم بررسي كرده و ميخواهد يك شي و عناصر دروني ان از ديد استفاده كننده پنهان باشد.

3)Inheritance :ارث بري بطور كلي روشي است براي بيان شباهت ها.اين حالت در طراحي به عنوان يك رابطه Generalization تعريف مي گردد وكلاس فرزند تمام خصوصيات كلاس پدر را به ارث خواهد برد.

4)Polymorphism :منظور از چند شكلي ٬ يك شي خاص بودن و چند شكل داشتن مي باشد. مانند اب٬ بخار اب و يخ كه همگي از جنس شي اب مي باشند.

5)Message Communication :ارتباط پيامي ٬ تنها راه ارتباط مابين اشياءاست. مانند ارسال يك مقدار يا يك پارامتر از يك شي به شي ديگر.مانند تلويزيون و كنترل از راه دور

6)‍Concurrency :اجراي همزمان دو يا چند فعاليت در سطح يك شي يا سيستم ساختار همروندي را ايجاد مي كند.

7) Reusability :به منظور استفاده مجدد از يك شي در پايان مسئوليت هاي قبلي خود با همان نام و ساختار اوليه است.

شي (Object)

در ساده ترين حالت يك شي نمونه اي است كه از روي يك کلاس ايجاد شده است.چون کلاس نمي تواند عملياتي باشد ولي نمونه هاي توليد شده از ان قابليت اجرايي دارند.در كاملترين حالت يك شي موجوديتي است كاملا مستقل با مسئوليت هاي شخصي خويش كه در لحظه توليد از كلاس مرجع خود بوجود امده است و در پايان مسئوليت هاي خود مي بايد از بين برود.طول دوره تولد تا پايان مسئوليتها را طول عمر يك شي مي ناميم اگر يك شي از طريق خود يا ديگر اشياء به طور مستقيم يا غير مستقيم مورد استفاده قرار نگيرد ان شي متغير يك شي غير فعال خواهد بود در صورتي كه يك شي از طريق خود يا ديگر اشياء به طور مستقيم يا غير مستقيم مورد استفاده قرار بگيرد ان شي متغير يك شي فعال خواهد بود.

كلاس(‍Class)

موجوديتي است غير قابل استفاده مستقيم شامل مجموعه اي از متغيرهابه عنوان صفات كلاس و خطوط برنامه اي از جنس SubRoutine ها يا Function‌ها به عنوان بخشي از عملكرد ان كلاس. با توجه به اينكه Class‌ها قابليت استفا ده مستقيم را ندارند از روي هر كلاس ميتوان نمونه يا نمونه هايي را توليد كرد.بر همين اساس Classهابه سه گروه زير تقسيم مي شوند:

1)Multitone Class

2)Singletone Class

3)Utility Class

Multitone Class كلاس هايي هستند كه مي توانند بيش از يك نمونه از خود توليد كنند كه هر نمونه از نوع يك كلاس منحصر به فرد باشدSingletone Class‌ كلاس هايي هستند كه با ان كه مي توانند نمونه يا نمونه هايي از خود را توليد كنند اما تنوع توليد نمونه در انها وجود نداشته وكليه نمونه ها از روي يك كلاس توليد مي شوند. Utility Class كلاس هايي هستند كه توانايي توليد هيچ نمونه اي از خود را نخواهند داشت . در


مسئوليت(Responsibility)

يك كلاس و به تبع ان يك نمونه از يك كلاس در طول عمر خود داراي يك سري از مسئوليت هاست مانند ارتباط با اشياء ديگر و اجراي يك سري ازعمليات و دريافت يكسري از مقادير براي رسيدن به يك هدف خاص بطور كلي منظور از مسئوليت ها شامل موارد زير است:

1)صفات(Attribute)

2)عملكردها(Operation)

3)ارتباط ها(Connection)

صفات(Attribute)

خصوصیات مواردی هستند ازجنس متغیرها که بنا به تعریف اگاهی های شی از خودش را نشان می دهد مانند ابعاد یک فرم،وضعیت یک Connectionونام یک فرد یا رنگ یک متن.

خصوصیات یک Class به سه گروه کلی تقسیم می شوند.این تقسیم بندی فضای اعتباراین صفت یا ویژگی را در محدوده Class ها و اشیاءتولید شده از انها بررسی می کند.

گروه اول صفات عمومی(Public): صفاتی هستند که در داخل یک Class وجود داشته،درون یک Class قابلیت خواندن و نوشتن خواهند داشت و در اختیار نمونه هایی که از روی یک کلاس تولید می شوند نیزقرار می گیرند و در داخل اشیاء نیز قابلیت خواندن و نوشتن را خواهندداشت.

گروه دوم صفات خصوصی(Private): صفاتی هستند که درون یک کلاس وجود دارند قابلیت خواندن و نوشتن خواهند داشت اما در اختیار نمونه های تولید شده از کلاس قرار نگرفته و اشیاء دیگر قدرت استفاده از این صفات را نخواهند داشت.

گروه سوم صفات محافظت شده(Protected):صفاتی هستند که در داخل کلاس و نمونه های تولید شده از کلاس وجود داشته در داخل کلاس به شکل خواندنی و نوشتنی خواهند بود اما درون اشیاء دیگریا به شکل فقط خواندنی یا به شکل فقط نوشتنی ظاهر خواهند شد.

عملكرد(Operation)

عمل٬ عكس العمل يا مجموعه اي از عمليات كه يك شي در طول دوره زندگي خود با ان خواهد بود و به عنوان يك متد يا Operation‌ تعريفمي شود.

ارتباط(Connection)

آگاهي داشتن يك شي از سطوح مسئوليت ديگر اشياء (بعضي از صفات٬ عملكردها يا ارتباطات اشياء ديگر) را رابطه مي نامند. ارتباطات در محيط الزاما دو طرفه نبوده و عموما يك شي با اشياء ديگر بطور يكطرفه ارتباط برقرار مي كند.

انواع ارتباطات در مدل شي گرا

الف)تعميم(Generalization)

اين ارتباط براي پرهيز از تكرار صفات٬ اعمال و ارتباطات بين كلاس ها در يك نمودار به كار مي رود. براي اين منظور مي توان عناصر تكراري را در كلاسي مجزا به عنوان كلاس تعميم و عناصر غير مشترك را در خود كلاس ها قرار داد و با برقراري رابطه تعميم بين هر يك از كلاس ها و كلاس تعميم كليه عناصر را از كلاس تعميم به ارث گرفت.


ب)تناظر(Association)

زماني كه دو شي يك ارتباط ساختاري با يكديگر داشته باشند رابطه اي از جنس تناظر به دست خواهد امد. منظور از ارتباط ساختاري ارتباطي است كه اشياء بتوانند به خصوصيات يكديگر دسترسي داشته باشند.

رابطه تناظر به سه دسته كلي زير تقسيم مي شوند:

1)تناظر معمولي(Normal)

2)تناظر جمعي(Aggregation)

3)تناظرتركيبي(Composition)


رابطه Normal

يك ارتباط تناظري ساده بين دوكلاس


رابطه Aggregation

زمانيكه دو يا چند كلاس در كنار يكديگر قرار بگيرند و از قرار گرفتن انها در كنار هم كلاس جديدي پديد ايد.


رابطه Composition

نوع خاصي از رابطه جمعي مي باشد كه رابطه محكم بين يك جزءاز مجموعه را با كل ان مجموعه نشان مي دهد.


ج)وابستگي(Dependency)

رابطه وابستگي رابطه اي است ساختاري كه اگر شي Y‌ يكي از خصوصياتش يا متدهايش تغيير كند حتما در يكي از خصوصيات شي X نيز تغيير حاصل شودانگاه مي گوييم X به Y وابسته است.



برای برنامه نویسی شی گرا و کپسوله کردن برنامه تسلط به مفاهیم زیر الزامیست :


1- متدها (رفتار ها)

2- متغیر ها

3- خصیصه ها


هر سه بخش فوق می توانند
Public , Private یا Protected باشد .


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

در صورتی که نوع متغیر public یا private تعیین نگردد (یا از Dim استفاده شود) به صورت پیش فرض متغیر Private در نظر گرفته خواهد شد .