Assignment3.pdf

‫ﺑﺮﻧﺎﻣﻪﺳﺎزی ﭘﯿﺸﺮﻓﺘﻪ ﺟﺎوا‬
‫ﻧﯿﻢﺳﺎل اول ‪٩٣-٩٢‬‬
‫ﻣﺪرس‪ :‬ﭘﯿﻤﺎن دوداﻧ ﻪ‬
‫داﻧﺸ ﺪهی ﻣﻬﻨﺪﺳ ﮐﺎﻣﭙﯿﻮﺗﺮ‬
‫ﺗﻤﺮﯾﻦ ﺳﻮم‬
‫ﻣﻮﻋﺪ ﺗﺤﻮﯾﻞ ‪ ١٨‬آﺑﺎن ‪١٣٩٢‬‬
‫‪ .١‬ﻣﻮﻋﺪ ارﺳﺎل ﺗﻤﺮﯾﻦ ﺳﺎﻋﺖ ‪ ٨‬ﺻﺒﺢ روز ‪ ١٨‬آﺑﺎن اﺳﺖ و ﺑﻪ ﻫﯿﭻ ﻋﻨﻮان ﺗﻤﺪﯾﺪ ﻧﺨﻮاﻫﺪ ﺷﺪ‪.‬‬
‫‪ .٢‬ﺑﺎ ﻫﺮﮔﻮﻧﻪ ﺗﻘﻠﺐ ﺑﺮﺧﻮرد ﺟﺪی ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫‪ .٣‬ﻧﺎم ﮐﻼسﻫﺎ و ﺗﻮاﺑﻊ ﺑﺎﯾﺪ دﻗﯿﻘﺎ ﺑﺎ ﻧﺎم ذﮐﺮﺷﺪه در ﺗﻤﺮﯾﻦ ﯾ‬
‫ﺑﺎﺷﺪ‪.‬‬
‫‪ .۴‬ﺗﻤﺮﯾﻦ ﺑﺎﯾﺪ ﺑﻪ ﺻﻮرت ﺣﻀﻮری ﺗﺤﻮﯾﻞ داده ﺷﻮد و اﺳﺘﻔﺎده از ﮐﺎﻣﻨﺖ‪ ،‬ﻧﺤﻮه ﻧﻮﺷﺘﻦ ﮐﻼس ﻫﺎ و ﺗﻮاﺑﻊ و‬
‫ﺳﺎﺧﺘﺎر ﮐﺪ ﻧﻤﺮه ﺧﻮاﻫﺪ داﺷﺖ‪ .‬ﺑﻨﺎﺑﺮاﯾﻦ ﻧﻤﺮه ﮐﺎﻣﻞ از ﺳﯿﺴﺘﻢ داوری ﺑﻪ ﻣﻌﻨﺎی ﻧﻤﺮه ﮐﺎﻣﻞ ﻧﺒﻮده و ﻓﻘﻂ ﺑﺨﺸ‬
‫از ﻧﻤﺮه ﺷﻤﺎ ﺧﻮاﻫﺪ ﺑﻮد‪.‬‬
‫‪ .۵‬ﻫﺪف اﯾﻦ ﺗﻤﺮﯾﻦ آﺷﻨﺎﯾ ﺑﺎ وراﺛﺖ و اﺳﺘﻔﺎده ﻣﻨﺎﺳﺐ از ﮐﻼس ﻫﺎ و ﺗﻮاﺑﻊ اﺳﺖ‪ ،‬ﺑﻨﺎﺑﺮاﯾﻦ رﻋﺎﯾﺖ اﯾﻦ ﻣﻮارد‬
‫ﻧﻤﺮه ﺧﻮاﻫﺪ داﺷﺖ‪.‬‬
‫‪ .۶‬در ﺻﻮرت داﺷﺘﻦ ﻫﺮﮔﻮﻧﻪ ﻣﺸ ﻞ‪ ٬‬ﺳﻮال ﺧﻮد را ﺑﺎ ﺗ‬
‫‪١‬‬
‫ﻣﻨﺎﺳﺐ در ‪ P iazza‬ﻣﻄﺮح ﮐﻨﯿﺪ‪.‬‬
‫ﺳﺆال ‪ .١‬ﮐﺘﺎﺑﺨﺎﻧﻪ )‪ ۴٠‬ﻧﻤﺮه(‬
‫ﮐﺘﺎﺑﺨﺎﻧﻪ را ﭘﯿﺎده ﺳﺎزی ﮐﻨﯿﺪ‪ .‬ﺑﺮای ﭘﯿﺎده ﺳﺎزی ﮐﻼس ﻫﺎ ﺑﺎﯾﺪ از ﻣﻔﻬﻮم وراﺛﺖ اﺳﺘﻔﺎده‬
‫در اﯾﻦ ﺗﻤﺮﯾﻦ ﺷﻤﺎ ﺑﺎﯾﺪ ﯾ‬
‫ﮐﻨﯿﺪ‪.‬‬
‫در ﮐﺘﺎﺑﺨﺎﻧﻪ اﺷﺨﺎﺻ از ﻗﺒﯿﻞ ﻣﺘﺼﺪی ﮐﺘﺎﺑﺨﺎﻧﻪ و اﻋﻀﺎی ﮐﺘﺎﺑﺨﺎﻧﻪ وﺟﻮد دارد‪ .‬در ﮐﺘﺎﺑﺨﺎﻧﻪ ﮐﺘﺎب ﻫﺎی ﻣﺨﺘﻠﻔ از‬
‫ﻗﺒﯿﻞ ﮐﺘﺎب داﺳﺘﺎن‪ ،‬ﮐﺘﺎب ﻫﺎی ﻋﻠﻤ ‪ ،‬ﮐﺘﺎب ﻫﺎی ﭘﮋوﻫﺸ ﮐﻪ ﺷﺎﻣﻞ ﭘﺎﯾﺎن ﻧﺎﻣﻪ و ﻣﻘﺎﻟﻪ اﺳﺖ ﺑﻪ اﻋﻀﺎی ﮐﺘﺎﺑﺨﺎﻧﻪ‬
‫اﻣﺎﻧﺖ داده ﻣ ﺷﻮد‪.‬‬
‫‪class Library‬‬
‫در اﯾﻦ ﮐﻼس ﺑﺎﯾﺪ ﺗﻮاﺑﻊ زﯾﺮ ﭘﯿﺎده ﺳﺎزی ﺷﻮﻧﺪ‪:‬‬
‫;)‪public Library ( String name‬‬
‫ﮐﻼس را ﺑﺎ ﮔﺮﻓﺘﻦ ﻧﺎم ﮐﺘﺎﺑﺨﺎﻧﻪ ﻣ ﺳﺎزد‪.‬‬
‫;)‪public void addBook (Book book‬‬
‫ﯾ‬
‫ﮐﺘﺎب را ﺑﻪ ﻟﯿﺴﺖ ﮐﺘﺎﺑﻬﺎی ﮐﺘﺎﺑﺨﺎﻧﻪ اﺿﺎﻓﻪ ﻣ ﮐﻨﺪ‪.‬‬
‫ﯾ‬
‫ﮐﺘﺎب را از ﻟﯿﺴﺖ ﮐﺘﺎب ﻫﺎی ﮐﺘﺎﺑﺨﺎﻧﻪ ﺣﺬف ﻣ ﮐﻨﺪ‪.‬‬
‫;)‪public void deleteBook (Book book‬‬
‫‪public void addBorreowedBooks (Book borrowedBook , Member member ,‬‬
‫;) ‪LibraryDate borrowedDate‬‬
‫ﯾ ﮐﺘﺎب را ﺑﻪ ﻟﯿﺴﺖ ﮐﺘﺎﺑﻬﺎی اﻣﺎﻧﺖ ﮔﺮﻓﺘﻪ ﺷﺪه اﺿﺎﻓﻪ ﻣ ﮐﻨﺪ‪ .‬ﺑﻪ اﯾﻦ ﺗﺎﺑﻊ ﮐﺘﺎب اﻣﺎﻧﺖ ﮔﺮﻓﺘﻪ ﺷﺪه‪ ،‬ﺷﺨﺼ ﮐﻪ‬
‫آن را اﻣﺎﻧﺖ ﮔﺮﻓﺘﻪ و ﺗﺎرﯾﺦ اﻣﺎﻧﺖ ﮔﺮﻓﺘﻦ ﮐﺘﺎب داده ﻣ ﺷﻮد‪.‬‬
‫‪٢‬‬
‫‪public void deleteBorrowedBook (Book borrowedBook , LibraryDate‬‬
‫;) ‪borrowedBackDate‬‬
‫ﯾ ﮐﺘﺎب را از ﻟﯿﺴﺖ ﮐﺘﺎب ﻫﺎی اﻣﺎﻧﺖ ﮔﺮﻓﺘﻪ ﺷﺪه از ﮐﺘﺎﺑﺨﺎﻧﻪ ﺣﺬف ﻣﯿ ﻨﺪ‪ .‬درواﻗﻊ ﮐﺘﺎب ﺑﺮﮔﺮداﻧﺪه ﻣ ﺷﻮد‪ .‬ﺑﻪ‬
‫اﯾﻦ ﺗﺎﺑﻊ ﮐﺘﺎب اﻣﺎﻧﺖ ﮔﺮﻓﺘﻪ ﺷﺪه‪ ،‬ﺗﺎرﯾﺦ ﭘﺲ دادن ﮐﺘﺎب داده ﻣ ﺷﻮد‪.‬‬
‫;)( ‪public void getBooks‬‬
‫ﺑﺎ ﻓﺮاﺧﻮاﻧ اﯾﻦ ﺗﺎﺑﻊ ﺑﺎﯾﺪ ﻧﺎم ﮐﺘﺎب ﻫﺎی ﮐﺘﺎﺑﺨﺎﻧﻪ ﭼﺎپ ﺷﻮد‪.‬‬
‫;)( ‪public void getBorrowedBooks‬‬
‫ﺑﺎ ﻓﺮاﺧﻮاﻧ اﯾﻦ ﺗﺎﺑﻊ ﺑﺎﯾﺪ ﻧﺎم ﮐﺘﺎب ﻫﺎی اﻣﺎﻧﺖ ﮔﺮﻓﺘﻪ ﺷﺪه از ﮐﺘﺎﺑﺨﺎﻧﻪ ﺑﻪ ﺗﺮﺗﯿﺒ ﮐﻪ از ﮐﺘﺎﺑﺨﺎﻧﻪ اﻣﺎﻧﺖ ﮔﺮﻓﺘﻪ ﺷﺪه‬
‫اﻧﺪ ﭼﺎپ ﺷﻮد‪.‬‬
‫;)( ‪public void getAvailableBooks‬‬
‫ﺑﺎ ﻓﺮاﺧﻮاﻧ اﯾﻦ ﺗﺎﺑﻊ ﺑﺎﯾﺪ ﻧﺎم ﮐﺘﺎب ﻫﺎی ﻣﻮﺟﻮد در ﮐﺘﺎﺑﺨﺎﻧﻪ ﭼﺎپ ﺷﻮد‪.‬‬
‫;) ‪public void addLibrarian ( Librarian librarian‬‬
‫ﯾ‬
‫ﻣﺘﺼﺪی ﮐﺘﺎﺑﺨﺎﻧﻪ را ﺑﻪ ﻟﯿﺴﺖ ﻣﺘﺼﺪی ﻫﺎی ﮐﺘﺎﺑﺨﺎﻧﻪ اﺿﺎﻓﻪ ﻣ ﮐﻨﺪ‪.‬‬
‫;)( ‪public void getLibrarians‬‬
‫ﺑﺎ ﻓﺮاﺧﻮاﻧ اﯾﻦ ﺗﺎﺑﻊ ﻧﺎم و ﻧﺎم ﺧﺎﻧﻮادﮔ و ﺷﻤﺎره ﭘﺮﺳﻨﻠ ﻣﺘﺼﺪی ﻫﺎی ﮐﺘﺎﺑﺨﺎﻧﻪ ﺑﻪ ﺗﺮﺗﯿﺒ ﮐﻪ ﺑﻪ اﯾﻦ ﮐﻼس اﺿﺎﻓﻪ‬
‫ﺷﺪه اﻧﺪ ﺑﺎ ﯾ ﻓﺎﺻﻠﻪ ﺑﯿﻦ آﻧﻬﺎ ﭼﺎپ ﻣ ﺷﻮد‪.‬‬
‫‪٣‬‬
‫;) ‪public void deleteLibrarian ( Librarian librarian‬‬
‫ﯾ‬
‫ﻣﺘﺼﺪی ﮐﺘﺎﺑﺨﺎﻧﻪ را از ﻟﯿﺴﺖ ﻣﺘﺼﺪی ﻫﺎی ﮐﺘﺎﺑﺨﺎﻧﻪ ﺣﺬف ﻣ ﮐﻨﺪ‪.‬‬
‫;) ‪public void addMember ( Member member‬‬
‫ﯾ‬
‫ﻧﻔﺮ را ﺑﻪ اﻋﻀﺎی ﮐﺘﺎﺑﺨﺎﻧﻪ اﺿﺎﻓﻪ ﻣ ﮐﻨﺪ‪.‬‬
‫;)( ‪public void getMembers‬‬
‫ﺑﺎ ﻓﺮاﺧﻮاﻧ اﯾﻦ ﺗﺎﺑﻊ ﻧﺎم و ﻧﺎم ﺧﺎﻧﻮادﮔ و ﺷﻤﺎره ﻋﻀﻮﯾﺖ اﻋﻀﺎی ﮐﺘﺎﺑﺨﺎﻧﻪ ﺑﻪ ﺗﺮﺗﯿﺒ ﮐﻪ ﺑﻪ اﯾﻦ ﮐﻼس اﺿﺎﻓﻪ ﺷﺪه‬
‫اﻧﺪ ﺑﺎ ﯾ ﻓﺎﺻﻠﻪ ﺑﯿﻦ آﻧﻬﺎ ﭼﺎپ ﻣ ﺷﻮد‪.‬‬
‫;) ‪public void deleteMember ( Member member‬‬
‫ﯾ‬
‫ﻧﻔﺮ را از اﻋﻀﺎی ﮐﺘﺎﺑﺨﺎﻧﻪ ﺣﺬف ﻣ ﮐﻨﺪ‪.‬‬
‫‪class Book‬‬
‫در اﯾﻦ ﮐﻼس ﺑﺎﯾﺪ ﺗﻮاﺑﻊ زﯾﺮ را ﭘﯿﺎده ﺳﺎزی ﮐﻨﯿﺪ‪:‬‬
‫;) ‪public Book( String name , BookWriter writer‬‬
‫ﮐﻼس را ﺑﺎ ﮔﺮﻓﺘﻦ ﻧﺎم ﮐﺘﺎب و ﻧﺎم ﻧﻮﯾﺴﻨﺪه ﻣ ﺳﺎزد‪.‬‬
‫;)( ‪public void getWriter‬‬
‫‪۴‬‬
‫ﻧﺎم و ﻧﺎم ﺧﺎﻧﻮادﮔ ﻧﻮﯾﺴﻨﺪه را ﺑﺎ ﯾ‬
‫ﻓﺎﺻﻠﻪ ﭼﺎپ ﻣ ﮐﻨﺪ‪.‬‬
‫;)( ‪public void getMemberBorrowed‬‬
‫ﺑﺎ ﻓﺮاﺧﻮاﻧ اﯾﻦ ﺗﺎﺑﻊ ﻧﺎم و ﻧﺎم ﺧﺎﻧﻮادﮔ و ﺷﻤﺎره ﻋﻀﻮﯾﺖ ﮐﺴ ﮐﻪ ﮐﺘﺎب را اﻣﺎﻧﺖ ﮔﺮﻓﺘﻪ اﺳﺖ ﺑﺎ ﯾ‬
‫ﻣ ﺷﻮد‪.‬‬
‫ﻓﺎﺻﻠﻪ ﭼﺎپ‬
‫‪class ScienceBook‬‬
‫در اﯾﻦ ﮐﻼس ﺑﺎﯾﺪ ﺗﻮاﺑﻊ زﯾﺮ را ﭘﯿﺎده ﺳﺎزی ﮐﻨﯿﺪ‪:‬‬
‫;) ‪public ScienceBook ( String name , BookWriter writer , String scienceField‬‬
‫ﮐﻼس را ﺑﺎ ﮔﺮﻓﺘﻦ ﻧﺎم ﮐﺘﺎب و ﻧﺎم ﻧﻮﯾﺴﻨﺪه و زﻣﯿﻨﻪ ﻋﻠﻤ ﮐﺘﺎب ﻣ ﺳﺎزد‪.‬‬
‫;)( ‪public void getInfo‬‬
‫ﺑﺎ ﻓﺮاﺧﻮاﻧ اﯾﻦ ﺗﺎﺑﻊ ﺑﺎﯾﺪ ﻧﺎم ﮐﺘﺎب و ﻧﺎم ﺧﺎﻧﻮادﮔ ﻧﻮﯾﺴﻨﺪه و زﻣﯿﻨﻪ ﻋﻠﻤ ﮐﺘﺎب ﺑﺎ ﯾ‬
‫ﻓﺎﺻﻠﻪ ﺑﯿﻦ آﻧﻬﺎ ﭼﺎپ ﺷﻮد‪.‬‬
‫‪class StoryBook‬‬
‫در اﯾﻦ ﮐﻼس ﺑﺎﯾﺪ ﺗﻮاﺑﻊ زﯾﺮ را ﭘﯿﺎده ﺳﺎزی ﮐﻨﯿﺪ‪:‬‬
‫;) ‪public StoryBook ( String name , BookWriter writer , String style‬‬
‫ﮐﻼس را ﺑﺎ ﮔﺮﻓﺘﻦ ﻧﺎم ﮐﺘﺎب و ﻧﺎم ﻧﻮﯾﺴﻨﺪه و ﺳﺒ‬
‫ﮐﺘﺎب ﻣ ﺳﺎزد‪.‬‬
‫‪۵‬‬
‫;)( ‪public void getInfo‬‬
‫ﺑﺎ ﻓﺮاﺧﻮاﻧ اﯾﻦ ﺗﺎﺑﻊ ﺑﺎﯾﺪ ﻧﺎم ﮐﺘﺎب و ﻧﺎم ﺧﺎﻧﻮادﮔ ﻧﻮﯾﺴﻨﺪه و ﺳﺒ‬
‫ﮐﺘﺎب ﺑﺎ ﯾ‬
‫ﻓﺎﺻﻠﻪ ﺑﯿﻦ آﻧﻬﺎ ﭼﺎپ ﺷﻮد‪.‬‬
‫‪class Researches‬‬
‫در اﯾﻦ ﮐﻼس ﺑﺎﯾﺪ ﺗﻮاﺑﻊ زﯾﺮ را ﭘﯿﺎده ﺳﺎزی ﮐﻨﯿﺪ‪:‬‬
‫) ‪public Researches ( String name , BookWriter writer , String universityName‬‬
‫;‬
‫ﮐﻼس را ﺑﺎ ﮔﺮﻓﺘﻦ ﻧﺎم ﺗﺤﻘﯿﻖ و ﻧﺎم ﻧﻮﯾﺴﻨﺪه و ﻧﺎم داﻧﺸ ﺎﻫ ﮐﻪ ﺗﺤﻘﯿﻖ در آن اﻧﺠﺎم ﺷﺪه اﺳﺖ ﻣ ﺳﺎزد‪.‬‬
‫‪class Thesis‬‬
‫در اﯾﻦ ﮐﻼس ﺑﺎﯾﺪ ﺗﻮاﺑﻊ زﯾﺮ را ﭘﯿﺎده ﺳﺎزی ﮐﻨﯿﺪ‪:‬‬
‫‪public Thesis ( String name , BookWriter writer , String professor , String‬‬
‫) ‪universityName‬‬
‫ﮐﻼس را ﺑﺎ ﮔﺮﻓﺘﻦ ﻋﻨﻮان ﭘﺎﯾﺎن ﻧﺎﻣﻪ‪ ،‬ﻧﻮﯾﺴﻨﺪه ‪ ،‬ﻧﺎم اﺳﺘﺎدراﻫﻨﻤﺎ و ﻧﺎم داﻧﺸ ﺎﻫ ﮐﻪ ﺗﺤﻘﯿﻖ در آن اﻧﺠﺎم ﺷﺪه اﺳﺖ‬
‫ﻣ ﺳﺎزد‪.‬‬
‫;)( ‪public void getInfo‬‬
‫ﺑﺎ ﻓﺮاﺧﻮاﻧ اﯾﻦ ﺗﺎﺑﻊ ﺑﺎﯾﺪ ﻋﻨﻮان ﭘﺎﯾﺎن ﻧﺎﻣﻪ‪ ،‬ﻧﺎم و ﻧﺎم ﺧﺎﻧﻮادﮔ ﻧﻮﯾﺴﻨﺪه ‪ ،‬ﻧﺎم اﺳﺘﺎدراﻫﻨﻤﺎ و ﻧﺎم داﻧﺸ ﺎﻫ ﮐﻪ ﺗﺤﻘﯿﻖ‬
‫در آن اﻧﺠﺎم ﺷﺪه اﺳﺖ ﺑﺎ ﯾ ﻓﺎﺻﻠﻪ ﺑﯿﻦ آﻧﻬﺎ ﭼﺎپ ﺷﻮد‪.‬‬
‫‪۶‬‬
‫‪class Article‬‬
‫در اﯾﻦ ﮐﻼس ﺑﺎﯾﺪ ﺗﻮاﺑﻊ زﯾﺮ را ﭘﯿﺎده ﺳﺎزی ﮐﻨﯿﺪ‪:‬‬
‫‪public Article ( String name , BookWriter writer , String universityName ,‬‬
‫;)‪String journal , int year‬‬
‫ﮐﻼس را ﺑﺎ ﮔﺮﻓﺘﻦ ﻋﻨﻮان ﻣﻘﺎﻟﻪ‪ ،‬ﻧﻮﯾﺴﻨﺪه ‪ ،‬ﻧﺎم داﻧﺸ ﺎﻫ ﮐﻪ ﺗﺤﻘﯿﻖ در آن اﻧﺠﺎم ﺷﺪه اﺳﺖ‪ ،‬ﻧﺎم ﻣﺠﻠﻪ ای ﮐﻪ ﻣﻘﺎﻟﻪ‬
‫در آن ﭼﺎپ ﺷﺪه اﺳﺖ و ﺳﺎل ﭼﺎپ آن در ﻣﺠﻠﻪ ﻣ ﺳﺎزد‪.‬‬
‫;)( ‪public void getInfo‬‬
‫ﺑﺎ ﻓﺮاﺧﻮاﻧ اﯾﻦ ﺗﺎﺑﻊ ﺑﺎﯾﺪ ﻋﻨﻮان ﻣﻘﺎﻟﻪ ‪ ،‬ﻧﺎم و ﻧﺎم ﺧﺎﻧﻮادﮔ ﻧﻮﯾﺴﻨﺪه ‪ ،‬ﻧﺎم داﻧﺸ ﺎﻫ ﮐﻪ ﺗﺤﻘﯿﻖ در آن اﻧﺠﺎم ﺷﺪه‬
‫اﺳﺖ‪ ،‬ﻧﺎم ﻣﺠﻠﻪ ای ﮐﻪ ﻣﻘﺎﻟﻪ در آن ﭼﺎپ ﺷﺪه اﺳﺖ و ﺳﺎل ﭼﺎپ آن در ﻣﺠﻠﻪ‪ ،‬ﺑﺎ ﯾ ﻓﺎﺻﻠﻪ ﺑﯿﻦ آﻧﻬﺎ ﭼﺎپ ﺷﻮد‪.‬‬
‫‪class Member‬‬
‫در اﯾﻦ ﮐﻼس ﺑﺎﯾﺪ ﺗﻮاﺑﻊ زﯾﺮ را ﭘﯿﺎده ﺳﺎزی ﮐﻨﯿﺪ‪:‬‬
‫;) ‪public Member ( String firstName , String lastName , int memberID‬‬
‫ﮐﻼس را ﺑﺎ ﮔﺮﻓﺘﻦ ﻧﺎم و ﻧﺎم ﺧﺎﻧﻮادﮔ ﻋﻀﻮ و ﺷﻤﺎره ﻋﻀﻮﯾﺖ ﻣ ﺳﺎزد‪.‬‬
‫;)( ‪public void getBorrowedBooks‬‬
‫ﻟﯿﺴﺖ ﮐﺘﺎب ﻫﺎی اﻣﺎﻧﺖ ﮔﺮﻓﺘﻪ ﺷﺪه ﺗﻮﺳﻂ اﯾﻦ ﺷﺨﺺ را ﭼﺎپ ﻣ ﮐﻨﺪ‪.‬‬
‫;)( ‪public int getPenalty‬‬
‫‪٧‬‬
‫ﺑﺎﯾﺪ در ﻫﻨ ﺎم اﻣﺎﻧﺖ ﮔﺮﻓﺘﻦ ﯾ ﮐﺘﺎب ﺗﺎرﯾﺦ اﻣﺎﻧﺖ ﮔﺮﻓﺘﻪ ﺷﺪن آن ﮐﺘﺎب ذﺧﯿﺮه ﺷﻮد‪ .‬ﻫﺮ ﮐﺘﺎﺑ ﺑﻪ ﻣﺪت ‪ ٧‬روز‬
‫اﻣﺎﻧﺖ داده ﻣ ﺷﻮد‪ .‬اﮔﺮ ﺷﺨﺼ ﭘﺲ از ﭘﺎﯾﺎن ﻣﻬﻠﺖ ﺗﻌﯿﯿﻦ ﺷﺪه ﺑﻪ ﮐﺘﺎﺑﺨﺎﻧﻪ ﺑﺎزﮔﺮداﻧﺪ ﺑﺎﯾﺪ ﺑﻪ ازای ﻫﺮ روز ‪۵٠٠‬‬
‫ﺗﻮﻣﺎن ﺑﻪ ﮐﺘﺎﺑﺨﺎﻧﻪ ﺟﺮﯾﻤﻪ ﺑﺪﻫﺪ‪ .‬در اﯾﻦ ﺗﺎﺑﻊ ﺑﺎﯾﺪ ﻣﻘﺪار ﺟﺮﯾﻤﻪ ﺑﺎزﮔﺮداﻧﺪه ﺷﻮد‪ .‬ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ ﻣﻤ ﻦ اﺳﺖ ﭼﻨﺪ‬
‫ﮐﺘﺎب را ﭘﺲ از ﻣﻬﻠﺖ ﺗﺤﻮﯾﻞ دﻫﺪ و ﺑﺎﯾﺪ ﻣﺠﻤﻮع ﺟﺮﯾﻤﻪ ﻫﺎ ﺑﺮﮔﺮداﻧﺪه ﺷﻮد‪.‬‬
‫‪class Librarian‬‬
‫در اﯾﻦ ﮐﻼس ﺑﺎﯾﺪ ﺗﻮاﺑﻊ زﯾﺮ را ﭘﯿﺎده ﺳﺎزی ﮐﻨﯿﺪ‪:‬‬
‫;) ‪public Librarian ( String firstName , String lastName , int librarianID‬‬
‫ﮐﻼس را ﺑﺎ ﮔﺮﻓﺘﻦ ﻧﺎم و ﻧﺎم ﺧﺎﻧﻮادﮔ ﻋﻀﻮ و ﺷﻤﺎره ﮐﺎرﻣﻨﺪی ﻣ ﺳﺎزد‪.‬‬
‫‪class BookWriter‬‬
‫در اﯾﻦ ﮐﻼس ﺑﺎﯾﺪ ﺗﻮاﺑﻊ زﯾﺮ را ﭘﯿﺎده ﺳﺎزی ﮐﻨﯿﺪ‪:‬‬
‫;) ‪public BookWriter ( String firstName , String lastName‬‬
‫ﮐﻼس را ﺑﺎ ﮔﺮﻓﺘﻦ ﻧﺎم و ﻧﺎم ﺧﺎﻧﻮادﮔ ﻋﻀﻮ ﻣ ﺳﺎزد‪.‬‬
‫;)( ‪public void getWrittenBooks‬‬
‫ﻧﺎم ﮐﺘﺎب ﻫﺎی ﻧﻮﺷﺘﻪ ﺷﺪه ﺗﻮﺳﻂ اﯾﻦ ﻧﻮﯾﺴﻨﺪه را ﭼﺎپ ﻣ ﮐﻨﺪ‪.‬‬
‫;)‪public void addWrittenBooks (Book book‬‬
‫ﯾ‬
‫ﮐﺘﺎب را ﺑﻪ ﻟﯿﺴﺖ ﮐﺘﺎب ﻫﺎی ﻧﻮﺷﺘﻪ ﺷﺪه ﺗﻮﺳﻂ اﯾﻦ ﻧﻮﯾﺴﻨﺪه اﺿﺎﻓﻪ ﻣ ﮐﻨﺪ‪.‬‬
‫‪٨‬‬
‫‪class LibraryDate‬‬
‫از اﯾﻦ ﮐﻼس ﺑﺮای وارد ﮐﺮدن ﺗﺎرﯾﺦ ﮔﺮﻓﺘﻦ ﮐﺘﺎب‪ ،‬ﻣﻬﻠﺖ ﺗﺤﻮﯾﻞ ﮐﺘﺎب‪ ،‬ﻣﺤﺎﺳﺒﻪ ﺟﺮﯾﻤﻪ ﺑﺮﺣﺴﺐ دﯾﺮﮐﺮد ﺗﺎرﯾﺦ‬
‫ﺑﺎزﭘﺲ دادن ﮐﺘﺎب اﺳﺘﻔﺎده ﻣ ﺷﻮد‪.‬‬
‫در اﯾﻦ ﮐﻼس ﺑﺎﯾﺪ ﺗﻮاﺑﻊ زﯾﺮ را ﭘﯿﺎده ﺳﺎزی ﮐﻨﯿﺪ‪:‬‬
‫;)‪public LibraryDate (int day , int month , int year‬‬
‫ﮐﻼس را ﺑﺎ ﮔﺮﻓﺘﻦ روز و ﻣﺎه و ﺳﺎل ﻣ ﺳﺎزد‪.‬‬
‫ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ ﺑﺎﯾﺪ ﻫﻤﻪ ﻣﺎه ﻫﺎ را ‪ ٣٠‬روزه و درﻧﺘﯿﺠﻪ ﺳﺎل ﻫﺎ را ‪ ٣۶٠‬روزه درﻧﻈﺮ ﺑ ﯿﺮﯾﺪ‪.‬‬
‫از اﯾﻦ ﮐﻼس ﺑﺮای وارد ﮐﺮدن ﺗﺎرﯾﺦ ﮔﺮﻓﺘﻦ ﮐﺘﺎب‪ ،‬ﻣﻬﻠﺖ ﺗﺤﻮﯾﻞ ﮐﺘﺎب‪ ،‬ﻣﺤﺎﺳﺒﻪ ﺟﺮﯾﻤﻪ اﺳﺘﻔﺎده ﻣ ﺷﻮد‪.‬‬
‫ﻧ ﺎت ﻣﻮرد ﺗﻮﺟﻪ‪:‬‬
‫•وﻗﺘ ﮐﺘﺎﺑ اﺿﺎﻓﻪ ﻣ ﺷﻮد ﺣﺘﻤﺎ ﺑﺎﯾﺪ از ﻧﻮع ‪ Thesis ، Article ، StoryBook ، ScienceBook‬ﺑﺎﺷﺪ‪ .‬درواﻗﻊ‬
‫در زﻣﺎن اﺿﺎﻓﻪ ﺷﺪن ﺑﺎﯾﺪ ﻧﻮع آن ﻣﺸﺨﺺ ﺑﺎﺷﺪ‪.‬‬
‫• ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ اﯾﻦ ﺳﻮال ﺑﺮای آﺷﻨﺎﯾ ﺑﺎ ﻣﻔﻬﻮم وراﺛﺖ ﺑﻮده و ﻧﻤﺮه ﮐﺎﻣﻞ از ﺟﺎج ﮔﺮﻓﺘﻦ ﺑﻪ ﻣﻌﻨ ﻧﻤﺮه ﮐﺎﻣﻞ ﻧﯿﺴﺖ‬
‫و ﺑﺨﺶ زﯾﺎدی از ﻧﻤﺮه در ﺗﺤﻮﯾﻞ ﺣﻀﻮری ﺑﺮﺣﺴﺐ ﻧﺤﻮه اﺳﺘﻔﺎده ﻣﻨﺎﺳﺐ از وراﺛﺖ داده ﻣ ﺷﻮد‪.‬‬
‫• ﺑﺎﯾﺪ ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ ﺑﺮای ﭘﯿﺎده ﺳﺎزی ﮐﻼس ﻫﺎی ﮔﻔﺘﻪ ﺷﺪه ﺑﺎﯾﺪ از وراﺛﺖ اﺳﺘﻔﺎده ﮐﻨﯿﺪ و ﻣﻤ ﻦ اﺳﺖ ﻧﯿﺎز داﺷﺘﻪ‬
‫ﺑﺎﺷﯿﺪ ﮐﻪ ﮐﻼس ﻫﺎی ﺟﺪﯾﺪی ﺗﻌﺮﯾﻒ ﮐﻨﯿﺪ‪.‬‬
‫• در ﮐﻼس ﻫﺎی ﻣﻮﺟﻮد ﻧﯿﺰ ﻣﻤ ﻦ اﺳﺖ ﺗﻮاﺑﻊ دﯾ ﺮی ﻧﯿﺎز داﺷﺘﻪ ﺑﺎﺷﯿﺪ‪.‬‬
‫• ﺗﻮاﺑﻊ و ﮐﻼس ﻫﺎی ﮔﻔﺘﻪ ﺷﺪه ﺣﺘﻤﺎ ﺑﺎﯾﺪ ﭘﯿﺎده ﺳﺎزی ﺷﻮﻧﺪ‪.‬‬
‫• ﮐﻼس ﻫﺎی ﻧﻮﺷﺘﻪ ﺷﺪه ﺑﺎﯾﺪ ﻫﻤ در ﯾ ﻓﺎﯾﻞ ﺑﺎﺷﻨﺪ و ﻓﻘﻂ ﯾ ﮐﻼس ‪ public‬ﻣ ﺗﻮاﻧﯿﺪ داﺷﺘﻪ ﺑﺎﺷﯿﺪ)ﮐﻪ ﻫﻢ‬
‫ﻧﺎم ﻓﺎﯾﻞ ﺑﺎﯾﺪ ﺑﺎﺷﺪ(‪ .‬ﺑﻘﯿﻪ ﮐﻼس ﻫﺎ ﺑﺎﯾﺪ ‪ private‬ﺑﺎﺷﻨﺪ‪ ).‬ﮐﻼس ‪ Library‬ﺑﺎﯾﺪ ‪ public‬ﺑﻮده و ﺑﻘﯿﻪ ﮐﻼس ﻫﺎ‬
‫‪ private‬ﺑﺎﺷﻨﺪ‪( .‬‬
‫‪٩‬‬
‫ﺳﺆال ‪ .٢‬ﺑﺎزی ‪ ۶٠) Connect Four‬ﻧﻤﺮه(‬
‫در اﯾﻦ ﺗﻤﺮﯾﻦ از ﺷﻤﺎ ﺧﻮاﺳﺘﻪ ﺷﺪه اﺳﺖ ﮐﻪ ﻣﻨﻄﻖ ﺑﺎزی ‪ Connect Four‬را ﭘﯿﺎده ﺳﺎزی ﮐﻨﯿﺪ‪.‬‬
‫اﯾﻦ ﺑﺎزی‪ ،‬ﯾ ﺑﺎزی دو ﻧﻔﺮه اﺳﺖ‪ .‬ﯾ از ﺑﺎزﯾ ﻨﺎن دارای ﻣﻬﺮه ﻫﺎی ﻗﺮﻣﺰ و دﯾ ﺮی دارای ﻣﻬﺮه ﻫﺎی ﺳﯿﺎه اﺳﺖ‪.‬‬
‫ﻫﺮ ﮐﺲ ﮐﻪ ﺑﺘﻮاﻧﺪ ﺣﺪاﻗﻞ ﭼﻬﺎر ﻣﻬﺮه اش را در ﯾ ﺳﻄﺮ ﯾﺎ در ﯾ ﺳﺘﻮن ﯾﺎ در ﯾ ﻗﻄﺮ ﮐﻨﺎر ﻫﻢ ﻗﺮار دﻫﺪ ﺑﺮﻧﺪه ی‬
‫ﺑﺎزی اﺳﺖ و ﺑﺎزی ﺑﻪ ﭘﺎﯾﺎن ﻣ رﺳﺪ‪.‬‬
‫در اﯾﻦ ﺑﺎزی ﻣﻬﺮه ﻫﺎ از ﺑﺎﻻ داﺧﻞ ‪ Board‬ﺑﺎزی اﻧﺪاﺧﺘﻪ ﻣ ﺷﻮﻧﺪ‪ .‬در واﻗﻊ ﻣﻬﺮه ﻫﺎ روی ﻫﻢ ﻗﺮار ﻣ ﮔﯿﺮﻧﺪ‪ .‬در‬
‫ﺻﻮرت ﻧﯿﺎز ﻣ ﺗﻮاﻧﯿﺪ ﺑﻪ ﻟﯿﻨ زﯾﺮ ﻣﺮاﺟﻌﻪ ﮐﻨﯿﺪ‪.‬‬
‫‪http://en.wikipedia.org/wiki/Connect_four‬‬
‫در اﯾﻦ ﺗﻤﺮﯾﻦ ﺑﺮای ﺳﺎدﮔ ﮐﺎر ﻗﺴﻤﺖ ﮔﺮاﻓﯿ‬
‫ﺳﺎزی ﮐﻼس ﻫﺎ و ﺗﻮاﺑﻊ ﺗﻮﺿﯿﺢ داده ﻣ ﺷﻮد‪.‬‬
‫ﺑﺮﻧﺎﻣﻪ در اﺧﺘﯿﺎر ﺷﻤﺎ ﻗﺮار داده ﻣ ﺷﻮد‪ .‬در اداﻣﻪ ﻧﺤﻮه ی ﭘﯿﺎده‬
‫{ ‪class Game‬‬
‫)‪public Game(int row , int col‬‬
‫ﺳﺎزﻧﺪه ی ﮐﻼس ‪ Game‬اﺳﺖ ﮐﻪ ﯾ‬
‫‪ Board‬ﺑﺎ ﺗﻌﺪاد ﺳﻄﺮﻫﺎی ‪ row‬و ﺗﻌﺪاد ﺳﺘﻮن ﻫﺎی ‪ col‬ﻣ ﺳﺎزد‪.‬‬
‫)( ‪public char getTurn‬‬
‫اﯾﻦ ﻣﺘﺪ ﻣﺸﺨﺺ ﮐﻨﻨﺪه ی ﻧﻮﺑﺖ ﺑﺎزﯾ ﻦ اﺳﺖ‪ .‬اﮔﺮ ﻧﻮﺑﺖ ﻗﺮﻣﺰ ﺑﻮد ’‪ ‘r‬و اﮔﺮ ﻧﻮﺑﺖ ﺳﯿﺎه ﺑﻮد ’‪ ‘b‬ﺑﺮ ﻣ ﮔﺮداﻧﺪ‪.‬‬
‫‪١٠‬‬
‫)‪public boolean drop(int col‬‬
‫اﯾﻦ ﻣﺘﺪ ﺗﻼش ﻣ ﮐﻨﺪ ﮐﻪ ﯾ ﻣﻬﺮه را در ﺳﺘﻮن ﺷﻤﺎره ‪ col‬ﺑﯿﻨﺪازد‪ .‬اﮔﺮ آن ﺳﺘﻮن ﭘﺮ ﺑﻮد‪ False‬و در ﻏﯿﺮ اﯾﻦ ﺻﻮرت‬
‫‪ True‬ﺑﺮ ﻣ ﮔﺮداﻧﺪ و ﻣﻬﺮه را در آن ﺳﺘﻮن ﻣ اﻧﺪازد‪.‬‬
‫)( ‪public Board getBoard‬‬
‫اﯾﻦ ﻣﺘﺪ ‪ Board‬ﺑﺎزی را ﺑﺮ ﻣ ﮔﺮداﻧﺪ‪.‬‬
‫)‪public char checkWinner (int col‬‬
‫اﯾﻦ ﻣﺘﺪ ﭼ ﻣ ﮐﻨﺪ ﮐﻪ آﯾﺎ ﭘﺲ از ﮔﺬاﺷﺘﻪ ﺷﺪن ﻣﻬﺮه ای در ﺳﺘﻮن ﺷﻤﺎره ‪ col‬ﮐﺴ ﺑﺮﻧﺪه ﺷﺪه اﺳﺖ ﯾﺎ ﻧﻪ‪ .‬اﮔﺮ‬
‫ﻗﺮﻣﺰ ﺑﺮﻧﺪه ﺷﺪه ﺑﻮد ’‪ ‘r‬و اﮔﺮ ﺳﯿﺎه ﺑﺮﻧﺪه ﺷﺪه ﺑﻮد ’‪ ‘b‬و اﮔﺮ ﺗﻤﺎم ﺧﺎﻧﻪ ﻫﺎی ﺟﺪول ﭘﺮ ﺷﺪه ﺑﻮدﻧﺪ و ﮐﺴ ﺑﺮﻧﺪه ﻧﺸﺪه‬
‫ﺑﻮد ’‪ ‘n‬و در ﻏﯿﺮ اﯾﻦ ﺻﻮرت ’‪ ‘u‬ﺑﺮ ﻣ ﮔﺮداﻧﺪ‪.‬‬
‫)( ‪public void changeTurn‬‬
‫اﯾﻦ ﻣﺘﺪ ﻧﻮﺑﺖ را ﺑﻪ ﻧﻔﺮ ﺑﻌﺪی ﻣ دﻫﺪ‪.‬‬
‫}‬
‫{ ‪Class Board‬‬
‫)‪public Board (int row , int col‬‬
‫ﺳﺎزﻧﺪه ی ﮐﻼس ‪ Board‬اﺳﺖ ﮐﻪ ﯾ‬
‫‪ Cell‬اﺳﺖ‪.‬‬
‫‪ Board‬ﺑﺎ ‪ row‬ﺳﻄﺮ و ‪ col‬ﺳﺘﻮن ﻣ ﺳﺎزد‪ .‬ﻫﺮ ﺧﺎﻧﻪ ی ‪ Board‬ﯾ‬
‫)‪public void setCell (int row , int col , char type‬‬
‫اﯾﻦ ﻣﺘﺪ در ﺧﺎﻧﻪ ای ﮐﻪ در ﺳﻄﺮ ‪ row‬و ﺳﺘﻮن ‪ col‬ﻗﺮار دارد ﻣﻬﺮه ای را ﮐﻪ ﺑﺎ ﮐﺎراﮐﺘﺮ ‪ type‬ﻣﺸﺨﺺ ﺷﺪه اﺳﺖ‪،‬‬
‫ﻗﺮار ﻣ دﻫﺪ‪.‬‬
‫‪١١‬‬
‫)‪public Cell getCell (int row , int col‬‬
‫ﺧﺎﻧﻪ ای ﮐﻪ در ﺳﻄﺮ ‪ row‬و ﺳﺘﻮن ‪ col‬وﺟﻮد دارد را ﺑﺮ ﻣ ﮔﺮداﻧﺪ‪.‬‬
‫)‪public int getHeight (int col‬‬
‫اﯾﻦ ﻣﺘﺪ ﺗﻌﺪاد ﺧﺎﻧﻪ ﻫﺎی ﺧﺎﻟ در ﺳﺘﻮن ﺷﻤﺎره ‪ col‬را ﺑﺮ ﻣ ﮔﺮداﻧﺪ‪.‬‬
‫)( ‪public String toString‬‬
‫اﯾﻦ ﻣﺘﺪ ‪ Board‬را در ﻗﺎﻟﺐ ﯾ رﺷﺘﻪ ﻧﻤﺎﯾﺶ ﻣ دﻫﺪ ﺑﻪ اﯾﻦ ﺗﺮﺗﯿﺐ ﮐﻪ ﻫﺮ ﺧﺎﻧﻪ را ﺑﺎ ﯾ ﮐﺎراﮐﺘﺮ ﻧﺸﺎن ﻣ دﻫﺪ‪.‬‬
‫ﻫﺮ ﺳﻄﺮ را در ﯾ ﺧﻂ ﻧﺸﺎن ﻣ دﻫﺪ و ﺑﯿﻦ ﻫﺮ دو ﮐﺎراﮐﺘﺮ در ﯾ ﺳﻄﺮ ﯾ ‪ space‬وﺟﻮد دارد‪ .‬ﺧﺎﻧﻪ ﻫﺎی ﺧﺎﻟ‬
‫را ﺑﺎ ’‪ ‘e‬و ﺧﺎﻧﻪ ﻫﺎﯾ ﮐﻪ در آن ﻫﺎ ﻣﻬﺮه ﻫﺎی ﻗﺮﻣﺰ وﺟﻮد دارﻧﺪ ﺑﺎ ’‪ ‘r‬و ﺧﺎﻧﻪ ﻫﺎﯾ ﮐﻪ در آن ﻫﺎ ﻣﻬﺮه ﻫﺎی ﺳﯿﺎه ﻗﺮار‬
‫دارﻧﺪ ﺑﺎ ’‪ ‘b‬ﻧﻤﺎﯾﺶ ﻣ دﻫﺪ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬
‫‪eeeee‬‬
‫‪erbre‬‬
‫‪rbrbr‬‬
‫‪rbrbr‬‬
‫‪brbrb‬‬
‫}‬
‫{‪Class Cell‬‬
‫ﻫﺮ ‪ Cell‬ﯾ ‪ type‬دارد ﮐﻪ ﯾ ﮐﺎراﮐﺘﺮ اﺳﺖ و در اول ﮐﺎر ﺑﺎﯾﺪ ﺑﺎ ’‪ ‘e‬ﻣﻘﺪار دﻫ ﺷﻮد‪ .‬اﮔﺮ ﻣﻬﺮه ی ﻗﺮﻣﺰ در آن‬
‫‪ Cell‬ﻗﺮار ﮔﺮﻓﺖ ‪ type‬آن ﺑﺎﯾﺪ ﺑﺎ ’‪ ‘r‬ﻣﻘﺪار دﻫ ﺷﻮد و ﺑﺮای ﻣﻬﺮه ی ﺳﯿﺎه ‪ type‬آن ﺑﺎ ’‪ ‘b‬ﻣﻘﺪار دﻫ ﻣ ﺷﻮد‪.‬‬
‫)‪public void setType (char type‬‬
‫اﯾﻦ ﻣﺘﺪ ‪ type‬اﯾﻦ ‪ Cell‬را ﺗﻐﯿﯿﺮ ﻣ دﻫﺪ‪.‬‬
‫‪١٢‬‬
‫)( ‪public char getType‬‬
‫اﯾﻦ ﻣﺘﺪ ‪ type‬ﯾ ‪ Cell‬را ﺑﺮ ﻣ ﮔﺮداﻧﺪ‪.‬‬
‫ﮐﻼس ﻫﺎی ﻗﺴﻤﺖ ﮔﺮاﻓﯿ ﺑﺮﻧﺎﻣﻪ را ﮐﻪ در اﺧﺘﯿﺎر ﺷﻤﺎ ﻗﺮار داده ﻣ ﺷﻮد‪ ،‬در ﮐﻨﺎر اﯾﻦ ﮐﻼس ﻫﺎ ﻗﺮار دﻫﯿﺪ و‬
‫ﺑﺮﻧﺎﻣﻪ را از ﮐﻼس ‪ Main‬اﺟﺮا ﮐﻨﯿﺪ‪.‬‬
‫ﺑﺪﯾﻬ اﺳﺖ ﮐﻪ اﯾﻦ ﺗﻤﺮﯾﻦ اﻣ ﺎن ﺗﺼﺤﯿﺢ آﻧﻼﯾﻦ ﻧﺪارد‪ .‬ﺗﻤﺮﯾﻦ را ازﻃﺮﯾﻖ ﺳﺎﻣﺎﻧﻪی ﺷﺮﯾﻒ ﺟﺎج ﺛﺒﺖ ﺧﻮاﻫﯿﺪ ﮐﺮد‬
‫وﻟ ﺑﺮرﺳ در زﻣﺎن ﺗﺤﻮﯾﻞ ﺣﻀﻮری ﻣﺸﺨﺺ ﺧﻮاﻫﺪ ﺷﺪ‬
‫ﻣ ﺗﻮاﻧﯿﺪ ﺧﻮد ﺗﻮاﺑﻊ‪ ،‬ﮐﻼس ﻫﺎ و ﻣﺘﻐﯿﺮﻫﺎﯾ ﺗﻌﺮﯾﻒ ﮐﻨﯿﺪ اﻣﺎ ﺑﺎﯾﺪ ‪ private‬ﺑﺎﺷﻨﺪ‪.‬‬
‫‪١٣‬‬