شی و شی گرایی
متدولوژی شی گرا مجموعه ای از تفکرات و دید های قبلی است . اصولا در مفاهیم شی وشی گرایی به این نکته می رسیم که این مفاهیم چیزی جز مفاهیم طبیعی نیستند ، در نتیجه می توان گفت که تفکر شی یک تفکر معمولی و طبیعی است و یک شی هر چیزی
می تواندباشد.
یک شی نمونه ای از یک کلاس است . یک کلاس یک گروه کلی است که دارای صفات و عملیات مشابهی است . وقتی که یک شی را ایجاد می کنید ، محیط عملیاتی ، تعیین کننده صفات و عملیاتی است که یک شی می تواند به خود بگیرد .
استفاده از مفاهیم شی گرا به شما در درک نیازهای کاربران کمک می کند و چنانچه بتوانید این نیازها را به تصویر بکشید، درک آن ها سریع تر و آسان تر (هم برای شما و هم برای مشتریان) خواهد بود.
چرا از شی گرا استفاده می کنیم؟
شی گرایی می تواند دارای منافع زیادی باشد ، اما باید به خاطر داشت که اصولا متدولوژی شی گراهمانند همه متدولوژی های دیگر
توانایی حل تمام مسائل را ندارد ولی به هرحال برخی از منافع این متدولوژی را می توان به شکل زیر عنوان کرد :
- کم بودن اشکالات
روش شی گرا بنا به طبیعت و امکانات ذاتی خود امکان
کاهش اشکالات را فراهم می آورد.
- افزایش موفقیت
متدولوژی شی گرا می تواند موفقیت تیم پروژه را از طریق کاهش زمان تحلیل ، طراحی و برنامه نویسی بالا ببرد و
می تواند برنامه زمان بندی پروژه را به صورت چشمگیری کاهش دهد.
- توسعه سریع و کاهش هزینه
با استفاده از مفهوم دوباره استفاده نمودن ، می توان زمان توسعه سیستم را بهبود بخشید وچون اشیای دوباره استفاده شده قبلا آزمایش شده اند در نتیجه عمل توسعه سیستم از طریق استفاده مجدد آنها باعث بالا رفتن بهره وری و بهبود کیفیت خواهد شد و بطور کلی کاهش هزینه ها منجر گردد.
- امکان ارائه مدل نمونه
به دلیل ذاتی بودن مراحل تحلیل و طراحی و تهیه برنامه ها نیاز به استفاده از مدلهای نمونه می باشد ، در نتیجه امکان برقراری وتعامل همیشگی با مشتری وکاربران فراهم
می آید .
- کاهش پیچیدگی ها
به خاطر اینکه هر شی مجموعه اطلاعات مورد نیاز خود را در داخل خود نگهداری می کند مفاهیمی همانند دوباره استفاده کردن ، مخفی سازی و مفهومی به نام خود کفایی باعث خواهد شد که پیچیدگی سیستم های دیگر و اثراتی که سیستم های دیگر روی یک سیستم می گذارند را نداشته باشد .
- نگهداری و اصلاح ساده تر
متدولوژی شی گرا بواسطه استفاده از مفهوم مخفی سازی و نیز خود کفایی نسبت به معماری ها ی متداول متکی به سلسله مراتب وظایف ، امکان نگهداری، اصلاح و احتمالا گسترش ساده تری دارند .
- تطابق با ابزارهای جدید
اکثر ابزارهای جدید همانند سیستم های کلاینت – سرور بر مبنای مفاهیم شی گرابنا شده اند ، در نتیجه استفاده از تحلیل طراحی و برنامه نویسی شی گرا را با معنی تر نموده است .
اکنون به بررسی سایر جنبه های اشیا می پردازیم .
تجریدAbstraction))
تجرید به معنای این است که صفات و عملیات یک شی را آنقدر از صافی بگذرانیم تا مجموعه ای که مورد نیاز است باقی بماند . به عبارت دیگر دید محدودی است که فقط جنبه های خاص مورد نظر در داخل آن آورده می شوند. این یک دید کلی بدون نگاه کردن به جزئیات می باشد .
میراثInheritance))
میراث یکی از جنبه های مهم در مفاهیم شی گرایی است . یک شی صفات وعملیات کلاس خودش را به ارث می برد.یک کلاس همچنین می تواند صفات و عملیات را از کلاس دیگری به ارث ببرد.
چند شکلیPolymorphism))
چند شکلی از جنبه های مهم دیگر است . این موضوع اشاره به این نکته دارد که عملیات می توانند نام مشابهی در کلاس های متفاوت داشته باشند و هر کلاس عملیات را به شکلی مختلف انجام دهد . مثلا ، می توانید در را باز کنید ، پنجره را باز کنید ، یا یک حساب در بانک باز کنید . در هر یک از موارد بالا شما یک عمل متفاوت را انجام می دهید. بطور کلی می توان گفت که چند شکلی به معنای یک چیز بودن و چند شکل داشتن است .
پنهان سازیEncapsulation))
اشیا آنچه را که انجام می دهند پنهان می کنند . به این معنی که آنها عملیات داخلی خود را از دید بینندگان خارج از دنیای خود و سایر اشیا پنهان می سازند . عمل پنهان سازی به این معنی است که هر شی بطور مستقل دارای داده ها و فرآیند های مورد نیاز خود است
و بخشی از این داده ها و فرآیند ها ممکن است از دید سایر اشیا مخفی باشد در نتیجه شی ماهیتی تقریبا مستقل از اصل و محیط اطراف خود پیدا می کند.در نتیجه پنهان سازی این امکان را می دهد تا در سیستمی که شامل تعدادی شی است ، اگر یکی از اشیا درست کار نکند و مهندس نرم افزار مجبور به تغییر این شی باشد ، احتمالا نیازی به تغییر اشیای دیگر نیست .
ارسال پیامMessage Sending))
در یک سیستم ، اشیا با هم کار می کنند . آنها این کار را با فرستادن پیام به یکدیگر انجام می دهند.یک شی پیامی را برای اجرای عملیات به شی دیگر می فرستد، شی گیرنده پیام آن عملیات را اجرامی کند . بطور کلی پیام ها برای اجرای عملیات درخواست می شوند .
تناظر یا ارتباطَAssociations))
نمونه متداول دیگری است که نشان می دهد اشیا در بعضی حالات به یکدیگر وابسته هستند. مثلا وقتی تلویزیون را روشن می کنید در اصطلاح مدل شی گرا،شما در یک تناظر با تلویزیون خودتان هستید.تناظر یک ارتباط ساختاری بین دو شی است . تناظر " روشن کردن " یک طرفه است ، یعنی شما تلویزیون را روشن می کنید و عمل روشن شدن یک طرفه انجام می شود . تناظر هایی مثل تناظر " ازدواج کردن با " دو طرفه است . در مجموع می توان گفت که اشیا بطور خاص با هم تناظر دارند که این تناظر دارای انواع مختلفی است . یک شی از یک کلاس ممکن است با چند شی از کلاس دیگر متناظر باشد .
تجمعAggregation))
برای نشان دادن وابستگی بین اجزا و کل از ارتباط تجمع استفاده می کنیم . در واقع تجمع نوع دیگر از تناظر یا ارتباط بین اشیا
می باشد .نوع دیگری از تجمع به نام ترکیب وجود دارد که درگیر یک ارتباط قوی بین شی تجمع با اشیای جز اش می باشد . خاصیت ترکیب آن است که یک جز در داخل یک شی ترکیبی دارای معنی و مفهوم است . در یک شی مرکب ، اجزا فقط به عنوان بخشی از ترکیب وجود دارند .
آزمون
1- شی چیست ؟
یک شی نمونه ای از یک کلاس است.
2- چگونه اشیا با هم کار می کنند ؟
اشیا از طریق فرستادن پیام با یکدیگر کار می کنند.
3- چند تایی به چه چیزی اشاره می کند ؟
چند تایی اشاره به تعداد اشیا از یک کلاس می کند که مرتبط با یک شی از کلاس متناظر می باشد .
4- آیا دو شی می توانند با بیشتر از یک راه با یکدیگر متناظر شوند ؟
بله ، بطور مثال دو شخص می توانند هم دوست باشند وهم همکار .
منبع : مهندسی نرم افزار با بهره گیری از
uml ، امیر مهدی هدایت فر ، موسسه فرهنگی هنری دیبا گران تهران
مختار خان