تمرین سری دوم درس برنامه نویسی شیءگرا موعد ارسال :جمعه 12فروردین 1390 زوشیي سشی دٍم تشًاهِ ساصی ضیءگشا واهیاس اللَْسدی تا زطىش اص :هحوذ اغغشی ،ضادی ػثذاللْیاى ،خَیا سوٌگَیی ،ساحل ضشیفی همذم ٍ آسیي استاتی عشح جلذ :هْشاى خذاتٌذُ 1 تمرین سری دوم برنامه سازی شیءگرا مهلت تحویل :جمعه 21فروردین 2109 وکات کلی دس ایي زوشیي ضوا تشًاهِی لاتل اجشائی ًویًَیسیذ ٍ واسی وِ اًجام هیدّیذ خیادُساصی چٌذ والس اسر. هطخػاذ ولی زوشیي ّا تِ ایي ضشح اسر: نام کالس نام فایل نمره زوشیي 1 NumberString NumberString.java 25 زوشیي 2 Layer Layer.java 25 زوشیي 3 NicklesBakeryInc NicklesBakeryInc.java 55 ّ ذف اص ایي زوشیي ،آصهایص دسن ضوا اص هفَْم ضیءگشایی ٍ تىاسگیشی ایي هفَْم دس ػول اسر .خس اص ایي زوشیي ضوا تایذ تشاحسی تسَاًیذ هذلْای سادُ جْاى ٍالؼی سا تػَسذ ضیء گشا هذل وٌیذ. تشای اسسال زوشیي تِ آدسس صیش هشاجؼِ وٌیذ: http://judge.ce.sharif.edu/ زَجِ ًواییذ وِ تایذ ّش وذام اص فایلْای .javaسا تغَس جذاگاًِ اسسال ًواییذ. هَػذ زحَیل ساػر $ 11:59ظْش #سٍص جوؼِ 12فشٍسدیي 1395تَدُ ٍ تِ ّیچ ػٌَاى زوذیذ ًخَاّذ ضذ. زأخیش زا 1ساػر ،تِ اصای ّش 3دلیمِ هَجة وسش ضذى ً "1وشُ ،اص 1ساػر زا 24ساػر هَجة وسش ضذى ً "25وشُ ،اص 24ساػر زا 25ساػر ،تِ اصای ّش 2دلیمِ هَجة وسش ضذى ً "1وشُی دیگش ٍ تیي 25ساػر زا 48ساػر تاػث وسش ضذى ً "55وشُ هیضَد .زأخیش تیطسش اص 48ساػر لاتل لثَل ًیسر. زوشیي سشی دٍم تشًاهِ ساصی ضیءگشا 2 زالش تشای اسسفادُ اص هٌاتغ سیسسن هاًٌذ واسذ غذا ٍ خشیٌسش ٍ ًَضسي تِ فایل ٍ ...هٌجش تِ دسیافر ًوشُی غفش دس ایي زوشیي هیضَد. والسّا ٍ هسذّای گفسِ ضذُ دس آىّا حذاللّای الصم ّسسٌذ .یؼٌی ضوا هیزَاًیذ تشای ساحرزش ضذى خیادُ- ساصیساى یا ضیگشازش ضذى وذزاى تِ ایي والسّا هسذّای دیگشی اضافِ وٌیذ یا تِ ول زوشیي والسّای دیگشی اضافِ وٌیذٍ .لی دلر داضسِ تاضیذ وِ والسّای گفسِ ضذُ ٍ هسذّای آًْا تایذ تِ ّویي ضىل ،هَجَد تاضٌذ. سَاالذ خَد سا تا فشسسادى ایویل تِ آدسس [email protected]هغشح وٌیذ. ً حَُ زحَیل حضَسی زوشیي هسؼالثاً اػالم خَاّذ ضذ. تمریه : 1ومایش اعداد والس NumberStringسا خیادُ ساصی وٌیذ. هیخَاّین تِ جای ضىل سلوی ،تا ضىل ًَضساسی اػذاد واس وٌین .تشای ایي هٌظَس تایذ والس صیش سا خیادُساصی وٌیذ. اػذاد سا تِ غَسذ صیش تِ ضىل ًَضساسی ًوایص هیدّین: Hezar o Shast o Shesh Sad o Bist o Do Do Milliard o Haftsad o Chehel o Haft Million o Davazdah دس جذٍلی وِ دس اًسْای زوشیي آهذُ اسر ،هیزَاًیذ لیسر زوام حاالذ هوىي سا تثیٌیذ. class NumberString { ;)NumberString(long num ;)NumberString(String str ;)NumberString(NumberString ns ;)void setNumber(long num ;)NumberString add(NumberString ns ;)NumberString sub(NumberString ns ;)NumberString mult(NumberString ns ;)(long toInteger ;)(String toNumberString } تا گشفسي یه سضسِ اص اػذاد تا ووه Constructorدٍم ،ضیء سا همذاسدّی وٌیذ .هاًٌذ“1066” : Constructor سَم ،واس ودی گشفسي اص یه ضیء سا اًجام هی دّذ. هسذ setNumberػذد رخیشُ ضذُ سا تا همذاس گشفسِ ضذُ تِ سٍص هیوٌذ. هسذّای add,sub,multواس جوغ ،زفشیك ٍ ضشب سا سٍی اػذاد اًجام هی دٌّذ .زَجِ داضسِ تاضیذ وِ اًجام ّیچىذام اص ایي اػوال ًثایذ هٌجش تِ زغییش دس ػولًَذّا ضَد ٍ تایذ ًسیجِ دس یه ضیء جذیذ تشگشداًذُ ضَد. زوشیي سشی دٍم تشًاهِ ساصی ضیءگشا Constructor اٍل تا گشفسي یه ػذد ،ضیء سا همذاسدّی اٍلیِ هیوٌذ. 3 . تش هیگشداًذint ًوایص سلوی ػذد سا تِ غَسذtoInteger هسذ 0 Sefr 10 Dah 20 Bist 100 Sad 1000 Hezar 1 Yek 11 Yazdah 30 Si 200 Devist 1,000,000 Million 2 Do 12 Davazdah 40 Chehel 300 Sisad 1,000,000,000 Milliard 3 Se 13 Sizdah 50 Panjah 400 Chaharsad 4 Chahar 14 Chahardah 60 Shast 500 Pansad 5 Panj 15 Panzdah 70 Haftad 600 Sheshsad 6 Shesh 16 Shanzdah 80 Hashtad 700 Haftsad 7 Haft 17 Heftdah 90 Navad 800 Hashtsad 8 Hasht 18 Hejdah 900 Nohsad 9 Noh 19 Noozdah زوشیي سشی دٍم تشًاهِ ساصی ضیءگشا . تش هیگشداًذString ًوایص ًَضساسی سا تِ غَسذtoNumberString هسذ 4 تمریه : 2فتوشاپ متىی والس Layerسا خیادُ ساصی وٌیذ. دس ایي زوشیي تا ووه والس Layerهحیغی هطاتِ ًشمافضاس Photoshopسا تشای وطیذى ػىسّا سٍی ّن ایجاد هیوٌیذ .تشای ایي هٌظَس غفحِ ای سا دس خشٍجی تایذ ًوایص دّیذ .دس ایي غفحِ ّش ًمغِ اص غفحِ هیزَاًذ ضص همذاس هسفاٍذ داضسِ تاضذ وِ ّشهمذاس سا تِ غَسذ صیش تایذ دس خشٍجی ًوایص دّیذ: کاراکتر معادل مقدار ][Space 5 . 4 , 3 : 2 * 1 # 0 تا ووه جذٍل فَق ّشغفحِ سا تایذ تِ ایي غَسذ دس خشٍجی ًوایص دّیذ وِ واساوسش هؼادل تا همذاس آى ًمغِ سا دس خشٍجی ًوایص دّیذ ٍ تِ دًثال ّشًمغِ یه واساوسش ّ Spaceن چاج وٌیذ. لسور اغلی ایي زوشیي ،اهىاى زشویة چٌذ Layerتا ّوذیگش اسر وِ ً Blendingاهیذُ هیضَد .تشای ایٌىاس سٍش- ّای صیادی ٍجَد داسد وِ ضوا دس ایي زوشیي ضص ًَع خشواستشدزش سا خیادُساصی خَاّیذ وشد .جْر اعالػاذ تیطسش دس هَسد Blendingتِ آدسس صیش هشاجؼِ وٌیذ: http://en.wikipedia.org/wiki/Blend_modes ضص همذاس هخسلف داسد خیادُساصی هی وٌیذ .دس اداهِ زَضیح ّشوذام تشای ایي حالر سادُ آٍسدُ ضذُ اسر. دس زواهی لسور ّای تؼذی ،تِ جای Layerتاالیی اص ،topتِ جای Layerصیشیي اص ٍ bottomتِ جای Layer ًْایی وِ ضاهل ًسیجِ زشویة ایي دٍ اسر اص resultاسسفادُ هیضَد .دس فشهَلّا هٌظَس همذاس یه ًمغِ اص ایي ّLayerاسر. زوشیي سشی دٍم تشًاهِ ساصی ضیءگشا ایي ضص سٍش تشای ّشًَع ػىسی لاتل خیادُساصی ّسسٌذ ٍلی ضوا آىّا سا زٌْا تشای حالر سادُای وِ ّشًمغِ زٌْا 5 : Multiply دس ایي سٍش تا اسسفادُ اص ،topػىس زیشُزش هیضَد .تِ ایي ضىل وِ ّشاًذاصُ ًماط topخشسًگزش تاضٌذ ،ػىس ًْایی حاٍی ًسخِی زیشُزشی اص bottomخَاّذ تَد .فشهَل سادُ ضذُ تشای هحاسثِ همذاس ّشًمغِ اص resultتِ غَسذ صیش اسر: result = (top*bottom)/5 : Screen دس ایي سٍش تا اسسفادُ اص ،topػىس سٍضيزش هیضَد .تِ ایي ضىل وِ ّشاًذاصُ ًماط topسٍضيزش تاضٌذbottom ، سٍضيزش خَاّذ ضذ .فشهَل سادُ ضذُ تشای هحاسثِ همذاس ّشًمغِ اص resultتِ غَسذ صیش اسر: ]result = 5-[((5-top)*(5-bottom))/5 : Addition دس ایي سٍش همذاس topتا bottomجوغ هی ضَد. فشهَل هحاسثِ همذاس ّشًمغِ اص resultتِ غَسذ صیش اسر: result = bottom+top : Subtract دس ایي سٍش همذاس topاص bottomون هی ضَد. فشهَل هحاسثِ همذاس ّشًمغِ اص resultتِ غَسذ صیش اسر: result = bottom-top : Darken دس ایي سٍش همذاس resultتشاتش تا همذاس زیشُزش bottom ٍ topخَاّذ تَد. زوشیي سشی دٍم تشًاهِ ساصی ضیءگشا 6 فشهَل هحاسثِ همذاس ّشًمغِ اص resultتِ غَسذ صیش اسر: }result = min{bottom,top : Lighten دس ایي سٍش همذاس resultتشاتش تا همذاس سٍضيزش bottom ٍ topخَاّذ تَد. فشهَل هحاسثِ همذاس ّشًمغِ اص resultتِ غَسذ صیش اسر: }result = max{bottom,top . سا خیادُساصی وٌیذLayer والس،تا ووه زَضیحاذ فَق class Layer { Layer(int width,int height); void addPoint(int x, int y,int strength); void addLine(int x1, int y1, int len, boolean isHorizontal, int strength); void addRectangle(int x1, int y1, int x2, int y2, int strength); void addSolidCircle(int x,int y, int radius, int strength); Layer multiply(Layer l); Layer screen(Layer l); Layer add(Layer l); Layer subtract(Layer l); Layer darken(Layer l); Layer lighten(Layer l); void invert(); void clear(); String draw(); زوشیي سشی دٍم تشًاهِ ساصی ضیءگشا } 7 همذاس زوام ًماط یه غفحِی. ساصًذُی ایي والس یه غفحِی خالی سا تا اتؼادی وِ گشفسِ اسر هیساصد . اسر5 خالی تشاتش تا تشای ایي هٌظَس. یه ضىل تِ غفحِ اضافِ هیضَد، ضشٍع هیضًَذadd دس زوام هسذّای سسن ضىل وِ تا دس غَسزی وِ تشخی اص ًماط. اص همادیش لثلی هَجَد دس غفحِ ون وٌیذstrength ًُماط ضىل سا تِ اًذاص : آى ًماط سا ًادیذُ تگیشیذ ٍ تمیِ ضىل سا تىطیذ،ضىلی وِ لشاس اسر اضافِ ضَد دس غفحِ لشاس ًگشفر [new-value]=[old-value]-[strength] . یه ًمغِ سا دس هخسػاذ زؼییي ضذُ تا همذاس گفسِ ضذُ اضافِ هیوٌذaddPoint هسذ هسذ addLineیه خظ سا تا ًمغِ ضشٍع دادُ ضذُ تِ غفحِ اضافِ هیوٌذ .دس غَسذ وِ همذاس isHorizontalتشاتش تا trueتاضذ خظ سا تِ غَسذ افمی هیوطذ ٍ دس غیش ایٌػَسذ خظ سا ػوَدی هی- وطذ .عَل خظ تِ اًذاصُ lenاسر وِ دس غَسذ هثثر تَدى دس جْر هثثر هخسػاذ تایذ وطیذُ ضَد ٍ دس غَسذ هٌفی تَدى ،خالف جْر هخسػاذ ٍ دس غَسذ غفش تَدى زٌْا یه ًمغِ دس ًمغِ ضشٍع تایذ وطیذُ ضَد. هسذ addRectangleیه هسسغیل سا تِ غفحِ اضافِ هیوٌذ .دلر وٌیذ وِ هخسػاذ ًمغِ ضشٍع لضٍهاً همادیش ووسشی اص ًمغِ ًْایی ًذاسًذ ٍ هوىي اسر دٍ ًمغِ ّشًسثسی تا یىذیگش داضسِ تاضٌذ .تشای ًوًَِ اگش دس یه خظ یا سسَى تاضٌذ ،ضىلی وِ اضافِ هی ضَد یه خظ خَاّذ تَد ٍ دس غَسزی وِ ایي دٍ ًمغِ تش ّن هٌغثك تاضٌذ یه ًمغِ تِ ضىل اضافِ خَاّذ ضذ. هسذ addSolidCircleیه دایشُ سا تا هخسػاذ زؼییي ضذُ ٍ ضؼاع radiusتِ ضىل اضافِ هیوٌذ .دلر وٌیذ وِ یه دایشُ زَخش تایذ اضافِ ضَد ٍ ًماط سٍی هحیظ سا ًثایذ تِ غفحِ اضافِ وٌیذ. هسذّای زشویة دٍ غفحِ ّوگی یه Layerسا تِ ػٌَاى خاساهسش هیگیشًذ وِ ّواى Layerتاالیی هحسَب هیضَد ٍ ضیء وًٌَی وِ ایي هسذ سٍی آى غذا صدُ ضذُّ ،واى Layerصیشیي اسرً .حَُ خیادُساصی ایي هسذّا تِ ّواى زشزیثی وِ آهذُ اًذ ،دس اتسذای زوشیي زَضیح دادُ ضذُ اسر .ضوا تایذ تذٍى زغییش دس ایي دٍ ،Layerیه Layerجذیذ سا وِ حاغل اص زشویة دٍ غفحِ اسر تشگشداًیذ. هسذ invertهمذاس زوام ًماط سا هؼىَس هی وٌذ ،تا اسسفادُ اص فشهَل صیش: ً pixel$مغِای اص غفحِ ٍ resultهمذاس ًمغِ تؼذ اص اػوال هسذ اسر# result = 5-pixel هسذ clearزوام غفحِ سا خان هیوٌذ .یؼٌی همذاس زوام ًماط غفحِ سا غفش هیوٌذ. هسذ drawزوام غفحِ سا دس یه سضسِ لشاس هیدّذ ٍ تشهیگشداًذ. دس زواهی هحاسثاذ ،اگش همذاس ًمغِ ای ووسش اص غفش تذسر آهذ ،همذاس آى سا تشاتش تا غفش دس ًظش تگیشیذ .اگش همذاس ًمغِ تیطسش اص 5ضذ ،همذاس آى سا تشاتش تا 5دس ًظش تگیشیذ. زوشیي سشی دٍم تشًاهِ ساصی ضیءگشا 8 دس غَسزی وِ دٍ Layerتا ّن blendضذًذ ٍ اتؼاد هسفاٍزی داضسٌذ تایذ تِ غَسذ صیش Layerحاغل اص زشویة سا تساصیذ: ً .1ماط هطسشن سا تا فشهَل هشتَط تِ blendingهشتَط زشویة وٌیذ. ً .2ماط غیشهطسشن وِ دس یىی ّسر ٍ دس دیگشی ًیسر سا تذٍى زغییش دس ًْ Layerایی لشاس دّیذ. .3همذاس ًماعی وِ دس ّیچوذام اص ّ Layerا ًیسسٌذ سا 5دس ًظش تگیشیذ. هخسػاذ غفحِ اص تاال سور چح ضشٍع هیضَد: ً وًَِ ای اص خشٍجی حاغل اص فشاخَاًی چٌذ هسذ سسن $لسور خاییي ضىل تا هسذ addPointخیادُساصی ضذُ اسر:# زوشیي سشی دٍم تشًاهِ ساصی ضیءگشا 9 تمریه :3شرکت وانسازی ضشور Nickles Bakeryلػذ داسد سیسسن فشٍش هحػَالذ خَد سا خَدواس وٌذ .تِ ایي غَسذ وِ خشیذاس تا چٌذ جولِ خشیذ خَد سا هطخع هیوٌذ ٍ دس اًسْا هحػَل تِ ّوشاُ فاوسَس خشیذ تِ خشیذاس دادُ هیضَد. ایي ضشور تشای ضشٍع زٌْا 3هحػَل صیش سا تِ ایي سٍش تِ فشٍش هی سساًذ: چربی کالری وزن اسم محصول قیمت 1% 110 560gr Whole Grain White Bread 1$ 1.5% 100 728gr Honey Whole Wheat 2$ 0.5% 90 672gr Texas Toast 5$ دس خَاسر خشیذاس تِ ّش غَسذ هوىي اسر تاضذ ،فمظ هَاسد صیش سا دس هَسد ایي دسخَاسر هیداًین: خشیذاس اسن هحػَالذ سا تِ ّواى ضىل وِ هیداًین دس جوالزص هیآٍسد. خشیذاس دلیماً یه هحػَل سا تشای خشیذ اًسخاب هیوٌذ. دس ًْایر خشیذاس هوىي اسر ّشیه اص هحذٍدیرّای صیش سا دس هَسد سفاسش خَد اػوال وٌذٍ ،لی حذالل یىی اص ایي هحذٍدیرّا سا ػالٍُ تش ًام هحػَل تایذ اػالم وٌذ .دس غیش ایٌػَسذ تایذ خیغام «هطىل دس آهادُساصی هحػَل» ًوایص دادُ ضَد وِ دس اداهِ زَضیح آى آهذُ اسر. زوشیي سشی دٍم تشًاهِ ساصی ضیءگشا 15 مثال فرمت درخواست محدودیت Texas Toast ][product-name ًام هحػَل 1500$ [integer]$ ّضیٌِ 1000 Fat Calories [integer] Fat Calories والشی چشتی 2350 grams [integer] grams ٍصى تِ جض هحذٍدیر ًام هحػَل ،تالی هحذٍدیرّا تِ هؼٌای حذاوثش هوىي تشای آى هحذٍدیر اسر. والشی چشتی ،هیضاى دسغذ چشتی دس والشی هحػَل اسر$.دسغذ چشتی ضشتذس والشی# فشؼ وٌیذ ّوَاسُ زؼییي ایي هحذٍدیرّا دس جوالذ هثثر اسر ٍ دسخَاسر ًویزَاًذ تا جولِی هٌفی خالف ایي هحذٍدیرّا سا تخَاّذ. یه دسخَاسر هحسول هیزَاًذ تِ ضىل صیش تاضذ: I want to buy Whole Grain White Bread. I have 300$. My doctor said I can have up to 1000 Fat Calories this weekend. I think I would be staying all day here if you !don’t stop looking at me and go start making my bread دس اداهِ خس اص خشداصش دسخَاسر خشیذاس ،تا زَجِ تِ تَدجِ ضشور ساخسي هحػَل آغاص هیضَد. تشای ساخسي هحػَالذ ایي ضشور ،حیازی زشیي هادُ اٍلیِ ،خویش ًاى اسر .تشای ایي هٌظَس ایي ضشور یه هضسػِ گٌذم خشیذاسی وشدُ اسر .تشای ساخسي خویش ًاى تایذ همذاس هٌاسثی گٌذم سا اص هضسػِ تشداضر وشدُ تاضین. تشای ایي واس تا تشداضسي اص تَدجِ ضشور ،همذاسی داًِ گٌذم خشیذاسی هیوٌین .تؼذ اص واضسي داًِ گٌذم ،تا یه ّفسِ آتیاسی سٍصاًِّ ،ش داًِ گٌذم زثذیل تِ یه ضاخِ گٌذم هیضَد ٍ هیزَاًین آى سا تشداضر وٌین. تؼذ اص تشداضر همذاس هٌاسة تافِ گٌذم$دسسِ گٌذم #هیزَاًین واس اله وشدى ،وَتیذى ٍ خویش وشدى سا آغاص وٌین. تؼذ اص ایي هشحلِ خویش گٌذم آهادُ هیضَد ٍ تا زَجِ تِ هحػَل هَسد ًیاص همذاسی اص آى اسسفادُ هیضَد. تا زَجِ تِ ایٌىِ آهادُ وشدى خویش گٌذم ،عثك هشاحل گفسِ ضذُ ،یه ّفسِ عَل هیوطذ ،هوىي اسر خشیذاسی دس حیي اًجام ایي هشاحل خشیذ جذیذی اًجام دّذ .دس ایٌػَسذ خشیذاس سا دس یه غف لشاس ًویدّین ،فمظ تِ خشیذاس خیغام «هطىل دس آهادُساصی هحػَل» سا وِ دس اداهِ آهذُ اسر سا ًطاى هیدّین! پیغام «مشکل در آمادهسازی محصول»: دس غَسزی وِ خشیذاس دسخَاسر دسسسی ًذادُ تاضذ ،ضشور دس حال آهادُساصی هحػَل تشای خشیذاس تاضذ ٍ یا تَدجِ ضَد: Your request cannot be processed. تشای خیادُساصی اص یه عشح ضیءگشا ووه هیگیشین وِ دس اداهِ ًحَُ خیادُساصی آى زَضیح دادُ ضذُ اسر. زوشیي سشی دٍم تشًاهِ ساصی ضیءگشا هَجَد تشای زَلیذ زوام هحػَالذ خَاسسِ ضذُ وافی ًثاضذّ ،یچىاسی ًثایذ اًجام ضَد ٍ فمظ خیغام صیش تِ خشیذاس دادُ 11 پیاده سازی مدل شیءگرا: تشای ول ضشور والس NicklesBakeryIncسا خیادُ ساصی وٌیذ .دلر وٌیذ وِ فمظ ایي یه والس سا دس فایل publicزؼشیف وٌیذ: public class NicklesBakeryInc { ;)NicklesBakeryInc(double initialBudget ;)String processRequest(String request ;)setBudget(double budget ;)(int getBudget ;)(int getWheatFlourAmount ;)(BakeryFactory getBakeryFactory ;)(Farm getFarm ;)(BakeryTime getTime ;)void setTime(BakeryTime time } ساصًذُ ضشور سا تا یه تَدجِ اٍلیِ ساُ هیاًذاصد. هسذ processRequestدسخَاسر خشیذاس سا دس لالة یه سضسِ دسیافر هیوٌذ ٍ تا زَجِ تِ زَضیحاذ اٍل زوشیي یا فاوسَس خشیذ سا تِ خشیذاس هی دّذ یا هطىل دس خشداصش دسخَاسر سا اػالم هیوٌذً .حَُ خیادُساصی ایي هسذ دس اًسْای زوشیي دس تخص «خشداصش دسخَاسر» آهذُ اسر. زوشیي سشی دٍم تشًاهِ ساصی ضیءگشا 12 هسذّای getBudget ٍ setBudgetاهىاى دسسشسی ٍ زغییش همذاس تَدجِ ضشور سا هیدٌّذ .همذاسی وِ getBudgetتش هیگشداًذ ،وف همذاس ٍالؼی تَدجِ اسر .یؼٌی دس غَسزیىِ تَدجِ 10.5دالس تاضذ ،تایذ همذاس 10سا تشگشداًذ. هسذ getWheatFlourAmountهمذاس خویش زَلیذ ضذُ دس واسخاًِ سا تش هیگشداًذ. هسذّای getFarm ٍ getBakeryFactoryاهىاى دسسشسی تِ هضسػِ ٍ واسخاًِ ضشور سا هیدٌّذ. هسذّای getTime ٍ setTimeاهىاى دسسشسی ٍ زغییش ضیء صهاى سا هیدٌّذ. class BakeryTime { ;)(BakeryTime ;)void setBakeryTime(int time ;)(int getBakeryTime ;)(void stepTime } ساصًذُ والس ،همذاس اٍلیِ صهاى سا تا ػذد یه همذاسدّی هیوٌذ. هسذّای getBakeryTime ٍ setBakeryTimeاهىاى دسسشسی ٍ زغییش صهاى سا هیدٌّذ. هسذ stepTimeیه ٍاحذ تِ صهاى اضافِ هیوٌذ. ایي ضشور تایذ یه هضسػِ ٍ یه واسخاًِ تشای ساخر ًاى داضسِ تاضذ .تشای واسخاًِ والس BakeryFactoryسا خیادُساصی وٌیذ ٍ تشای هضسػِ والس Farmسا خیادُساصی وٌیذ. class BakeryFactory { ;)BakeryFactory(Wheat[] sheaves ;)addSheaves(Wheat[] sheaves ;)(void grind ;)(WheatFlour knead ساصًذُ والس BakeryFactoryتا گشفسي چٌذ تافِ گٌذم ضیء سا همذاس دّی اٍلیِ هیوٌذ .هوىي اسر آسگَهاى nullتاضذ ،دس ایٌػَسذ والس تذٍى ّیچ تافِی گٌذهی ساخسِ هیضَد. هسذ addSheavesچٌذ تافِ گٌذم سا تِ واسخاًِ اضافِ هیوٌذ. هسذ grindواس وَتیذى سا اًجام هیدّذٌّ .گام غذا صدى ایي هسذ زوام تافِّای گٌذم هَجَد اهىاى خویش ضذى خیذا هیوٌٌذ .اگش تؼذ اص غذا صدى ایي هسذ تافِی گٌذهی اضافِ ضذ ،ایي تافِی جذیذ اهىاى خویش ضذى زوشیي سشی دٍم تشًاهِ ساصی ضیءگشا } 13 ًذاسد ٍ تایذ تا غذا صدى ایي هسذ ،ایي اهىاى سا تِ آى اضافِ وشد .ایي هسذ خس اص ازوام واس خیغام صیش سا ًوایص هیدّذ: [sheaves-count] sheaves grinded successfully. دس غَسزی وِ زؼذاد تافِّا یه تَد تِ جای sheavesتایذ ً sheafوایص دادُ ضَد: 1 sheaf grinded successfully. تشای حاالذ دیگش زٌْا زؼذاد تافِّایی وِ وَتیذُ ضذُ اًذ سا تایذ تِ جای ] [sheaves-countلشاس دّیذ: 123 sheaves grinded successfully. هسذ kneadزوام تافِّایی وِ وَتیذُ ضذُاًذ سا خویش هیوٌذ ٍ یه ضیء اص ًَع WheatFlourتش هی- گشداًذ .تِ اصای ّش 55تافِ وَتیذُ ضذُ ،یه ٍاحذ تِ ضیء اعالق هیوٌین .تِ عَس هثال اگش 175تافِ وَتیذُ ضذُ داضسینٍ 3 ،احذ تشای همذاس WheatFlourدس ًظش هیگیشین ٍ 25تافِ وَتیذُ ضذُ دسر ًخَسدُ تالی هیهاًذ .دس غَسزی وِ ووسش اص 55تافِی وَتیذُ ضذُ ٍجَد داضر ،ایي هسذ تایذ همذاس nullسا تشگشداًذ. class WheatFlour { ;)WheatFlour(int amount ;)void setAmount(int amount ;)(int getAmount } ساصًذُ والس تا گشفسي همذاس خویش ،ضیء سا هیساصد. زوشیي سشی دٍم تشًاهِ ساصی ضیءگشا 14 هسذّای getAmount ٍ setAmountاهىاى دسسشسی ٍ زغییش همذاس خویش سا هیدٌّذ. class Farm { ;)(Farm ;)(void plow ;)boolean seed(int num ;)(boolean water ;)(Wheat[] harvest ;)(BakeryTime getTime ;)void setTime(BakeryTime time } ساصًذُ والس تا غذا صدى هسذ plowتایذ هضسػِ سا ضخن تضًذ ٍ سدس ضیء سا تساصد. هسذ plowهضسػِ سا ضخن هی صًذ .اگش هضسػِ ضخن صدُ ًطذُ تاضذ ،غذا صدى ّشوذام اص هسذّا تایذ تیزأثیش تاضذ ٍ ّش هسذ تا همذاس هخػَظ خَد سا تشای ایي ازفاق اػالم هی وٌٌذ .دس غَسزی وِ هضسػِ خش تاضذ ،ضخن صدى تی زأثیش خَاّذ تَد .زا صهاًی وِ هضسػِ تشداضر ضَد .دس غَسزی وِ هضسػِ خالی تاضذ ،ضخن صدى هَفمیر- آهیض خَاّذ تَد ٍ خیغام صیش تایذ دس یه خظ ًوایص دادُ ضَد: Farm has been plowed. هسذ seedتِ زؼذاد خَاسسِ ضذُ داًِ دس هضسػِ هیواسد ٍ دس اًسْا همذاس trueسا تش هیگشداًذ .دس غَسزیىِ هضسػِ ضخن صدُ ًطذُ تاضذ ،واسی ًویوٌذ ٍ همذاس falseسا تش هیگشداًذ .دلر وٌیذ تؼذ اص یه تاس فشاخَاًی ایي هسذ ،دیگش اهىاى اضافِ وشدى داًِ ٍجَد ًذاسد زا تؼذ اص تشداضر ٍ ضخن دٍتاسُ .زا لثل اص آى غذا صدى ایي هسذ waterهضسػِ سا آتیاسی هیوٌذّ .ش سٍص فمظ یىثاس هیزَاى هضسػِ سا آتیاسی وشد .دس غَسزی وِ هضسػِ ضخن صدُ ًطذُ تاضذ یا تیطسش اص یىثاس دس سٍص تخَاّین هضسػِ سا آتیاسی وٌین ،ایي هسذ واسی ًویوٌذ ٍ همذاس falseسا تش هیگشداًذ. هسذّای getTime ٍ setTimeاهىاى دسسشسی ٍ زغییش ضیء صهاى سا هیدٌّذ. تؼذ اص 7تاس آتیاسی ،زواهی داًِّا زثذیل تِ گٌذم هیضًَذ ٍ هیزَاى گٌذمّای زَلیذ ضذُ سا تشداضر وشد. زوشیي سشی دٍم تشًاهِ ساصی ضیءگشا هسذ واسی اًجام ًویدّذ ٍ هسذ زٌْا همذاس falseسا تش هیگشداًذّ .ضیٌِ واضر ّش داًِ 0.01$اسر. 15 هسذ harvestزوام داًِّایی وِ زثذیل تِ گٌذم ضذُاًذ سا تشداضر هیوٌذ ٍ تش هیگشداًذ .تؼذ اص تشداضر هضسػِ خالی هیضَد ٍ هیزَاى تا ضخن صدى دٍتاسُ اص هضسػِ اسسفادُ وشد .لثل اص تشداضر گٌذم ًویزَاى هضسػِ سا ضخن صد. class Wheat { ;)setID(int id ;)(int getID } هسذّای getID ٍ setIDاهىاى دسسشسی ٍ زغییش ضٌاسِی گٌذم سا هیدٌّذ .ضٌاسِی ّشگٌذم سا ٌّگام تشداضر وشدى تایذ تشاتش تا صهاى وًٌَی لشاس دّیذ. پردازش درخواست: دس ایي تخص ًحَُ خیادُساصی هسذ processRequestاص والس NicklesBakeryIncضشح دادُ هیضَد: ّش دسخَاسر تِ غَسذ یه سضسِ اص خشیذاس دسیافر هیضَد .دس غَسزی وِ ضشور دس حال آهادُساصی یه هحػَل دیگش تَد ٍیا دسخَاسر ،عثك زَضیحاذ تخص هحذٍدیرّای دسخَاسر خشیذاسً ،الع تَد یا تَدجِ ضشور وافی ًثَد تایذ خیغام «هطىل دس آهادُساصی هحػَل» تشگشداًذُ ضَد. دس غیش ایٌػَسذ خشداصش دسخَاسر آغاص هیضَد. تا زَجِ تِ اٍلَیر هحذٍدیرّا تایذ دس خَاسر تشسسی ضَد: دس غَسزیىِ سمف ّضیٌِ زَسظ خشیذاس زؼییي ضذُ تَد ،تا سمف ّضیٌِ ضشٍع وٌیذ ٍ حذاوثش هحػَلی وِ زوشیي سشی دٍم تشًاهِ ساصی ضیءگشا 16 اهىاى زَلیذ آى ٍجَد داسد سا دس ًظش تگیشیذ ٍ آًمذس زؼذاد هحػَالذ سا ون وٌیذ وِ زوام هحذٍدیرّای دیگش سػایر ضذُ تاضٌذ. دس غَسزیىِ سمف ّضیٌِ هطخع ًطذُ تَد ٍلی سمف ٍصى زؼییي ضذُ تَد ،تاص ّن حذاوثش زؼذاد هحػَالذ سا دس ًظش تگیشیذ ٍ آًمذس اص ایي زؼذاد ون وٌیذ زا هحذٍدیرّای دیگش ّن سػایر ضذُ تاضٌذ. دس اًسْا اگش ّیچ هحذٍدیسی تِ جض سمف والشی چشتی زؼییي ًطذُ تَد ،حذاوثش زؼذاد هحػَالذ سا تش اساس ایي هحذٍدیر خیذا وٌیذ. تؼذ اص خیذا وشدى زؼذاد هحػَالذ تا ووه جذٍل صیش همذاس خویش هَسد ًیاص سا هحاسثِ وٌیذ: مقدار خمیر نام محصول 20 Whole Grain White Bread 10 Honey Whole Wheat 8 Texas Toast تا زَجِ تِ همذاس خویش هَسد ًیاص ،زؼذاد داًِ ّای هَسد ًیاص سا تذسر آٍسیذ ٍ سدس تا وسش تَدجِ اص ضشور تِ ایي زؼذاد داًِ دس هضسػِ تىاسیذ .دس ًْایر زوام هشاحل گفسِ ضذُ تشای ساخر خویش سا عی وٌیذ زا خویش تِ اًذاصُ وافی ساخسِ ضَد. تشای ضثیِساصی گزس صهاى خس اص واضسي داًِّا ،دس یه حلمِ فمظ 7تاس هسذ stepTimeاص ضیء صهاى BakeryTimeغذا تضًیذ .تا ایي ًَع ضثیِساصی اهىاى ٍجَد دسخَاسر دس حیي خشداصش یه دسخَاسر اص تیي هیسٍدٍ .لی وواواى ایي لاتلیر تشسسی هیضَد .زَضیحاذ تیطسش دس اًسْای زوشیي آهذُ اسر. تؼذ اص تذسر آٍسدى خویش تِ اًذاصُ وافی ،تا وسش وشدى همذاس هَسد ًیاص تشای ساخر هحػَل اص همذاس خویش هَجَد، هحػَل ساخسِ هیضَد ٍ ّوچٌیي تِ همذاس ّضیٌِ خالع دسیافسی اص خشیذاس تِ تَدجِ ضشور اضافِ هیضَد .فاوسَس تایذ تِ غَسزی وِ دس اداهِ آهذُ اسر ،زَسظ ایي هسذ تشگشداًذُ ضَد. دس زواهی لسورّای فاوسَس تِ جای همذاس ٍالؼی تَدجِ اص وف ایي همذاس تایذ اسسفادُ وٌیذ. تا زَجِ تِ ایٌىِ سمف ّضیٌِ زؼییي ضذُ تَد یا ًِ ،دٍ ًَع فاوسَس داسین: Invoice: ][product-name] x [amount Total Price: [price]$ Invoice: ][product-name] x [amount Paid: [paid]$ Change: [change=paid-price]$ Total Price: [price]$ زوشیي سشی دٍم تشًاهِ ساصی ضیءگشا دس غَسزی وِ هحذٍدیر ّضیٌِ زؼییي ضذُ تَد ،تالی خَلی وِ تایذ تشگشداًذُ ضَد ّن تایذ دس فاوسَس دسج ضَد: 17 دس ّش دٍ ًَع فاوسَس ،تایذ تِ اًذاصُ TotalPriceتِ تَدجِ ضشور اضافِ ضَد. تشای ًوًَِ ایي دٍ فاوسَس اص خشٍجیّای سیسسن ّسسٌذ: Invoice: Texas Toast x 100 Total Price: 500$ فاوسَس تا ّضیٌِ زؼییي ضذُ: Invoice: Honey Whole Wheat x 112 Paid: 250$ Change: 26$ Total Price: 224$ توجه:1 دس زوشیي ضواسُ ،3فمظ خشٍجی ضوا تشسسی ًویضَد .زواهی هسذّای ضوا زَسظ ساهاًِ زػحیح خَدواس تِ زٌْایی تشسسی هیضًَذ زا واسوشد دسسر آًْا هطخع ضَدً .حَُی خیادُساصی هسذّا ّن دس زحَیل حضَسی تشسسی هیضًَذ. دس ًسیجِ خیادُساصی زٌْا یه هسذ وِ خشٍجی دسسر سا تذّذً ،وشُای دسیافر ًخَاّذ وشد. توجه:2 دلر وٌیذ وِ دس ّیچىذام اص زوشیيّا ًثایذ وذ ضوا ،دس ّیچ حالسی ،خغای صهاى اجشا زَلیذ وٌذ$ .خغاّایی هاًٌذ: زوشیي سشی دٍم تشًاهِ ساصی ضیءگشا 18 #NullPointerException هَفك تاضیذ
© Copyright 2026 Paperzz