An introduction to Design-CRC Method and Class Diagram.pdf

‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫ههدی عیٌعلی‬
‫به ًام خدا‬
‫هقدههای بز طزاحی‪ -‬رٍش ‪CRC‬‬
‫فهزست هطالب‬
‫تزوش هْن ‪2 .....................................................................................................................‬‬
‫ًشاحی چیؼت؟ ‪2 ...............................................................................................................‬‬
‫فشایٌذ ػوَهی ًشاحی ‪3 .....................................................................................................‬‬
‫ًشاحی ثذ ‪4 .................................................................................................................‬‬
‫سٍؽ ‪7 ................................................................................................................... CRC‬‬
‫اجشای ‪9 .............................................................................................................. CRC‬‬
‫ًىبت هْن ‪11 ...............................................................................................................‬‬
‫هثبل ثشای سٍؽ ‪11 ................................................................................................. CRC‬‬
‫ًوَداس والع دس ‪13 .................................................................................................... UML‬‬
‫‪ UML‬چیؼت؟ ‪13 .........................................................................................................‬‬
‫ًوَداس والع ‪14 ...........................................................................................................‬‬
‫اكَل حبون ثش ًشاحی والػْب ‪21 .............................................................................................‬‬
‫اكل ثبصِثؼتِ(ثبص ثَدى دس ػیي ثؼتگی) ‪21 .................................................................................‬‬
‫اكل یىتبیی ٍظیفِ والع ‪22 .............................................................................................‬‬
‫اكل جبیگضیٌی لیؼىَف ‪22 ................................................................................................‬‬
‫اكل ٍاسًٍگی ٍاثؼتگی ‪23 .................................................................................................‬‬
‫اكل تفىیه ٍاػٌِ ّب ‪24 .................................................................................................‬‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫ههدی عیٌعلی‬
‫تذکز ههن‬
‫ایي هؼتٌذ ثِ ػٌَاى ساٌّوبی ًشاحی ٍ پیبدُػبصی ثشای داًـجَیبى دسع ثشًبهِػبصی پیـشفتِ تْیِ‬
‫ؿذُ اػت ٍ فشایٌذ اسایِ ؿذُ دس آى هجتٌی ثش ّیچ هتَدٍلَطی سػوی تَلیذ ًشمافضاس ًیؼت‪ .‬ولیِ هٌبلت‬
‫هٌشح ؿذُ دس ایي هؼتٌذ ؿبهل ػبدُػبصی دس حل هَسد ًیبص ثشای دسع جبسی ثَدُ اػت‪ .‬لٌفي ثشای‬
‫جضئیبت هشثَى ثِ سٍؽّب ٍ ًوَداسّب ثِ وتبةّبی هشجغ یب دسعّبی هشثَى ثِ آىّب هشاجؼِ ًوبییذ‬
‫طزاحی چیست؟‬
‫ًشاحی ثخؾ اص فشایٌذ ایجبد ًشمافضاس اػت وِ ثِ تْیِ یه ًمـِ ٍ ًشح اص ًشمافضاسی وِ ثبیذ پیبدُػبصی ؿَد‪ ،‬اختلبف‬
‫داسد‪ٍ .‬سٍدی فشایٌذ ًشاحی تَكیف هشثَى ثِ ًیبصهٌذیّبی ًشمافضاس(دس ایي دسع ؿشح هؼئلِ یب پشٍطُ) ٍ خشٍجی آى‬
‫تَكیف اجضای ًشمافضاس(دس ایي دسع والعّب‪ٍ ،‬یظگیّب ٍ هتذّبیـبى ٍ سٍاثي ثیي آىّبػت)‪.‬‬
‫دس یه جولِ هیتَاى گفت وِ تَكیف ًیبصهٌذیّبی یه ًشمافضاس دسثبسُ چیؼتی ًیبص ثشای آى ًشمافضاس ٍ تَكیف ًشاحی‬
‫ًشمافضاس‪ ،‬چگًَگی ثشآٍسدى آى ًیبصّب سا ثیبى هیوٌذ‪ً .‬شاحی سا هیتَاى ثِ سٍؽّبی هختلفی هؼتٌذ وِ دس ایي دسع ّذف‬
‫هؼتٌذػبصی آى ثب هذلّبی ‪ً ٍ CRC‬وَداس ػبدُؿذُ والع اص ًوَداسّبی ‪ UML‬اػت‪.‬‬
‫دلت ًوبییذ وِ اػتفبدُ اص صثبى ؿیگشا ثشای ایجبد ساُحل ًشمافضاسی‪ ،‬ؿشى وبفی ثشای ؿیگشا ثَدى ًشمافضاس ًیؼت‪ .‬ثلىِ‬
‫ایي ًحَُ ًشاحی ٍ پیبدُػبصی اػت وِ هـخق هیوٌذ اص اكَل ؿیگشایی سػبیت ؿذُ اػت یب خیش‪.‬‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫ههدی عیٌعلی‬
‫فزایٌد عوَهی طزاحی‬
‫گبم ّبی صیش یه فشایٌذ ػوَهی دس حذ هٌبلجی وِ دس ایي هؼتٌذ اسایِ ؿذُ اػت ٍ هتٌبػت ثشای هحتَای ایي دسع سا اسایِ‬
‫هیدّذ‪ .‬تَجِ ًوبییذ وِ ایي فشایٌذ تٌْب ؿبهل ثخؾ ًشاحی تب پیبدُػبصی ثَدُ ٍ جضئیبت هشثَى ثِ لجل یب ثؼذ اص ایي‬
‫هشاحل سا دس ًظش ًگشفتِ اػت‪.‬‬
‫‪ -1‬ؿٌبػبیی سفتبس ػیؼتن‬
‫‪ ‬ؿٌبػبیی سفتبس ػیؼتن خَد یه هَهَع هفلل ثِ ًبم هٌْذػی ًیبصهٌذیّب ٍ تحلیل ًیبصهٌذیّب اػت‪.‬‬
‫تَكیف سفتبس ػیؼتن ثبیذ ثِ صثبى هـتشی ثیي اػتفبدُوٌٌذگبى ػیؼتن ٍ هٌْذػبى تَلیذوٌٌذُ ػیؼتن‬
‫ًَؿتِ ؿَد‪.‬‬
‫‪ ‬دس حذ ایي دسع هٌظَس اص ایي لؼوت تَكیف هؼئلِ یب پشٍطُای اػت وِ ثِ ػٌَاى ػَال هٌشح هیؿَد‪.‬‬
‫‪ -2‬پبالیؾ ًیبصهٌذیّب‬
‫‪ّ ‬ذف اص ایي گبم تَكیف ػٌبسیَّبیی گبمثِگبم ثشای اػتفبدُ اص ػیؼتن اػت‪ .‬ایي ػٌبسیَّب دس ػیي ایي وِ سفتبس‬
‫دسػت ًشمافضاس سا ثتَاًٌذ تَكیف هیوٌٌذ ثلىِ ثشای اسصیبثی دسػتی سفتبس ًشمافضاس ثؼذ اص پیبدُػبصی هیتَاًٌذ ثِ‬
‫وبس سًٍذ‪.‬‬
‫‪ ‬خشٍجی ایي وبس هؼتٌذ تَكیف ًیبصهٌذیّبی ًشمافضاس اػت‪ .‬یه فشایٌذ سفت ٍ ثشگـتی دسیبفت ثبصخَسد ثیي‬
‫تْیِوٌٌذُ ایي هؼتٌذ ٍ اػتفبدُوٌٌذُ ػیؼتن هیتَاًذ ثشای حلَل تَافك ٍ دیذ ٍاحذ اص ًشمافضاس ثیي تَلیذوٌٌذُ ٍ‬
‫اػتفبُوٌٌذُ آى ثؼیبس هفیذ ثبؿذ‪.‬‬
‫‪ -3‬ؿٌبػبیی والعّبی ًشمافضاس‬
‫‪ ‬دس ایي هشحلِ والعّبی اكلی ٍ سفتبسّبی هْن ّش وذام ؿٌبػبیی هیؿًَذ‪.‬‬
‫‪ ‬اػتفبدُ اص سٍؽ ‪ CRC‬دس ایي هشحلِ آغبص هیؿَد‪(.‬ثشای جضئیبت ثخؾ سٍؽ ‪ CRC‬هشاجؼِ ًوبییذ‪).‬‬
‫‪ -4‬ؿشٍع هؼتٌذػبصی ًشاحی‬
‫‪ ‬ایي هشحلِ ؿبهل والعّبیی اػت وِ دس لبلت هذلّبی ‪ CRC‬دس گبم هشحلِ ًْبیی آى ٍ پغ اص چٌذ‬
‫تىشاس پبالیؾ اػتخشاج ؿذُاًذ‪.‬‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫ههدی عیٌعلی‬
‫‪ -5‬هؼتٌذػبصی ًشاحی‬
‫‪ ‬دس ایٌجب هٌظَس هؼتٌذػبصی والعّب دس لبلت ًوَداس والع اػت‪ .‬دس ایي هشحلِ سٍاثي ثیي والعّب ٍ‬
‫ؿىل ساثٌِ ثِ كَست دلیكتش تَكیف هیؿَد‪ .‬سٍاثي پذسفشصًذی هَسد ًیبص ؿٌبػبیی ٍ هؼتٌذػبصی هی‪-‬‬
‫ؿَد‪.‬‬
‫‪ -6‬پیبدُػبصی والعّب‬
‫‪ ‬دس ایي هشحلِ ًوَداس والع ثِ والعّبی جبٍا تجذیل هیؿَد ٍ جضئیبت ثیـتشی ثؼتِ ثِ ًیبص ثِ آىّب‬
‫اهبفِ هیؿَد‪ .‬والعّبیی جذیذی ثؼتِ ثِ التوبئبت پیبدُػبصی هَسد ًیبص ثبؿذ وِ ثبیذ ًَؿتِ ؿًَذ‪.‬‬
‫طزاحی بد‬
‫ًشاحیای خَة اػت وِ ػبدُ‪ ،‬وَتبُ ٍ هختلش‪ ،‬لبثل فْن‪ ،‬لبثل تغییش ٍ لبثل ثبصثىبسگیشی‪ 1‬ثبؿذ ٍ پیبدُػبصی آى ثِ ػبدگی‬
‫كَست گیشد‪.‬‬
‫ًجك لبػذُ ولی وِ هیتَاى چیضّب سا اهذاد آًْب ؿٌبخت یه ساُ تَكیف ًشاحی خَة‪ ،‬تَكیف ًشاحی ثذ اػت‪ .‬هؼوَال‬
‫ًـبًِ یه اتفبق ثذ دس ًشمافضاس سا ثَی ثذ‪ 2‬هیًبهٌذ‪ .3‬ثِ ػجبست دیگش فْشػت صیش سا هیتَاى اص ثَّبی ثذ ًشاحی اسایِ داد‪.‬‬
‫‪ -1‬ػفت ٍ ػخت ثَدى ًشاحی(‪ :)Rigidity‬تغییش ػیؼتن ػخت اػت صیشا ّش ثبس وِ یه ثخـی تغییش هیوٌذ ثبیذ‬
‫ثخؾّبی دیگش ًیض تغییش وٌذ تب ثب تغییش جذیذ ػبصگبس ثبؿذ‪ .‬ایي صًجیشُ تغییش ثِ كَست ثبصتبةّبی ثیاًتْب دس‬
‫ػیؼتن هٌتـش هیؿَد(تغییش هٌتـشؿًَذُ)‪.‬‬
‫‪ -2‬ؿىٌٌذُ ثَدى ًشاحی(‪ :)Fragility‬تغییش دس یه لؼوت ػیؼتن هَجت اص وبس افتبدى ثخؾّبی دیگشی وِ سثي‬
‫هؼتمیوی ثِ ثخؾ تغییش یبفتِ ًذاسًذ‪ ،‬هیؿَد‪.‬‬
‫‪Reusability‬‬
‫‪Bad Smell‬‬
‫‪3‬‬
‫سیـِ ایي اكٌالح ثِ وتبة هؼشٍف ‪ًَ refactoring‬ؿتِ هبستیي فبٍلش ٍ وٌت ثه ثشهیگشدد‪ً .‬مل لَلی اص هبدس ثضسي وٌت ثه وِ هیگفت ٍلتی ثَی ثذی هیؿٌَی‬
‫ٍلت ػَم وشدى وٌِْ ثچِ اػت‪ ،‬الْبم ثخؾ ایي اكٌالح ثَد ثِ ایي هؼٌب وِ ٍلتی ًـبًِّبیی اص ًشاحی یب ثشًبهِ ًَیؼی ثذ سا هیثیٌی ٍلت ثبصًَیؼی(‪) refactoring‬‬
‫اػت‪ .‬ؿبیذ ثتَاًذ دلیل چٌیي ًگبّی سا ثِ هؼئلِ ویفیت ًشاحی یب پیبدُػبصی ‪ ،‬لبثل فْن ثَدى ٍ هلوَعتش ثَدى تَكیف ٍیظگیّبی ثذ ٍ خٌبّبی ًشاحی ٍ پیبدُػبصی دس‬
‫همبثل تَكیف خـه ‪ ،‬اًتضاػی ٍ غیشلبثل فْن ًشاحی یب پیبدُػبصی خَة ثشای ثشًبهًَِیؼبى داًؼت‪.‬‬
‫‪1‬‬
‫‪2‬‬
‫ههدی عیٌعلی‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫‪ -3‬غیشلبثل جبثجبیی ثَدى ًشاحی(‪ :)Immobility‬ثؼیبس ػخت اػت وِ ثتَاى یه هَلفِ ػیؼتن سا ثشای‬
‫ثبصثىبسگیشی اص ول ػیؼتن جذا وشد ٍ جبی دیگشی هَسد اػتفبدُ هجذد لشاس داد‪.‬‬
‫‪ -4‬گشاًشٍی صیبد ًشاحی(‪ :)Viscosity‬گشاًشٍی دس هبیؼبت ثِ همبٍهت هبیغ دس ثشاثش ؿىلپزیشی گفتِ هیؿَد‪ .‬ثِ‬
‫ػٌَاى هثبل گشاًشٍی ػؼل ثیـتش اص گشاًشٍی آة اػت‪ .‬دس ًشاحی ًشمافضاس هٌظَس گشاًشٍی‪ ،‬هیضاى همبٍهت ًشاحی‬
‫دس ثشاثش افضٍدُ ؿذى وذ جذیذ یب تغییش وذ لجلی اػت‪ .‬اگش دس ًشاحی افضٍدى وذ جذیذ ثِ ػیؼتن هؼتلضم تغییش‬
‫صیبدی ٍ تلحیح صیبد خٌبّبی ایجبد ؿذُ ثبؿذ‪ً ،‬شاحی گشاًشٍی صیبدی داسد‪.‬‬
‫‪ -5‬پیچیذگی ثیفبیذُ(‪ :)Needless Complexity‬ؿبیذ ثؼیبسی ػبختوبى دادُّب یب الگَسیتنّبی پیچیذُ دس‬
‫ًشاحی پیـجیٌی ؿذُ اػت وِ دس حبل حبهش ًیبصی آىّب ًیؼت‪ .‬ؿبیذ ًشاح ایي ؿیَُ حل هؼئلِ سا جبلتتش‪،‬‬
‫ّیجبىاًگیضتش یب َّؿوٌذاًِتش داًؼتِ اػت اهب دس تَكیف ًیبصهٌذیّبی ّیچ دلیل هَجْی ثشای ایي پیچیذگی ثِ‬
‫كشاحت ٍجَد ًذاسد‪.‬‬
‫‪ -6‬ثشًبهًَِیؼی ثشای آیٌذُ(‪ً :)Future Programming‬شاحی ٍ ثشًبهِ ًَیؼی ًِ ثشای ًیبصهٌذیّبی اهشٍص‬
‫ثلىِ ثشای ًیبصهٌذیّبی آیٌذُ ایٌىِ ثِ كشاحت لیذ ًـذُاًذ ثلىِ ًشاح یب ثشًبهِ ًَیغ پیؾثیٌی هیوٌذ وِ‬
‫هوىي اػت دس آیٌذُ پیؾ ثیبیذ اًجبم ؿذُ اػت‪ .‬دلت وٌیذ وِ ایي ٍیظگی حبلت خبكی اص ٍیظگی لجلی اػت ٍ‬
‫ثشخی اٍلبت ثشای پیچیذگی ثیفبیذُ تَجیْبتی اص هٌظش ثشًبهًَِیؼی ثشای آیٌذُ آٍسدُ هیؿَد‪.‬‬
‫ًىتِ جبلت آى اػت وِ ایي ٍیظگی ثب ٍیظگی اٍل یؼٌی ػفت ٍػخت ثَدى ًشاحی دس توبد اػت ٍ هثل ثؼیبسی‬
‫هَلؼیتّبی هٌْذػی‪ ،‬تلوین دسػت ًِ تجؼیت اص لَاػذ لٌؼی ولی ثلىِ تـخیق دسػت ًمٌِ تؼبدل هٌبػت ثیي‬
‫دٍ لبػذُ ولی هتوبد اػت‪.‬‬
‫‪ -7‬تىشاس ثیفبیذُ(‪ :)Needless Repetition‬ثِ ًظش هیسػذ وِ ثخؾّبی هختلف وذ تَػي دٍ ثشًبهِ ًَیغ‬
‫هتفبٍت ٍ ثب اػتفبدُ اص ‪ًَ copy/paste‬ؿتِ ؿذُ اػت‪.‬‬
‫‪ً -8‬شاحی ثشای اػتثٌب‪ٌّ :‬گبم ًشاحی سفتبس هَسد اًتظبس ػیؼتن ٍ ػبختبس هَسد ًیبص آى ثشای ًِ حبلتّبی ػوَهی‬
‫اػتفبدُ اص ػیؼتن ثلىِ هَاسد اػتثٌب ٍ خبف هذ ًظش لشاس گشفتِ اػت‪ .‬ایي هؼئلِ ثشای ًشاحی ػبختوبى هبًٌذ آى‬
‫اػت وِ ثشای سٍثشٍی ٍسٍدی ػبختوبى ثِ جبی پلىبى ًفشسٍ‪ ،‬ػٌح ؿیجذاس ػشین(ثشای اػتفبدُ اص ٍیلچش) پیؾ‪-‬‬
‫ثیٌی ؿَد ٍ پلىبى ونػشهی دس وٌبس ػٌح ؿیجذاس پیبدُؿَد‪.‬‬
‫‪ -9‬دٍختي وتٍؿلَاس ثشای تىوِ‪ :‬ایي هؼئلِ خلَكب ثشای ثشًبهًَِیؼبى ٍ ًشاحبى جَاى ثؼیبس پیؾ هیآیذ‪ .‬دس‬
‫ٌّگبم ًشاحی ثخؾ یب ثخؾّبیی اص ػبهبًِ ٍ یب جٌجِّبیی اص ًشاحی وِ ثیـتشیي اثْبم یب پیچیذگی یب تبصگی سا‬
‫اص ًظش ًشاح داسًذ ثِ كَست خَدآگبُ یب ًبخَدآگبُ ثِ ػٌَاى هشوض ًشاحی دس ًظش گشفتِؿذُ اػت ٍ ثمیِ اجضا حَل‬
‫ههدی عیٌعلی‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫آًْب ٍ دس خذهت آًْب ًشاحی هیؿًَذ‪ .‬دس چٌیي ًشاحیّبیی استجبًبت غیشهشٍسی ٍ والعّبی‬
‫لبدسهٌلك(‪ 4)Omnipotent‬ثؼیبس دیذُ هیؿًَذ‪.‬‬
‫‪ -10‬اثْبم دس ًشاحی‪ً :‬ویتَاى اص خَد ًشاحی ثِ ّذف آى اص یه ػبختبس یب استجبى پیثشد‪ .‬جٌجِ یب هٌظشی وِ ًشاح ثش‬
‫اػبع آى الذام ثِ افضاس ثخؾّب ٍ یب ثشلشاسی استجبًبت وشدُ اػت یِ كَست ٍاهح ٍ ثبثت ًیؼت ٍ گبّی دسگیش‬
‫تٌبلن اػت‪ .‬ثِ ػٌَاى هثبل دس ػبختبس پذسفشصًذی جٌجِای اًتضاع‪ 5‬وِ ػلؼلِ هشاتت ثش اػبع آى تـخیق دادُ‬
‫ؿذُ اػت‪ ،‬دس ػٌَح هختلف ثب ّن ػبصگبس ًیؼت‪ .‬هثبل صیش ٍهؼیتی اص چٌیي ؿشایي سا دس ٌّذػِ ًـبى هیدّذ‪.‬‬
‫ًوَداس والع ‪ UML‬ثِ هب ووه هیوٌذ تب پیؾ اص پیبدُػبصی ثتَاًین ًشاحی اًجبم ؿذُ سا ثشای پیذا وشدى ثَّبی ثذ‬
‫ًشاحی هَسد اسصیبثی لشاس دّین ٍ ثب دیگشاى دس خلَف آى كحجت وٌین‪.‬‬
‫‪4‬‬
‫والعّبی لبدس هٌلك ثِ ػٌَاى یه پبدالگَ(‪ )Antipattern‬ؿٌبختِ هیؿًَذ‪ .‬پبدالگَّب الگَّبی تىشاسی ّؼتٌذ وِ ّوَاسُ ثبیذ اص آًْب اجتٌبة وشد‪ .‬والع لبدس هٌلك‬
‫ثِ والعّبیی گفتِ هیؿًَذ وِ ٍظبیف‪ ،‬سفتبسّب ٍ ٍیظگیّبی صیبد‪ ،‬هتٌَع ٍ ػوَهب ثیسثي ثِ ّوی داسًذ‪ .‬ایي والعّب استجبًبت صیبدی ثب دیگش والعّب ایجبد هیوٌٌذ‪.‬‬
‫تغییش دس چٌیي والعّبیی ػوَهب هٌتـش هیؿًَذ ٍ خَد ایي والعّب ّن دس هؼشم اًتـبس تغییشات دیگشاى ّؼتٌذ‪ .‬چٌیي والعّبیی ثِ كَست ػتبسُ(والػی ٍ استجبًبت‬
‫صیبد) یب والػی ثب سفتبسّبی هفلل دس ًوَداس والع ثِ چـن هیآیٌذ‪.‬‬
‫‪5‬‬
‫‪Abstraction‬‬
‫ههدی عیٌعلی‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫رٍش ‪CRC‬‬
‫سٍؽ ‪ ، Class Responsibility Collaborator‬سٍؿی ثشای تَفبى رٌّی ثِ هٌظَس ؿٌبػبیی والعّبی ًشاحی‬
‫اػت‪ .‬ایي سٍؽ تَػي ٍاسد وبًیٌگبم‪(6‬هجذع هفَْم ٍیىی) ٍ وٌت ثىت‪ًَ(7‬یؼٌذُ هؼشٍف ؿیگشایی) دس اثتذا ثِ ػٌَاى یه‬
‫سٍؽ آهَصؿی هؼشفی ؿذ اهب ثؼذّب ثیـتش هَسد تَجِ ًشاحبى لشاس گشفت‪ .‬ایي سٍؽ هجتٌی ثش ایجبد هذلّبی ‪ CRC‬ثشای‬
‫ًشاحی اػت‪.‬‬
‫هذل ‪ CRC‬ؿبهل ػِ ثخؾ ًبم والع‪ٍ ،‬ظبیف والع ٍ ّوىبس والع اػت‪.‬‬
‫‪ ‬هٌظَس اص والع ّوبى هفَْم والع دس ؿیگشایی اػت وِ تجشیذی اص ًَع دػتِای اص اؿیبی هـبثِ هیثبؿذ‪.‬‬
‫‪ ‬هٌظَس اص ٍظبیف والع چیضی اػت وِ والع هیداًذ یب وبسی اػت وِ ثبیذ اًجبم دّذ‪.‬‬
‫‪ّ ‬وىبس والع ؿبهل اػبهی دیگش والعّبیی اػت وِ والع هَسد ًظش ثشای اًجبم ٍظبیف خَد ثِ تؼبهل ثب اًْب‬
‫احتیبج داسد‪.‬‬
‫دس ایي سٍؽ اًالػبت هشثَى ثِ ّش والع دس وبستّبیی ثِ ؿىل صیش ًَؿتِ هیؿَد‪:‬‬
‫‪6‬‬
‫‪Ward Cunningham‬‬
‫‪7‬‬
‫‪Kent Beck‬‬
‫ههدی عیٌعلی‬
‫چٌذیي هثبل پش ؿذُ ثشای وبستّبی ‪ CRC‬سا هیتَاًیذ دس صیش ثجیٌیذ‪:‬‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫ههدی عیٌعلی‬
‫اجزای ‪CRC‬‬
‫ثشای اًجبم سٍؽ ‪ CRC‬گبمّبی صیش ثِ كَست تىشاسی ٍ افضایـی اًجبم هیؿَد‪ .‬هٌظَس اص تىشاسی ثَدى ایي اػت وِ ثؼذ‬
‫اص دٍس وبهل اجشا دٍثبسُ اص گبم اٍل ثبیؼتی ؿشٍع وشد ٍ هٌظَس اص افضایـی آى اػت وِ خشٍجی دٍسّبی لجلی اجشا ثِ ػٌَاى‬
‫ٍسٍدی دس دٍس جبسی اػتفبدُ هیؿًَذ ٍ ًتیجِ وبس اص تىویل ٍ پبالیؾ تذسیجی خشٍجی حبكل هیؿَد‪.‬‬
‫‪ .1‬پیذا وشدى والعّب‪ :‬فشایٌذ پیذا وشدى والع دس ٍالغ ثخـی اص وبس تحلیل اػت وِ ٍظیفِ هـخق وشدى اجضای‬
‫اكلی ػبصًذُ ًشمافضاس سا ثش ػْذُ داسد‪ .‬ػبدُ تشیي سٍؽ ؿٌبػبیی والعّب توشوض ثش اػبهی هٌشح ؿذُ دس فوبی‬
‫هؼئلِ اػت‪ .‬اص اػبهی والع ثبیذ ػبدُ‪ٍ ،‬اهح ٍ ثِ كَست هفشد ثبؿذ‪.‬‬
‫‪ .2‬هـخق وشدى ٍظبیف‪ :‬پغ اص هـخق ؿذى والعّبی ثبیؼتی دس خلَف ّش وذام اص آًْب ثِ ایي دٍ ػَال‬
‫پبػخ داسد‪ .‬ایي والع چِ اًالػبتی سا ثبیؼتی ًگْذاسی وٌذ ٍ چِ ٍظبیفی سا ثش ػْذُ داسد‪.‬‬
‫ثشخی اص اٍلبت ٍظبیف والعّبی اص خذهبتی وِ ثبیذ ثِ والعّبی ّوىبس خَد اسایِ دٌّذ هـخق هیؿَد‪ .‬ثِ‬
‫ػجبست دیگش ثبیؼتی ثِ دیگش وبستّبی وِ والع جبسی ثِ ػٌَاى ّوىبس آٍسدُ ؿذُ اػت‪ ،‬دلت وشد ٍ هـخق‬
‫ًوَد وِ والع جبسی ثشای ایٌىِ ثتَاًذ ٍظبیف خَد دس لجبل آى والعّب سا اًجبم دّذ چِ اًالػبتی سا ثبیذ‬
‫ًگْذاسی وٌذ ٍ چِ ٍظبیفی سا ثبیذ ثش ػْذُ ثگیشد‪.‬‬
‫‪ .3‬هـخق وشدى ّوىبس‪ :‬اغلت یه والع ثشای اًجبم ٍظبیف خَد توبهی اًالػبت سا دس اختیبس ًذاسد‪ .‬ثلىِ ثبیذ اص‬
‫ّوىبسی دیگش والعّبی ثشای اًجبم ایي وبس اػتفبدُ وٌذ‪ّ .‬وىبسی ثیي والعّبی ثِ یىی اص ایي دٍ كَست‬
‫اًجبم هیؿَد‪ :‬دسخَاػت اًالػبت یب دسخَاػت ثشای اًجبم وبسی‪.‬‬
‫ثشای هـخق وشدى ّوىبسّبی یه والع ّویـِ هیتَاى ایي ػَال سا پشػیذ‪ :‬آیب والع ثِ تٌْبیی هیتَاًذ‬
‫توبهی ٍظبیف هـخق ؿذُ ثشای آى سا اًجبم دّذ؟ اگش پبػخ ایي ػَال هٌفی اػت یىی اص دٍ حبلت صیش پیؾ‬
‫هیآیذ‪.‬‬
‫‪ ‬دس حبل حبهش والػی ٍجَد داسد وِ هیتَاًذ ٍظیفِ هَسد ًیبص والع جبسی سا اًجبم دّذ یب ایٌىِ هی‪-‬‬
‫تَاى چٌیي ٍظیفِای سا ثشای آى والع تؼشیف وشد‪.‬‬
‫‪ ‬ثبیذ والع یب والعّبی جذیذی ؿٌبػبیی وشد ٍ ٍظیفِ هَسد ًیبص سا ثِ آى والع یب والعّب ٍاگزاس‬
‫ًوَد‪.‬‬
‫ههدی عیٌعلی‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫‪ .4‬وبستّب سا ثِ اؿتشان ثگزاسیذ‪ :‬ثشای ثْجَد دسن توبهی وؼبًی وِ دس ًشاحی دسگیش ّؼتٌذ وبستّب ثبیذ سٍی یه‬
‫هیض ثِ ؿىل هشتجی چیذُ ؿذُ ثبؿٌذ‪ّ .‬ش دٍ وبستی وِ ثب یىذیگش ّوىبسی هیوٌٌذ ثبیذ وٌبس ّن چیذُ ؿًَذ ٍ‬
‫وبستّبیی وِ استجبًی یِ یىذیگش ًذاسًذ جذا اص ثبؿٌذ‪.‬‬
‫ایي فشایٌذ ثبیؼتی چٌذیي ثبس ثِ كَست تىشاسی ثش سٍی وبستّب تىشاس ؿًَذ‪ .‬تب صهبًی وِ هٌوئي ؿَیذ وِ ّوِ تغییش‬
‫جذیذی هَسد ًیبص ًیؼت‪.‬‬
‫پغ اص اتوبم وبس هیتَاى ثِ سٍؽّبی هختلف ًشاحی اًجبم ؿذُ سا اسصیبثی ًوَد وِ سٍؽّبی صیش اص آى جولِ ّؼتٌذ‪:‬‬
‫‪ٍ .1‬ظبیف ًَؿتِ ؿذُ ثشای تهته والعّب سا هشٍس وٌیذ‪ .‬دسخلَف ّش ٍظیفِ اص خَد ثپشػیذ وِ آیب ّوِ‬
‫اًالػبتی وِ ثشای اًجبم ایي ٍظیفِ هَسد ًیبص اػت ثشای والع دس ًظش گشفتِ ایذ؟ آیب ّوِ والعّبی ّوىبسی‬
‫وِ ثشای اًجبم ایي ٍظیفِ هَسد ًیبص اػت ثِ ػٌَاى ّوىبس والع دس وبست روش ؿذُ اػت؟‬
‫‪ .2‬دس خلَف تهته اًالػبتی وِ ثبیؼتی ثشًبهِ ثشای اًجبم وبس خَد ًگْذاسی وٌذ اص خَد ػَال ثپشػیذ ٍ هٌوئي‬
‫ؿَیذ وِ والػی ثشای ًگْذاسی ٍ هذیشیت آى اًالػبت پیؾثیٌی وشدُ ایذ‪.‬‬
‫‪ .3‬ػٌبسیَّبی اكلی اػتفبدُ اص ثشًبهِ سا دس ًظش ثگیشد ٍ فشایٌذ گبمثِگبم اًجبم آىّب سا دس ًظش ثگیشیذ‪ .‬حبل ثشای‬
‫تهته گبمّب ػَاالت صیش سا اص خَد ثپشػیذ‪:‬‬
‫‪ .a‬آیب تهته گبمّب ثِ ػٌَاى ٍظیفِ والػی پیـجیٌی ؿذُ اػت؟‬
‫‪ .b‬آیب استجبًبت الصم ثشای اًجبم ّش گبهی ثیي والعّب ثِ ػٌَاى ّوىبس ٍجَد داسد؟‬
‫ههدی عیٌعلی‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫ًکات ههن‬
‫‪ ‬دلت وٌیذ وِ والعّبی ؿٌبػبیی ؿذُ دس سٍؽ ‪ CRC‬ؿبهل ًؼخِ اٍلیِ اص والعّبی ؿٌبػبیی ؿذُ ّؼتٌذ ٍ‬
‫هوىي اػت دس هشحلِ ثؼذی یؼٌی سػن ًوَداس والع دس ‪ UML‬والعّبی ون یب صیبد ؿًَذ‪ .‬ثِ ػٌَاى هثبل‬
‫سٍاثي پذسفشصًذی دس هذل ‪ً CRC‬ـبى دادُ ًوی ؿَد دس حبلی وِ دس هذل والع ‪ UML‬ثبیؼتی ثِ كَست دلیك‬
‫هـخق ؿًَذ‪.‬‬
‫‪ ‬دلت وٌیذ وِ والعّبی ؿٌبػبیی ؿذُ دس هذل ‪ CRC‬یب حتی والعّبی هذٍى ؿذُ دس هذل والع ‪ UML‬دس‬
‫ٍالغ والعّبی ًشاحی ّؼتٌذ ٍ ثبص هوىي اػت وِ دس پیبدُػبصی ثِ دالیل هختلف ًیبص ثِ والعّبی دیگشی‬
‫ًیض ثبؿذ وِ ونون ثب تىویل ؿذى ساُ حل ؿوب ثشای هؼئلِ اسایِ ؿذُ خَد سا ًـبى هیدٌّذ‪ .‬ثِ ػٌَاى هثبل ؿوب‬
‫والػی احتیبج داسیذ وِ هتذ ‪ main‬ثشًبهِ جبٍا دس ثبؿذ ثشًبهِ اص آًجب آغبص ؿَد‪ .‬چٌیي والػی الضاهب اص تَكیفبت‬
‫اسایِ ؿذُ دس تَكیف هؼئلِ لبثل اػتخشاج ًیؼت‪.‬‬
‫‪ ‬دس یه پشٍطُ ثضسي ٍالؼی ػوال ػِ ًؼخِ والع ثِ ًبمّبی والعّبی تحلیل‪ً ،‬شاحی ٍ پیبدُػبصی ؿٌبػبیی ٍ‬
‫پیبدُػبصی هیؿًَذ وِ ثیـتش ثِ جٌجِ تىبهلی ثَدى گبمثِگبم ایجبد ساُحل ًشمافضاسی ثشای یه هؼئلِ اؿبسُ هی‪-‬‬
‫وٌذ وِ ؿبهل گبمّبی پبیِ تحلیل‪ً ،‬شاحی ٍ پیبدُػبصی اػت‪ .‬جضئیبت هشثَى ثِ آىّب خبسج اص هحتَای ایي‬
‫آهَصؽ اػت‪ .‬لٌؼب ثشای هؼبئلی وِ ؿوب دس دسع ثشًبهِػبصی پیـشفتِ ثب آىّب هَاجِ هیؿَیذ‪ ،‬هشاحل ٍ جضئیبت‬
‫اسایِ ؿذُ دس ایي هؼتٌذ ثشای فشایٌذ ًشاحی وبفیؼت‪.‬‬
‫هثال بزای رٍش ‪CRC‬‬
‫كَست هؼئلِ‬
‫یه ثشًبهِ هذیشیت صهبًجٌذی والعّبی ثشای ثشپبیی هذیشیت اسایِّب(ػویٌبس) دس یه دٍسُ فـشدُ سا دس ًظش ثگیشیذ‪ّ.‬ش‬
‫ػویٌبس ثب ؿشوت یه اػتبد ٍ چٌیي داًـجَ ثشگزاس هیؿَد‪ .‬ثشای ّش ػویٌبس یه گضاسؽ ػویٌبس(‪ )Transcript‬تْیِ هی‪-‬‬
‫ؿَد وِ ؿبهل ًوشُ هتَػي داًـجَیبى دس ػویٌبس اػت‪ .‬دس پبیبى ّش ػویٌبس اص داًـجَیبى اسصیبثی هیؿَد ٍ ًوشُای ثشای‬
‫داًـجَ دس ًظش گشفتِ هیؿَد‪ .‬ثبیؼتی ثشای ّش ػویٌبس یه یه والع(‪ )Room‬اختلبف دادُ ؿَد‪ .‬والعّب هوىي‬
‫اػت وِ دس ػبختوبىّبی هختلفی لشاس داؿتِ ثبؿٌذ‪.‬‬
‫ههدی عیٌعلی‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫ساُ حل‬
‫ثِ ًظش هیسػذ وِ ثشای هؼئلِ فَق ػجبستّبی داًـجَ‪ ،‬اػتبد‪ ،‬ػویٌبس‪،‬گضاسؽ ػویٌبس‪ ،‬والع ٍ ػبختوبى ًـبىگشّبی‬
‫هٌبػجی ثشای اػبهی والعّب ثبؿذ‪ .‬اگش فشایٌذ سا چٌذیي ثبس اجشا ًوبییذ ثِ والعّبی دیگشی ًیض هیسػیذ وِ دس اثتذا‬
‫چٌذاى ثذیْی ًیؼتٌذ‪.‬‬
‫ؿىل صیش ٍهؼیت وبستّب سا ثؼذ اص چٌذیي ثبس اجشا وشدى فشایٌذ ‪ً CRC‬ـبى هیدّذ‪ .‬لٌفب ثِ چیٌؾ وبستّب دلت وٌیذ‪.‬‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫ههدی عیٌعلی‬
‫ًوَدار کالس در ‪UML‬‬
‫ّیچ سٍؿی ثشای ًشاحی ثذٍى اثضاس ٍ صثبى هؼتٌذػبصی وبهل ًیؼت‪ .‬ایي ثخؾ ثِ تَهیح ًوَداس والع ‪ UML‬ثِ ػٌَاى‬
‫صثبى هؼتٌذػبصی ًشاحی هیپشداصین‪.‬‬
‫‪ UML‬چیست؟‬
‫‪ UML‬یه صثبى ًـبًِگزاسی‪ 8‬گشافیىی وـیذى ًوَداس‪ 9‬ثشای ًـبىدادى هفبّین هختلف ًشمافضاس اػت‪.‬اص ایي صثبى هیتَاى‬
‫ثشای وـیذى ًوَداسّبیی ثشای تَكیف فوبی هؼئلِ‪ً ،‬شاحی ًشمافضاسی ٍ حتی جضئیبت ًشمافضاس پیبدُػبصی ؿذُ اػتفبدُ‬
‫وشد‪.‬‬
‫ًوَداسّبی ‪ UML‬ثش اػبع اػتبًذاسد ًؼخِ ‪ 2‬آى ؿبهل ‪ً 13‬وَداس اػت وِ هْوتشیي آًْب ػجبستٌذ اص‪:‬‬
‫‪Class Diagram, Usecase Diagram, State Diagram, Activity Diagram‬‬
‫‪Sequence Diagram, Package Diagram, Deployment Diagram‬‬
‫ثشای سػن ًوَداسّبی ‪ Uml‬هیتَاًیذ اص اثضاسّبی صیش اػتفبدُ وٌیذ‪:‬‬
‫ًبم‬
‫‪IBM Rational‬‬
‫‪Rose‬‬
‫‪Enterprise‬‬
‫‪Architect‬‬
‫‪Visual‬‬
‫‪Paradigm‬‬
‫‪Umlet‬‬
‫پیًَذ دػتشػی‬
‫تَهیحبت‬
‫اثضاس سػوی ‪ٍ UML‬‬
‫‪www.ibm.com/software/rational/uml/products/‬‬
‫ووی لذیوی‬
‫اثضاس وبهل ٍ پیچیذُ‬
‫‪www.sparxsystems.com.au/products/ea/‬‬
‫اثضاس وبهل ٍ پیچیذُ‬
‫‪http://www.visual-paradigm.com/‬‬
‫اثضاس ػبدُ ٍ ثبصهتي‬
‫‪http://www.umlet.com/‬‬
‫ثشای ًوَداسّبی والع ایي دسع اػتفبدُ اص ًشمافضاس ‪ Umlet‬تَكیِ هیؿَد‪.‬‬
‫‪8‬‬
‫‪Notation‬‬
‫‪9‬‬
‫‪Diagram‬‬
‫ههدی عیٌعلی‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫ًوَدار کالس‬
‫ًوَداس والع ثشای ًـبىدادى والعّب‪ٍ ،‬یظگیّب ٍ استجبًبت آىّبػت‪ .‬هٌظَس اص استجبًبت ثیي والعّبی استجبًبت ایؼتب‬
‫ثیي اًَاػی اػت وِ والعّب آىّب سا ًوبیٌذگی هیوٌٌذ ًِ ساثٌِ پَیب ثیي اؿیبیی وِ اص آىوالعّب ػبختِ هیؿًَذ‪ .‬ثِ‬
‫ػٌَاى هثبل ساثٌِ دٍػتی سٍاثي ایؼتب ثیي والعّب ٍ ساثٌِ پَیب ثیي اؿیب ثِ دٍ كَست صیش ًـبى دادُ هیؿَد‪.‬‬
‫دس ایي ًوَداس ّش والع ثب یه هؼتٌیل ًـبى دادُ هیؿَد وِ ًبم والع دسٍى آى ًَؿتِ ؿذُ اػت‪ .‬ثِ ػٌَاى هثبل دس‬
‫ؿىل صیش دٍ والع دیذُ هیؿًَذ‪.‬‬
‫ههدی عیٌعلی‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫ّش والع هیتَاًذ ٍیظگیّبیی‪ 10‬داؿتِ ثبؿذ وِ ثب خٌی صیش ًبم والع هـخق هیؿَد‪ٍ .‬یظگیّبی والع دس ٍالغ‬
‫جضئیبت اًالػبتی اػت وِ والع ًگْذاسی هیوٌذ‪ .‬ثِ ػٌَاى هثبل ًوَداس صیش ًـبى دٌّذُ والع داًـجَ اػت‪.‬‬
‫وذ جبٍای ًوَداس فَق ثِ ؿشح صیش اػت‪:‬‬
‫حبل اگش سفتبسّبیی ثِ والع داًـجَ اهبفِ وٌین‪ ،‬ؿىل ًوَداس والع آى ثِ ؿشح صیش هیؿَد‪.‬‬
‫‪10‬‬
‫‪Attributes‬‬
‫ههدی عیٌعلی‬
‫وذ جبٍای هؼبدل ًوَداس فَق ثِ كَست صیش اػت‪:‬‬
‫ؿىل صیش تَكیفی اص یه ًوَداس والع ثشای یه والع تٌْب سا ًـبى هیدّذ‪:‬‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫ههدی عیٌعلی‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫ثشای ًـبى دادى سٍاثي ثیي والعّب یه یه خي ػبدُ اص ثیي آىّب اػتفبدُ هیؿَد‪ .‬ثِ ػٌَاى هثبل ؿىل صیش ساثٌِ ثیي‬
‫داًـجَ ٍ سؿتِ سا ًـبى هیدّذ‪.‬‬
‫وذ جبٍای هشثَى ثِ ایي استجبى دس والع داًـجَ ثب حزف هتذّبی ایي والع ثِ ؿىل صیش اػت‪:‬‬
‫ثش سٍی خي هشثَى ثِ ساثٌِ ثیي والعّب هیتَاى چٌذی‪ 11‬ساثٌِ سا هـخق وشد‪ .‬ثِ ػٌَاى هثبل ثشای ساثٌِ ثیي داًـجَ‬
‫ٍ سؿتِ وِ دس ثبال ًـبى دادُ ؿذُ اػت‪ّ ،‬ش داًـجَ هیتَاًذ یه یب دٍ سؿتِ داؿتِ ثبؿذ ٍ ّش سؿتِای هیتَاًذ ّیچ یب چٌذ‬
‫داًـجَ داؿتِ ثبؿذ‪.‬‬
‫‪Multiplicity‬‬
‫‪11‬‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫ههدی عیٌعلی‬
‫ثخؾ هشثَى ثِ ٍیظگیّبی والع اص لبلت صیش پیشٍی هیوٌذ‪:‬‬
‫‪ٍ visibility‬یظگی دس ٍالؼی هحذٍدُ دػتشػی ثِ ٍیظگی سا هـخق هیوٌذ وِ ؿبهل هَاسد صیش اػت‪:‬‬
‫نشانه در ‪Class Diagram‬‬
‫کلید واژه جاوا‬
‫‪-‬‬
‫‪private‬‬
‫توضیحات‬
‫دػتشػی خلَكی والع‬
‫~‬
‫‪#‬‬
‫‬‫‪protected‬‬
‫‪public‬‬
‫دػتشػی تٌْب دس ثؼتِ جبسی‬
‫دػتشػی دس ثؼتِ جبسی ٍ فشصًذاى‬
‫دػتشػی ػوَهی‬
‫‪+‬‬
‫هتذّب ٍ والعّبی اػتبتیه ثِ كَست ‪ًَ Underlined‬ؿتِ هیؿًَذ‪.‬‬
‫سٍاثي ثیي والعّب ‪ً association‬بهیذُ هیؿًَذ وِ ثِ كَست یه پبسُ خي ٍ یب یه ثشداس ًـبى دادُ هیؿًَذ‪ .‬پیىبى‬
‫ثشداسی سٍی یه ساثٌِ جْت ساثٌِ سا ًـبى هیدّذ‪ .‬اگش تٌْب پبسُ خي دٍ والع سا ثْن هتلل وٌذ‪ ،‬ثِ هؼٌبی ساثٌِ‬
‫دًٍشفِ اػت‪ً .‬مؾ ساثٌِ سا هیتَاى سٍی پبسُخي ساثٌِ ًَؿت‪.‬‬
‫ثِ ػٌَاى هثبل ًوَداس صیش سا دس ًظش ثگیشیذ‪:‬‬
‫ایي ًوَداس ًـبى هیدّذ وِ ‪:‬‬
‫‪ّ ‬ش داًـجَیی تٌْب یه سؿتِ داسد‪.‬‬
‫‪ّ ‬ش سؿتِای هیتَاًذ هبل ّیچ یب چٌذ داًـجَ ثبؿذ‪.‬‬
‫‪ ‬هیتَاى هفَْم ساثٌِ سا دس لبلت یه فؼل ثش سٍی پبسُخي ساثٌِ ًَؿت‪.‬‬
‫ههدی عیٌعلی‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫‪ ‬دس والع داًـجَ فیلذی اص ًَع سؿتِ ٍجَد داسد ٍلی دس والع سؿتِ فیلذی اص ًَع فْشػتی اص داًـجَّب ٍجَد‬
‫ًذاسد‪.‬‬
‫دس حبلی وِ ثشای ًوَداس صیش‬
‫دس والع داًـجَی فیلذی اص ًَع سؿتِ ٍجَد داسد ٍ دس والع سؿتِ فیلذی اص ًَع اسایِ یب لیؼتی اص داًـجَیبى آى سؿتِ‬
‫ٍجَد داسد‪.‬‬
‫ثشای ًـبى دادى ساثٌِ پذسفشصًذی اص یه پیىبى تَخبلی اص ػوت والع فشصًذ ثِ والع پذس اػتفبدُ هیؿَد‪.‬‬
‫دس ًوَداس ثبال والعّبی داًـجَ ٍ هذسع فشصًذ والع ؿخق ّؼتٌذ‪.‬‬
‫ههدی عیٌعلی‬
‫ؿىل صیش ًوًَِای اص ًوَداس والع هفللتشی سا ًـبى هیدّذ‪:‬‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫ههدی عیٌعلی‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫اصَل حاکن بز طزاحی کالسها‬
‫ٍلتی وِ ثِ یه هذل ًوَداس والع ًگبُ هیوٌین دًجبل چِ چیضی ّؼتین؟ چگًَِ یه ًشاحی خَة سا هیتَاى اص ًشاحی‬
‫ثذ تـخیق داد؟ ایي ثخؾ دس خلَف هؼیبسّبیی كحجت هیوٌذ وِ هیتَاًذ ثشای ایي وبس اػتفبدُ وشد‪.‬‬
‫اصل باسِبسته‪(12‬باس بَدى در عیي بستگی)‬
‫ّش والػی ثبیذ ثشای تَػؼِ ثبص ثبؿذ ٍ ثشای دػتىبسی(‪ )modification‬ثؼتِ ثبؿذ‪.‬‬
‫ؿبیذ ثتَاى گفت وِ ایي اكل هْنتشیي اكل ًشاحی والعّبع ٍ دیگش اكلّب ثیبىّبی دیگش یب تبویذاتی ثش جٌجِّبی‬
‫هختلف ایي اكل اػت‪.‬‬
‫هؼٌبی ایي اكل ػبدُ اػت‪ .‬ثبیذ ثتَاًذ هحیي ػولىشد یه والع سا ثتَى ًیبص ثِ تغییش دس پیبدُػبصی داخلی یه والع‬
‫تغییش داد(ثبصثىبسگیشی)‪ّ .‬وچٌیي ثبیذ ثتَاى سفتبسّبی جذیذی ثِ والع افضٍد یب پیبدُػبصی سفتبسّبی لجلی سا ثذٍى تغییش‬
‫ٍاػٌِ خبسجی آى سفتبسّبی تغییش داد‪ ،‬ثذٍى آًىِ خللی دس اػتفبدُ دیگش والعّبی ٍاثؼتِ ثِ ایي والع اص آى ایجبد ؿَد‪.‬‬
‫هثبل صیش سا دس ًظش ثگیشیذ‪ .‬فىش وٌیذ وِ والع وبسهٌذ تب وٌَى ثشای رخیشُػبصی وبسهٌذاى اص فبیلّب اػتفبدُ هیوشد‪.‬‬
‫اوٌَى اهىبى اتلبل ٍ رخیشُ ػبصی دس دادگبى(‪ )Database‬فشاّن ؿذُ اػت‪ .‬ثب ًشاحی صیش ٍ سػبیت ایي اكل ثذٍى‬
‫ایٌىِ تغییشی دس والع وبسهٌذ ایٌجبد ؿَد‪ ،‬هیتَاًذ اص اهىبى جذیذ اػتفبدُ وٌذ‪ .‬صیشا وِ ثِ والع ‪ concrete‬ثلىِ ثِ‬
‫یه والع ‪ abstract‬ثشای ٍظبیف رخیشُػبصی ٍاثؼتِ اػت‪.‬‬
‫)‪Open Closed Principle(OCP‬‬
‫‪12‬‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫ههدی عیٌعلی‬
‫اصل یکتایی ٍظیفه کالس‬
‫‪13‬‬
‫ّش والع ثبیذ ًَسی ًشاحی ؿَد وِ تٌْب یه دلیل ثشای تغییش آى ٍجَد داؿتِ ثبؿذ‪.‬‬
‫ثبیؼتی والعّبی ًَسی ًشاحی ؿًَذ وِ تٌْبی یه هَلفِ هـخق اص فوبی ساُ حل سا وِ ثش اػبع جٌجِ هـخلی‬
‫ؿٌبػبیی ؿذُ اػت‪ ،‬سا ًوبیٌذگی وٌٌذ‪ً .‬جبیذ یه والع جٌجِّب ٍ ٍظیفِّبی غیشهشتجي ثب هفَْهی وِ ثش اػبع آى‬
‫ؿٌبػبیی ؿذُ اػت سا ثش ػْذُ ثگیشد‪.‬‬
‫ثِ ػٌَاى هثبل اگش دس یه فوبی هؼئلِ والع داًـجَ ؿٌبػبیی ؿذُ اػت‪ .‬اگش لشاس ثبؿذ یه فبیل ‪ Xml‬حبٍی اًالػبت‬
‫داًـجَ خَاًذُ ؿَد ٍ ثش اػبع آى یه ؿی داًـجَ ػبختِ ؿَد‪ً ،‬جبیذ هتذ هشثَى ثِ خَاًذى فبیل ‪ Xml‬دس خَد والع‬
‫داًـجَ پیؾثیٌی ؿَد‪ .‬والع داًـجَ ٍظیفِ هذیشیت دادُّب ٍ سفتبس هفَْم داًـجَ سا ثش ػْذُ داسد ًِ چیض دیگش‪ .‬دس غیش‬
‫ایٌلَست دس كَست ًیبص ثِ پـتیبًی لبلت فبیل دیگشی هبًٌذ ‪ ، JSON‬ثبیذ والع داًـجَ ّن تغییش وٌذ وِ ثؼیبس ثذ اػت‪.‬‬
‫اصل جایگشیٌی لیسکَف‬
‫‪14‬‬
‫ثبیذ ثتَاى والع فشصًذ سا جبیگضیي والع پذس وشد ثذٍى اًىِ اػتفبدُوٌٌذگبى اص والع پذس ثب هـىلی هَاجِ ؿًَذ‪.‬‬
‫ایي اكل دس ٍالغ یه گًَِ خبكی اص اكل ‪ OCP‬اػت‪ .‬اص ایي سٍ ًمن ‪ LSP‬ثِ ًمن ‪ OCP‬هٌجش هیؿَد ٍ ػىغ ایي‬
‫گضاسُ كحیح ًیؼت‪.‬‬
‫ایي اكل وِ دس جبٍا اهوبی هتذّبی دس فشصًذاى ثبیؼتی اص لَاػذ خبكی ًؼجت ثِ هتذ پذس پیشٍی وٌذ اص ایي اكل ًـبت‬
‫هیگیشد‪ .‬ثِ ػٌَاى هثبل دػتشػی دس هتذ فشصًذ ًویتَاًذ هحذٍدتش اص دػتشػی هتذی وِ ‪ override‬هیوٌذ ثبؿذ صیشا دس‬
‫ایي كَست اهىبى جبیگضیٌی سفتبس پذس ثب سفتبس فشصًذ سا ثشای اػتفبدُوٌٌذگبى ثب هـىل هَاجِ هیوٌذ‪.‬‬
‫اكل لیؼىَف ثش اػبع اػتَاس اػت وِ ّش فشاخَاًی هتذی یه پیؾؿشى‪ ٍ 15‬پغؿشى‪ 16‬داسد وِ دس كَست ثشآٍسدُ ثَدى‬
‫پیؾؿشى لجل اص فشاخَاًی‪ ،‬ثؼذ اص فشاخَاًی پغؿشى ثشلشاس خَاّذ ثَد‪ .‬ثش اػبع لیىَف ّش فشاخَاّی هتذ پیبدُػبصی‬
‫‪ override‬ؿذُ اص فشصًذ سٍاثي ثیي پیؾؿشى ٍ پغؿشى فشاخَاًی هتذ پذس سا سػبیت هیوٌذ‪.‬‬
‫)‪Single Responsibility Principle(SRP‬‬
‫)‪Liskov Substation Principle(LSP‬‬
‫‪13‬‬
‫‪14‬‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫ههدی عیٌعلی‬
‫پیبدُػبصی ‪ override‬دس فشصًذ ًویتَاًذ پیؾؿشًی لَیتشی اص پیؾؿشى هتذ پذس داؿتِ ثبؿذ ٍ ّوچٌیي ًویتَاًذ‬
‫پغؿشى هؼیفتشی اص والعپذس داؿتِ ثبؿذ‪ .‬ثشای هثبل ثبال حك دػتشػی هتذ پذس جض پیؾؿشى هتذ پذس اػت ٍلی هتذ‬
‫فشصًذ ًویتَاًذ حك دػتشػی هحذٍدتشی اص چیضی وِ هتذ پذس اججبس هیوٌذ‪ ،‬داؿتِ ثبؿذ‪.‬‬
‫ّش چٌذ وِ دس خلَف ثشخی لَاػذ هبًٌذ هثبل فَق وبهپبیلش هیتَاًذ اص ثشلشاسی اكل لیؼىَف هٌوئي ؿَد ٍلی دس‬
‫خلَف پیبدُػبصی داخلی هتذّبی جبٍا یب ّش صثبى دیگشی ًویتَاًذ ثشًبهًَِیغ سا هججَس وٌذ وِ اكل لیؼىَف سا سػبیت‬
‫ًوبیذ‪ .‬ثلىِ خَد ثشًبهًَِیغ ثبیذ ٌّگبم اػتفبدُ اص ساثٌِ پذسفشصًذی ثِ ایي ًىتِ تَجِ وٌذ‪.‬‬
‫اصل ٍارًٍگی ٍابستگی‬
‫‪17‬‬
‫والعّب ثبیذ ثِ ٍاػٌِ ثیشٍى یىذیگش ٍاثؼتِ ثبؿٌذ ًِ ثِ جضئیبت پیبدُػبصی یه دیگش‬
‫ٍاػٌِّبی ثیشًٍی ًجبیذ ثِ جضئیبت پیبدُػبصی ٍاثؼتِ ثبؿذ ثلىِ جضئیبت پیبدُػبصی ثبیذ ثِ ٍاػٌِّبی ثیشًٍی ٍاثؼتِ ثبؿذ‪.‬‬
‫ایي اكل ّن ثبص یه ثیبى دیگش حبلت خبكی اص اكل ‪ OCP‬اػت ٍ دسٍالغ ساّی سا ًـبى هیدّذ وِ اص ًشیك آى هیتَاى‬
‫اص ثشلشاسی ‪ OCP‬اًویٌبى حبكل وشد‪ .‬ثِ صثبى ػبدُ ایي اكل اػتفبدُ اص ٍاػٌِّب‪ 18‬سا ثشای وبّؾ ٍاثؼتگی ًبثجب تـَیك‬
‫هیوٌذ ساُ دسػت اػتفبدُ اص آىّب سا ًـبى هیدّذ‪.‬‬
‫ثِ ٍاثؼتگی ثِ ٍاػٌِّب ثِ جبی ٍاثؼتگی ثِ پیبدُػبصی‪ٍ 19‬اثؼتگی هجشد‪ 20‬هیگَیٌذ‪ .‬اػتفبدُ اص ٍاثؼتگی هجشد تمشیجب‬
‫ّشجبیی وِ ثشًبهِ ًَیغ احؼبع هیوٌٌذ هوىي اػت وِ پیبدُػبصی دس هؼشم تغییشات آیٌذُ ثبؿذ‪ ،‬تَكیِ هیؿَد‪ .‬دس‬
‫هثبل هشثَى ثِ ‪ OCP‬دیذین وِ دس ٍالغ اػتفبدُ اص ٍاثؼتگی هجشد ثَد وِ اهىبى تغییش فشاّن ًوَدُ ثَد‪ّ .‬ش چٌذ وِ ًجبیذ دس‬
‫اػتفبدُ اص ایي اكل صیبدُسٍی وشد یؼٌی تجذیل ّوِ ٍاثؼتگیّبی پیبدُػبصی ثِ ٍاثؼتگی هجشد دس كَستی وِ دس افشاى‪-‬‬
‫گشایبًِ ثبؿذ‪ً ،‬تیجِای جض افضٍدى وبس ثشًبهًَِیغ ٍ پیچیذُوشدى ثیَْدُ ثشًبهِ ًخَاّذ داؿت‪.‬‬
‫‪15‬‬
‫‪Precondition‬‬
‫‪Postcondition‬‬
‫‪17‬‬
‫)‪Dependency Inversion Principle(DIP‬‬
‫‪18‬‬
‫‪Interfaces‬‬
‫‪19‬‬
‫‪Concrete Coupling‬‬
‫‪20‬‬
‫‪Abstract Coupling‬‬
‫‪16‬‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫ههدی عیٌعلی‬
‫ثِ ایي هَلؼیتّبیی وِ ثشًبهًَِیغ دس اػتفبدُ اص اكَل ًشاحی افشاى هیوٌذ ثب افضٍدى گضیٌِّبی اهبفِ ٍ هَلفِّبی صیبد‬
‫هَجت پیچیذگیای ًبثجب دس ثشًبهِ هیؿَد‪ ،‬ثیؾًشاحی‪ 21‬هیگَیٌذ‪.‬‬
‫اصل تفکیک ٍاسطهها‬
‫‪22‬‬
‫چٌذیي ٍاػي خبف ثْتش اص یه ٍاػي ػوَهی ثشای یه والع اػت‪.‬‬
‫ثِ ػجبست دیگش اص ًشف اػتفبدُ وٌٌذگبى ٍاػيّب‪ ،‬ثْتش اػت اػتفبدوٌٌذگبى ٍاػيّب ثِ ٍاػيّبیی ٍاثؼتِ ؿًَذ وِ اص ّوِ‬
‫هتذّبی اًْب اػتفبدُ هیوٌٌذ‪.‬‬
‫دس اكل لجلی دس خلَف اّویت ٍاثؼتگی هجشد ٍ هضیتّبی اػتفبدُ اص ٍاػٌِّب كحجت ؿذ‪ .‬توبهی هضایبی فَق صهبًی‬
‫هوىي اػت وِ ٍاػٌِّبی تؼشیف ؿذُ تب حذ هوىي خبف هٌظَسُ ًشاحی ؿذُ ثبؿٌذ ثب ثِ ػجبست دیگش اكل یىتبیی‬
‫ٍظیفِ والع یب ‪ SRP‬دس آىّب سػبیت ؿذُ ثبؿذ‪.‬‬
‫اهىبى اػتفبدُ اص ٍساثت چٌذگبًِ ثشای ٍاػٌِّب دس جبٍا وِ اهىبى تؼشیف ٍاػٌِّبی پذس گًَبگَى ثشای یه والع سا‬
‫فشاّن وشدُ اػت‪ ،‬هیتَاًذ دس سػبیت ایي اكل ووهوٌٌذُ ثبؿذ‪.‬‬
‫‪Over Design‬‬
‫)‪Interface Segregation Principle(ISP‬‬
‫‪21‬‬
‫‪22‬‬
‫ههدی عیٌعلی‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫هثبل هشثَى ثِ ‪ OCP‬دس خلَف ٍاثؼتگی هجشد سا دس ًظش ثگیشیذ‪ .‬اگش ثشای رخیشُػبصی دس فبیل ثِ تجذیل فبیل ‪ٍ Xml‬‬
‫‪ JSON‬ثِ ؿی وبهٌذ احتیبج هیداؿتین ٍ چٌیي ٍیظگیّبیی سا دس ٍاػٌِ ‪ٍ EmployeeDB‬اسد هیوشدین‪ ،‬دیگش ًوی‪-‬‬
‫تَاًؼتین پیبدُػبصی جذیذی اص آى ثشای پـتیجبًی دادگبى اسایِ دّین‪.‬‬
‫ثشای سػبیت ایي اكل ثبیؼتی ًشاحی صیش سا اًجبم داد‪.‬‬
‫درس بزًاههساسی پیشزفته به سباى جاٍا‬
‫ههدی عیٌعلی‬
‫هٌابع‬
1. Object oriented programming with java, Kirk Knoernschild, Addison
Wesley,2001
2. Object oriented programming with java , ADVANCED TOPICS, EUGENE
AGEENKO,2003,
http://cs.joensuu.fi/pages/intra/ageenko/OOP_with_Java.pdf
3. UML for Java Programmers, Robert C Martin, Prentice-Hall,2002
4. Refactoring: Improving the Design of Existing Code, Martin Fowler , Kent
Beck and others, Addison-Wesley Professional,1999
5. CRC method page on agilemodeling:
http://www.agilemodeling.com/artifacts/crcModel.htm