Assignment2.pdf

‫ﺑﺮﻧﺎﻣﻪﺳﺎزی ﭘﯿﺸﺮﻓﺘﻪ ﺟﺎوا‬
‫ﻧﯿﻢﺳﺎل اول ‪٩٣-٩٢‬‬
‫ﻣﺪرس‪ :‬ﭘﯿﻤﺎن دوداﻧﮕﻪ‬
‫داﻧﺸ ﺪهی ﻣﻬﻨﺪﺳ ﮐﺎﻣﭙﯿﻮﺗﺮ‬
‫ﺗﻤﺮﯾﻦ دوم‬
‫ﻣﻮﻋﺪ ﺗﺤﻮﯾﻞ ‪ ۴‬آﺑﺎن ‪١٣٩٢‬‬
‫‪ .١‬ﺗﻤﺮﯾﻦ ﺑﻪ ﻫﯿﭻ ﻋﻨﻮان ﺗﻤﺪﯾﺪ ﻧﺨﻮاﻫﺪ ﺷﺪ‪.‬‬
‫‪ .٢‬ﺑﺎ ﻫﺮﮔﻮﻧﻪ ﺗﻘﻠﺐ ﺑﺮﺧﻮرد ﺟﺪی ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫‪ .٣‬ﻧﺎم ﮐﻼسﻫﺎ و ﺗﻮاﺑﻊ ﺑﺎﯾﺪ دﻗﯿﻘﺎ ﺑﺎ ﻧﺎم ذﮐﺮﺷﺪه در ﺗﻤﺮﯾﻦ ﯾ‬
‫ﺑﺎﺷﺪ‪.‬‬
‫‪ .۴‬در ﺻﻮرت داﺷﺘﻦ ﻫﺮﮔﻮﻧﻪ ﻣﺸ ﻞ‪ ٬‬ﺳﻮال ﺧﻮد را ﺑﺎ ﺗﮓ ﻣﻨﺎﺳﺐ در ‪ P iazza‬ﻣﻄﺮح ﮐﻨﯿﺪ‪.‬‬
‫‪١‬‬
‫ﺳﺆال ‪ .١‬ﻣﺎﺗﺮﯾﺲ )‪ ٣٠‬اﻣﺘﯿﺎز(‬
‫در اﯾﻦ ﺗﻤﺮﯾﻦ ﻣ ﺧﻮاﻫﯿﻢ ﺑﻪ ﮐﻤ‬
‫دﻫﯿﻢ‪:‬‬
‫ﮐﻼس ﯾ‬
‫ﻣﺎﺗﺮﯾﺲ ‪ ٣‬در ‪ ٣‬را ﻣﺪلﺳﺎزی ﮐﻨﯿﻢ و ﺗﻮاﺑﻊ ﻣﺨﺘﻠﻔ را روی آن اﻧﺠﺎم‬
‫‪public class Matrix‬‬
‫;) ‪public Matrix ( double [ ][ ] elements‬‬
‫ﯾ‬
‫آراﯾﻪ ‪ ٣‬در ‪ ٣‬از ورودی ﻣ ﮔﯿﺮد و ﮐﻼس را ﻣ ﺳﺎزد‪.‬‬
‫;)( ‪public Matrix‬‬
‫ﮐﻼس را ﻣ ﺳﺎزد و ﻫﻤﻪی ﺧﺎﻧﻪﻫﺎی آن را ‪ ٠‬در ﻧﻈﺮ ﻣ ﮔﯿﺮد‪.‬‬
‫;) ‪public Matrix add( Matrix other‬‬
‫ﯾ ﻣﺎﺗﺮﯾﺲ دﯾ ﺮ در ورودی ﻣ ﮔﯿﺮد و آن را ﺑﺎ ﻣﺎﺗﺮﯾﺲ ﻣﻮﺟﻮد ﺟﻤﻊ ﻣ ﮐﻨﺪ‪ ،‬ﺳﭙﺲ ﺣﺎﺻﻞ را در ﯾ‬
‫ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫ﻣﺎﺗﺮﯾﺲ ﺟﺪﯾﺪ‬
‫;) ‪public Matrix sub( Matrix other‬‬
‫ﯾ ﻣﺎﺗﺮﯾﺲ دﯾ ﺮ در ورودی ﻣ ﮔﯿﺮد و آن را از ﻣﺎﺗﺮﯾﺲ ﻣﻮﺟﻮد ﮐﻢ ﻣ ﮐﻨﺪ‪ ،‬ﺳﭙﺲ ﺣﺎﺻﻞ را در ﯾ‬
‫ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫ﻣﺎﺗﺮﯾﺲ ﺟﺪﯾﺪ‬
‫;) ‪public Matrix elementMult ( Matrix other‬‬
‫ﯾ ﻣﺎﺗﺮﯾﺲ دﯾ ﺮ در ورودی ﻣ ﮔﯿﺮد و آن را ﺑﺎ ﻣﺎﺗﺮﯾﺲ ﻣﻮﺟﻮد ﻧﻈﯿﺮ ﺑﻪ ﻧﻈﯿﺮ ﺿﺮب ﻣ ﮐﻨﺪ‪) ،‬ﯾﻌﻨ ﻫﺮ دراﯾﻪ ﻣﺎﺗﺮﯾﺲ‬
‫ﺧﺮوﺟ ﺿﺮب دراﯾﻪﻫﺎی ﻣﻌﺎدﻟﺶ در ﻣﺎﺗﺮﯾﺲ ﻣﻮﺟﻮد و ﻣﺎﺗﺮﯾﺲ ورودی اﺳﺖ( ﺳﭙﺲ ﺣﺎﺻﻞ را در ﯾ ﻣﺎﺗﺮﯾﺲ‬
‫ﺟﺪﯾﺪ ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫‪٢‬‬
‫;) ‪public Matrix matrixMult ( Matrix other‬‬
‫ﯾ ﻣﺎﺗﺮﯾﺲ دﯾ ﺮ در ورودی ﻣ ﮔﯿﺮد و آن را در ﻣﺎﺗﺮﯾﺲ ﻣﻮﺟﻮد ﺿﺮب ﻣﺎﺗﺮﯾﺴ ﻣ ﮐﻨﺪ‪ ،‬ﺳﭙﺲ ﺣﺎﺻﻞ را در ﯾ‬
‫ﻣﺎﺗﺮﯾﺲ ﺟﺪﯾﺪ ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫;)( ‪public Matrix opposite‬‬
‫دراﯾﻪﻫﺎی ﻣﺎﺗﺮﯾﺲ را ﻗﺮﯾﻨﻪ ﻣ ﮐﻨﺪ و آن را در ﯾ‬
‫ﻣﺎﺗﺮﯾﺲ ﺟﺪﯾﺪ ﺑﺮﻣ ﮔﺮداﻧﺪ‪) .‬ﺧﻮد ﻣﺎﺗﺮﯾﺲ را ﻋﻮض ﻧﻤ ﮐﻨﺪ‪(.‬‬
‫;)( ‪public Matrix transpose‬‬
‫ﺗﺮاﻧﻬﺎده ﻣﺎﺗﺮﯾﺲ را در ﯾ‬
‫ﻣﺎﺗﺮﯾﺲ ﺟﺪﯾﺪ ﺑﺮﻣ ﮔﺮداﻧﺪ‪) .‬ﺧﻮد ﻣﺎﺗﺮﯾﺲ را ﻋﻮض ﻧﻤ ﮐﻨﺪ‪(.‬‬
‫;)( ‪public double determinant‬‬
‫دﺗﺮﻣﯿﻨﺎن ﻣﺎﺗﺮﯾﺲ را ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫;)( ‪public Matrix inverse‬‬
‫در ﺻﻮرت وﺟﻮد ﻣﻌﮑﻮس ﻣﺎﺗﺮﯾﺲ را در ﯾ ﻣﺎﺗﺮﯾﺲ ﺟﺪﯾﺪ ﺑﺮﻣ ﮔﺮداﻧﺪ )ﺧﻮد ﻣﺎﺗﺮﯾﺲ را ﻋﻮض ﻧﻤ ﮐﻨﺪ( و اﮔﺮ‬
‫ﻣﺎﺗﺮﯾﺲ ﻣﻌﮑﻮس ﻧﺪاﺷﺖ )دﺗﺮﻣﯿﻨﺎن آن ‪ ٠‬ﺑﻮد )راﻫﻨﻤﺎﯾﯽ ﺳﻮال را ﺣﺘﻤﺎ ﺑﺨﻮاﻧﯿﺪ!(( ‪ null‬ﺑﺮﮔﺮداﻧﺪ‪ .‬ﺑﺮای ﻣﻌﮑﻮس‬
‫ﮐﺮدن ﻣﺎﺗﺮﯾﺲ ﻣﯿﺘﻮاﻧﯿﺪ از ﻟﯿﻨﮏ زﯾﺮ ﮐﻤ ﺑ ﯿﺮﯾﺪ‪:‬‬
‫‪http://www.wikihow.com/Inverse-a-3X3-Matrix‬‬
‫;)( ‪public String toString‬‬
‫ﻣﺎﺗﺮﯾﺲ را در ﺳﻪ ﺳﻄﺮ ﺑﻪ ﺻﻮرت روﺑﺮو در ﯾ‬
‫رﺷﺘﻪ ﺑﺮﮔﺮداﻧﺪ‪:‬‬
‫‪٣‬‬
‫‪3.0 2.1 1.0‬‬
‫‪2.0 1.0 0.0‬‬
‫‪0.0 2.0 4.0‬‬
‫ﺑﯿﻦ ﻫﺮ دو ﻋﺪد ﯾ ﻓﺎﺻﻠﻪ و در آﺧﺮ ﻫﺮ ﺳﻪ ﺧﻂ ﯾ ﮐﺎراﮐﺘﺮ آﺧﺮ ﺧﻂ )‪ (\n‬ﺑﺎﺷﺪ‪) .‬ﺣﻮاﺳﺘﺎن ﺑﺎﺷﺪ ﮐﻪ آﺧﺮ ﺧﻄﻮط‬
‫ﻓﺎﺻﻠﻪ اﺿﺎﻓﻪ ﻧﺒﺎﺷﺪ‪) (.‬دﻗﺖ اﻋﺸﺎر ﻫﻤﺎﻧ ﺑﺎﺷﺪ ﮐﻪ ﺑﻪ ﺻﻮرت ﭘﯿﺶﻓﺮض در ﺟﺎوا وﺟﻮد دارد‪(.‬‬
‫راﻫﻨﻤﺎﯾﯽ‪ :‬ﻫﻨﮕﺎم ﮐﺎر ﮐﺮدن ﺑﺎ اﻋﺪاد اﻋﺸﺎری ) ‪ float‬و ‪ ( double‬ﺑﺮای ﭼ ﮐﺮدن اﯾﻦ ﮐﻪ ﯾ ﻋﺪد ﺑﺮاﺑﺮ ‪ ٠‬اﺳﺖ‬
‫ﯾﺎ ﺧﯿﺮ ﺑﻬﺘﺮ اﺳﺖ ﺑﻪ ﺟﺎی اﯾﻦ ﮐﻪ آن را ﺑﺎ ﻋﻤ ﺮ == ﺑﺎ ‪ ٠‬ﻣﻘﺎﯾﺴﻪ ﮐﻨﯿﻢ ﭼ ﮐﻨﯿﻢ ﮐﻪ آﯾﺎ آن ﻋﺪد در ﺑﺎزهای ﻧﺰدﯾ ‪٠‬‬
‫ﻫﺴﺖ ﯾﺎ ﻧﻪ‪ .‬ﯾﻌﻨ ﺑﻪ ﺟﺎی‪:‬‬
‫;‪double a‬‬
‫‪.‬‬
‫‪.‬‬
‫‪.‬‬
‫} … { )‪if(a == 0‬‬
‫ﺑﻨﻮﯾﺴﯿﻢ‪:‬‬
‫} … { )‪if(a > -0.000001 && a < 0.000001‬‬
‫ﭼﻮن در ﮐﺎر ﺑﺎ اﯾﻦ ﻣﻘﺎدﯾﺮ ﻣﻤ ﻦ اﺳﺖ دﻗﺖ ﮐﻢ ﺑﺎﺷﺪ و ﻋﺪد ﺷﻤﺎ ﭘﺲ از ﻣﺤﺎﺳﺒﺎت دﻗﯿﻘﺎ ‪ ٠‬ﻧﺸﻮد‪) .‬اﯾﻦ ﮐﺎر را‬
‫ﻣ ﺗﻮان ﺑﺮای ﻫﺮ ﻋﺪد ﻏﯿﺮﺻﻔﺮی ﻫﻢ اﻧﺠﺎم داد‪(.‬‬
‫‪۴‬‬
‫ﺳﺆال ‪ .٢‬ﺑﺎزی ﺑﯿﻨﮕﻮ )دﺑﺮﻧﺎ( )‪ ٣٠‬اﻣﺘﯿﺎز(‬
‫ﻣ ﺧﻮاﻫﯿﻢ ﺑﺎزی ﺑﯿﻨﮕﻮ را ﺷﺒﯿﻪ ﺳﺎزی ﮐﻨﯿﻢ‪ ،‬اﯾﻦ ﺑﺎزی ﺑﻪ اﯾﻦ ﺻﻮرت اﺳﺖ ﮐﻪ ﻫﺮ ﺑﺎزﯾ ﻦ ﭼﻨﺪ ﮐﺎرت ‪ ٣‬در ‪ ۵‬دارد ﮐﻪ‬
‫روی ﻫﺮ ﺧﺎﻧﻪی ﮐﺎرتﻫﺎ ﯾ از اﻋﺪاد ‪ ١‬ﺗﺎ ‪ ٩٠‬ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ‪ .‬در ﻫﺮ ﻣﺮﺣﻠﻪ ﺑﻪ ﺻﻮرت رﻧﺪوم ﯾ ﻋﺪد ﺧﻮاﻧﺪه‬
‫ﻣ ﺷﻮد و ﺑﺎزﯾ ﻨﺎن ﺑﺎﯾﺪ در ﺻﻮرت وﺟﻮد اﯾﻦ ﻋﺪد در ﮐﺎرتﻫﺎی ﺧﻮد آن را ﻋﻼﻣﺖ ﺑﺰﻧﻨﺪ‪ ،‬اوﻟﯿﻦ ﺑﺎزﯾ ﻨ ﮐﻪ ﯾ‬
‫ردﯾﻒ ‪۵‬ﺗﺎﯾﯽ از ﮐﺎرتﻫﺎﯾﺶ ﭘﺮ ﺷﻮد ﺑﺮﻧﺪه ﺑﺎزی اﺳﺖ‪ .‬ﮐﻼسﻫﺎی اﯾﻦ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﺻﻮرت زﯾﺮ اﺳﺖ‪:‬‬
‫‪public class Bingo‬‬
‫;) ‪public Bingo ( Player [ ] players‬‬
‫ﮐﻼس را ﺑﺎ ﮔﺮﻓﺘﻦ ﯾ‬
‫آراﯾﻪ از ﺑﺎزﯾ ﻦﻫﺎ ﻣ ﺳﺎزد‪.‬‬
‫;) ‪public String play(int number‬‬
‫ﺗﺎﺑﻊ اﺻﻠ اﺟﺮای ﺑﺎزی اﺳﺖ ﮐﻪ ﻋﺪد ﺧﻮاﻧﺪهﺷﺪه را ﺑﻪ ﻋﻨﻮان ورودی ﻣ ﮔﯿﺮد ﺑﺮای ﻫﻤﻪ ﺑﺎزﯾ ﻨﺎن اﮔﺮ اﯾﻦ ﻋﺪد در‬
‫ﮐﺎرتﻫﺎﯾﺸﺎن وﺟﻮد داﺷﺖ آن را ﻋﻼﻣﺖ ﻣ زﻧﺪ و در ﺻﻮرﺗ ﮐﻪ ﮐﺴ ﺑﺮﻧﺪه ﺷﻮد ﻧﺎم ﺑﺮﻧﺪه را ﺑﺮﻣ ﮔﺮداﻧﺪ در ﻏﯿﺮ‬
‫اﯾﻨﺼﻮرت ﯾ رﺷﺘﻪ ﺧﺎﻟ )””( ﺑﺮﻣ ﮔﺮداﻧﺪ‪) .‬اﮔﺮ ﭼﻨﺪ ﺑﺎزﯾ ﻦ ﻫﻤﺰﻣﺎن ﺑﺮﻧﺪه ﺷﻮﻧﺪ ﯾ رﺷﺘﻪ ﺷﺎﻣﻞ اﺳﻢ ﻫﻤﻪی‬
‫آنﻫﺎ را ﺑﺎ ﯾ ﻓﺎﺻﻠﻪ ﺑﺮﻣ ﮔﺮداﻧﺪ‪ ،‬ﺑﻪ ﻃﻮر ﻣﺜﺎل‪:‬‬
‫”‪”Player1 Player2 Player3‬‬
‫(‬
‫‪class Player‬‬
‫;) ‪public Player ( String name , Card[ ] cards‬‬
‫ﮐﻼس ﺑﺎزﯾ ﻦ را ﺑﺎ ﮔﺮﻓﺘﻦ ﻧﺎم ﺑﺎزﯾ ﻦ و آراﯾﻪای از ﮐﺎرتﻫﺎ ﻣ ﺳﺎزد‪.‬‬
‫;)( ‪public String getName‬‬
‫ﻧﺎم ﺑﺎزﯾ ﻦ را ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫;)( ‪public Card[ ] getCards‬‬
‫‪۵‬‬
‫ﮐﺎرتﻫﺎی ﺑﺎزﯾ ﻦ را ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫;)( ‪public boolean isWinner‬‬
‫ﭼ‬
‫ﻣ ﮐﻨﺪ ﮐﻪ آﯾﺎ ﺑﺎزﯾ ﻦ ﺑﺮﻧﺪه ﺷﺪه اﺳﺖ ﯾﺎ ﻧﻪ؟‬
‫;) ‪public void markNumber (int number‬‬
‫ﯾ‬
‫ﻋﺪد در ورودی ﻣ ﮔﯿﺮد و در ﻫﻤﻪی ﮐﺎرتﻫﺎی ﺑﺎزﯾ ﻦ در ﺻﻮرت وﺟﻮد آن را ﻋﻼﻣﺖ ﻣ زﻧﺪ‪.‬‬
‫‪class Card‬‬
‫;) ‪public Card(int[ ][ ] numbers‬‬
‫ﯾ‬
‫آراﯾﻪی ‪ ٣‬در ‪ (int[٣][۵]) ۵‬از اﻋﺪاد ﻣ ﮔﯿﺮد و ﮐﺎرت را ﺑﺎ آن ﭘﺮ ﻣ ﮐﻨﺪ‪.‬‬
‫;) ‪public int getNumber (int row , int column‬‬
‫ﻋﺪد درون ﺧﺎﻧﻪی ﻣﺸﺨﺺﺷﺪه در ورودی را ﺑﺮﻣ ﮔﺮداﻧﺪ‪) .‬ﺷﻤﺎره ﺳﻄﺮﻫﺎ و ﺳﺘﻮنﻫﺎی ﻫﺮ ﮐﺎرت از ﯾ‬
‫ﻣ ﺷﻮﻧﺪ(‬
‫ﺷﺮوع‬
‫;) ‪public boolean isMarked (int row , int column‬‬
‫اﮔﺮ ﺧﺎﻧﻪی ﻣﺸﺨﺺﺷﺪه در ورودی ﻋﻼﻣﺖزدهﺷﺪه ﺑﺎﺷﺪ ‪ true‬ﺑﺮﻣ ﮔﺮداﻧﺪ‪) .‬ﺷﻤﺎره ﺳﻄﺮﻫﺎ و ﺳﺘﻮنﻫﺎی ﻫﺮ ﮐﺎرت‬
‫از ﯾ ﺷﺮوع ﻣ ﺷﻮﻧﺪ(‬
‫;) ‪public void markNumber (int number‬‬
‫اﮔﺮ ﻋﺪد دادهﺷﺪه در ورودی در ﮐﺎرت ﺑﺎﺷﺪ آن را ﻋﻼﻣﺖ ﻣ زﻧﺪ‪ .‬ﯾ‬
‫‪۶‬‬
‫ﻧﻤﻮﻧﻪ ﺗﺎﺑﻊ ‪ main‬ﺑﺮای ﺳﻮال‪:‬‬
public static void main( String [ ] args)
{
int[ ][ ] numbers1 = {{10 , 30, 45, 66, 82} , {3, 25, 11, 63, 78} ,
{22 , 4, 13, 46, 90}};
Card[ ] cards1 = new Card [1];
cards1 [0] = new Card( numbers1 );
int[ ][ ] numbers2 = {{19 , 53, 61, 32, 6}, {11 , 44, 56, 73, 81} ,
{78 , 31, 69, 9, 23}};
Card[ ] cards2 = new Card [1];
cards2 [0] = new Card( numbers2 );
Player [ ] players = new Player [2];
players [0] = new Player (" Player1 ", cards1 );
players [1] = new Player (" Player2 ", cards2 );
Bingo bingo = new Bingo( players );
Random random = new Random ();
String winners = "";
while ( winners . equals (""))
{
int number = random . nextInt (90) + 1;
winners = bingo.play( number );
}
System .out. println ( winners );
}
٧
‫ﺳﺆال ‪ .٣‬داﻧﺸ ﺎه ﺷﺮﯾﻒ )‪ ۴٠‬اﻣﺘﯿﺎز(‬
‫در اﯾﻦ ﺗﻤﺮﯾﻦ ﺑﺎﯾﺪ ﯾ‬
‫داﻧﺸ ﺎه را ﭘﯿﺎدهﺳﺎزی ﮐﻨﯿﻢ‪ .‬ﺷﺮح ﮐﻼسﻫﺎ و ﺗﻮاﺑﻊ آن ﺑﻪ ﺻﻮرت زﯾﺮ اﺳﺖ‪:‬‬
‫‪public class University‬‬
‫;)‪public University ( String name‬‬
‫ﮐﻼس را ﺑﺎ ﮔﺮﻓﺘﻦ ﻧﺎم داﻧﺸ ﺎه ﻣ ﺳﺎزد‪.‬‬
‫;)( ‪public University‬‬
‫ﮐﻼس را ﻣ ﺳﺎزد و ﻧﺎم آن را ﺑﻪ ﺻﻮرت ﭘﯿﺶﻓﺮض ”‪ “Sharif‬ﻗﺮار ﻣ دﻫﺪ‪.‬‬
‫;)( ‪public String getName‬‬
‫ﻧﺎم داﻧﺸ ﺎه را ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫;)( ‪public Department [ ] getDepartments‬‬
‫داﻧﺸ ﺪهﻫﺎی داﻧﺸ ﺎه را در ﯾ‬
‫آراﯾﻪ ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫داﻧﺸﺠﻮﻫﺎی داﻧﺸ ﺎه از در ﯾ‬
‫آراﯾﻪ ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫;)( ‪public Student [ ] getStudents‬‬
‫;)( ‪public EbneSina getEbneSina‬‬
‫ﺳﺎﺧﺘﻤﺎن اﺑﻦﺳﯿﻨﺎی داﻧﺸ ﺎه را ﺑﺮﻣ ﮔﺮداﻧﺪ!‬
‫‪٨‬‬
public void addDepartment ( Department department );
.‫داﻧﺸ ﺪه ﻣ ﮔﯿﺮد و آن را ﺑﻪ داﻧﺸ ﺪهﻫﺎی داﻧﺸ ﺎه اﺿﺎﻓﻪ ﻣ ﮐﻨﺪ‬
‫ﯾ‬
public void addStundent ( Student student );
.‫داﻧﺸﺠﻮ ﻣ ﮔﯿﺮد و آن را ﺑﻪ داﻧﺸﺠﻮﻫﺎی داﻧﺸ ﺎه اﺿﺎﻓﻪ ﻣ ﮐﻨﺪ‬
‫ﯾ‬
class Department
public Department ( String name);
.‫ﮐﻼس را ﺑﺎ ﮔﺮﻓﺘﻦ ﻧﺎم داﻧﺸ ﺪه ﻣ ﺳﺎزد‬
public String getName ();
.‫ﻧﺎم داﻧﺸ ﺪه را ﺑﺮﻣ ﮔﺮداﻧﺪ‬
public Professor [ ] getProfessors ();
.‫اﺳﺘﺎدﻫﺎی داﻧﺸ ﺪه را ﺑﺮﻣ ﮔﺮداﻧﺪ‬
public Course [ ] getCourses ();
.‫درسﻫﺎی داﻧﺸ ﺪه را ﺑﺮﻣ ﮔﺮداﻧﺪ‬
public Room[ ] getRooms ();
٩
‫اﺗﺎقﻫﺎی داﻧﺸ ﺪه را ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫;)( ‪public Professor getManager‬‬
‫رﯾﯿﺲ داﻧﺸ ﺪه را ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫;) ‪public void addProfessor ( Professor professor‬‬
‫ﯾ‬
‫اﺳﺘﺎد ﻣ ﮔﯿﺮد و آن را ﺑﻪ اﺳﺘﺎدﻫﺎی داﻧﺸ ﺪه اﺿﺎﻓﻪ ﻣ ﮐﻨﺪ‪.‬‬
‫) ‪public boolean addCourse ( Course course , Room room , Professor professor‬‬
‫ﯾ درس را ﺑﻪ ﻫﻤﺮاه اﺗﺎق )ﻟﺰوﻣ ﻧﺪارد از اﺗﺎقﻫﺎی ﺧﻮد داﻧﺸ ﺪه ﺑﺎﺷﺪ‪ ،‬ﻣ ﺗﻮاﻧﺪ از اﺗﺎقﻫﺎی داﻧﺸ ﺪهﻫﺎی دﯾ ﺮ و‬
‫ﯾﺎ ﺳﺎﺧﺘﻤﺎن اﺑﻦﺳﯿﻨﺎ ﺑﺎﺷﺪ( و اﺳﺘﺎدش )اﺳﺘﺎد ﺣﺘﻤﺎ ﯾ از اﺳﺎﺗﯿﺪ ﺧﻮد داﻧﺸ ﺪه اﺳﺖ( ﻣ ﮔﯿﺮد و آن را ﺑﻪ درسﻫﺎی‬
‫داﻧﺸ ﺪه اﺿﺎﻓﻪ ﻣ ﮐﻨﺪ‪ .‬اﮔﺮ اﺗﺎق در ﺳﺎﻋﺖ آن درس ﺧﺎﻟ ﺑﻮد ﺑﺎﯾﺪ درس اﺿﺎﻓﻪ ﺷﻮد و ‪ true‬ﺑﺮﮔﺮداﻧﺪه ﺷﻮد و در‬
‫ﺻﻮرت ﺗﺪاﺧﻞ داﺷﺘﻦ ﺑﺎ درسﻫﺎی دﯾ ﺮ آن اﺗﺎق درس ﻧﺒﺎﯾﺪ اﺿﺎﻓﻪ ﺷﻮد و ‪ false‬ﺑﺮﮔﺮداﻧﺪه ﺷﻮد‪) .‬ﺑﺎ اﺳﺘﺎد در اﯾﻦ‬
‫ﻗﺴﻤﺖ ﮐﺎری ﻧﺪارﯾﻢ! وﻟ ﺑﺎﯾﺪ در ورودی ﮔﺮﻓﺘﻪ ﺷﻮد‪ .‬ﻣﺮﺑﻮط ﺑﻪ ﻗﺴﻤﺖ اﻣﺘﯿﺎزی ﺳﻮال ﻣ ﺷﻮد‪(.‬‬
‫;)‪public void addRoom (Room room‬‬
‫ﯾ‬
‫اﺗﺎق ﻣ ﮔﯿﺮد و آن را ﺑﻪ اﺗﺎقﻫﺎی داﻧﺸ ﺪه اﺿﺎﻓﻪ ﻣ ﮐﻨﺪ‪.‬‬
‫;) ‪public void setManager ( Professor manager‬‬
‫ﯾ اﺳﺘﺎد ﻣ ﮔﯿﺮد و آن را ﺑﻪ ﻋﻨﻮان رﯾﯿﺲ داﻧﺸ ﺪه ﺗﻌﯿﯿﻦ ﻣ ﮐﻨﺪ‪) .‬ﻟﺰوﻣ ﻧﺪارد ﮐﻪ از اﺳﺘﺎدﻫﺎی ﻫﻤﺎن داﻧﺸ ﺪه‬
‫ﺑﺎﺷﺪ‪(.‬‬
‫‪class Professor‬‬
‫;)‪public Professor ( String name‬‬
‫‪١٠‬‬
‫ﮐﻼس را ﺑﺎ ﮔﺮﻓﺘﻦ ﻧﺎم اﺳﺘﺎد ﻣ ﺳﺎزد‪.‬‬
‫;)( ‪public String getName‬‬
‫ﻧﺎم اﺳﺘﺎد را ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫‪class Student‬‬
‫;)‪public Student ( String name , int id‬‬
‫ﮐﻼس را ﺑﺎ ﮔﺮﻓﺘﻦ ﻧﺎم داﻧﺸﺠﻮ و ﺷﻤﺎره داﻧﺸﺠﻮﯾﯽ ﻣ ﺳﺎزد‪.‬‬
‫;)( ‪public String getName‬‬
‫ﻧﺎم داﻧﺸﺠﻮ را ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫;)( ‪public int getID‬‬
‫ﺷﻤﺎره داﻧﺸﺠﻮﯾﯽ داﻧﺸﺠﻮ را ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫;) ‪public boolean register ( Course course‬‬
‫داﻧﺸﺠﻮ را در درس داده ﺷﺪه ﺛﺒﺖ ﻧﺎم ﻣ ﮐﻨﺪ‪ .‬اﮔﺮ ﻇﺮﻓﯿﺖ درس ﭘﺮ ﺷﺪه ﺑﺎﺷﺪ ‪ false‬ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫;) ‪public void withdraw ( Course course‬‬
‫داﻧﺸﺠﻮ را از ﻟﯿﺴﺖ درس دادهﺷﺪه ﺣﺪف ﻣ ﮐﻨﺪ‪.‬‬
‫‪١١‬‬
class Course
public Course ( String name , String weekday , int startTime , int finishTime
, int capacity );
.‫ ﺳﺎﻋﺖ ﭘﺎﯾﺎن و ﻇﺮﻓﯿﺘﺶ ﻣ ﺳﺎزد‬،‫ ﺳﺎﻋﺖ ﺷﺮوع‬،‫ روز ﻫﻔﺘﻪ‬،‫درس را ﺑﺎ ﮔﺮﻓﺘﻦ ﻧﺎم درس‬
public String getName ();
.‫ﻧﺎم درس را ﺑﺮﻣ ﮔﺮداﻧﺪ‬
public String getWeekday ();
.‫روز ﻫﻔﺘﻪ درس را ﺑﺮﻣ ﮔﺮداﻧﺪ‬
public int getStartTime ();
.‫ﺳﺎﻋﺖ ﺷﺮوع درس را ﺑﺮﻣ ﮔﺮداﻧﺪ‬
public int getFinishTime ();
.‫ﺳﺎﻋﺖ ﭘﺎﯾﺎن درس را ﺑﺮﻣ ﮔﺮداﻧﺪ‬
public int getEmptyPositions ();
.‫ﺗﻌﺪاد ﺑﺎﻗ ﻣﺎﻧﺪه از ﻇﺮﻓﯿﺖ درس را ﺑﺮﻣ ﮔﺮداﻧﺪ‬
class Room
public Room(int id);
١٢
‫ﮐﻼس را ﺑﺎ ﮔﺮﻓﺘﻦ ﺷﻤﺎره اﺗﺎق ﻣ ﺳﺎزد‪.‬‬
‫;)( ‪public int getID‬‬
‫ﺷﻤﺎره اﺗﺎق را ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫‪class EbneSina‬‬
‫;)( ‪public EbneSina‬‬
‫ﮐﻼس را ﻣ ﺳﺎزد‪.‬‬
‫;)( ‪public Room[ ] getRooms‬‬
‫اﺗﺎقﻫﺎی ﺳﺎﺧﺘﻤﺎن اﺑﻦﺳﯿﻨﺎ را در ﯾ‬
‫آراﯾﻪ ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫;)‪public void addRoom (Room room‬‬
‫ﯾ‬
‫اﺗﺎق ﻣ ﮔﯿﺮد و آن را ﺑﻪ ﺳﺎﺧﺘﻤﺎن اﺑﻦﺳﯿﻨﺎ اﺿﺎﻓﻪ ﻣ ﮐﻨﺪ‪.‬‬
‫راﻫﻨﻤﺎﯾﯽ‪ :‬ﺑﺮای ﻧﮕﻪداری داﻧﺸ ﺪهﻫﺎ‪ ،‬اﺗﺎقﻫﺎ‪ ،‬درسﻫﺎ و داﻧﺸﺠﻮﻫﺎ از آراﯾﻪ اﺳﺘﻔﺎده ﻧﮑﻨﯿﺪ )از ‪ ArrayList‬ﯾﺎ‬
‫ﮐﻼسﻫﺎی ﻣﺸﺎﺑﻪ اﺳﺘﻔﺎده ﮐﻨﯿﺪ‪ (.‬ﭼﻮن آنﻫﺎ ﻗﺎﺑﻠﯿﺖ اﺿﺎﻓﻪ ﮐﺮدن ﻋﻀﻮ ﻧﺪارﻧﺪ‪ .‬ﻓﻘﻂ ﻫﻨﮕﺎم ﺗﻮﻟﯿﺪ ﺧﺮوﺟ ﻣﺘﺪﻫﺎ‬
‫آنﻫﺎ را ﺑﻪ آراﯾﻪ ﺗﺒﺪﯾﻞ ﮐﻨﯿﺪ‪) .‬در ‪ Arraylist‬ﺑﺮای اﯾﻦ ﮐﺎر ﻣﺘﺪ )(‪ toArray‬وﺟﻮد دارد‪(.‬‬
‫‪١٣‬‬
‫ﻗﺴﻤﺖ اﻣﺘﯿﺎزی )‪ ٢٠‬اﻣﺘﯿﺎز(‬
‫‪ .١‬ﻣﺘﺪ زﯾﺮ را ﺑﻪ ﮐﻼس ‪ Department‬اﺿﺎﻓﻪ ﮐﻨﯿﺪ‪:‬‬
‫‪public void changeDepartment ( Professor professor , Department‬‬
‫) ‪newDepartment‬‬
‫ﯾ از اﺳﺘﺎدﻫﺎی آن داﻧﺸ ﺪه را ﺑﻪ ﻫﻤﺮاه ﯾ داﻧﺸ ﺪه دﯾ ﺮ ﻣ ﮔﯿﺮد و آن اﺳﺘﺎد را از اﺳﺘﺎدﻫﺎی داﻧﺸ ﺪه‬
‫اول ﺣﺬف ﮐﺮده و او را ﺑﻪ اﺳﺘﺎدﻫﺎی داﻧﺸ ﺪه دوم اﺿﺎﻓﻪ ﻣ ﮐﻨﺪ و ﺗﻤﺎم درسﻫﺎﯾﯽ ﮐﻪ آن اﺳﺘﺎد اراﺋﻪ ﻣ داد‬
‫را ﺣﺬف ﻣ ﮐﻨﺪ‪) .‬ﺣﺬف ﮐﺮدن ﯾ درس ﺷﺎﻣﻞ ﺣﺬف ﮐﺮدن آن درس از داﻧﺸ ﺪهای ﮐﻪ در آن ﻗﺮار دارد ﻫﻢ‬
‫ﻣ ﺷﻮد و ﺑﺎﯾﺪ ﺣﻮاﺳﺘﺎن ﺑﻪ داﻧﺸﺠﻮﻫﺎﯾﯽ ﮐﻪ در ﻟﯿﺴﺖ آن درس ﻫﺴﺘﻨﺪ ﻫﻢ ﺑﺎﺷﺪ‪(.‬‬
‫‪ .٢‬در ﺗﺎﺑﻊ ‪ addCourse‬در ﮐﻼس ‪ Department‬ﺑﺎﯾﺪ اﯾﻦ را ﭼ ﮐﻨﯿﺪ ﮐﻪ آﯾﺎ اﺳﺘﺎد دادهﺷﺪه در ﺳﺎﻋﺖ درس‬
‫دادهﺷﺪه درس دﯾ ﺮی ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ و در ﺻﻮرت ﺗﺪاﺧﻞ درس را اﺿﺎﻓﻪ ﻧﮑﻨﯿﺪ و ‪ false‬ﺑﺮﮔﺮداﻧﯿﺪ‪.‬‬
‫‪ .٣‬در ﺗﺎﺑﻊ ‪ register‬در ﮐﻼس ‪ Student‬ﺑﺎﯾﺪ ﭼ ﮐﻨﯿﺪ ﮐﻪ آن داﻧﺸﺠﻮ در آن ﺳﺎﻋﺖ درس دﯾ ﺮی ﻧﺪاﺷﺘﻪ‬
‫ﺑﺎﺷﺪ و در ﺻﻮرت ﺗﺪاﺧﻞ داﻧﺸﺠﻮ را در آن درس ﺛﺒﺖ ﻧﺎم ﻧﮑﻨﯿﺪ و ‪ false‬ﺑﺮﮔﺮداﻧﯿﺪ‪.‬‬
‫‪١۴‬‬
‫ﻧﮑﺎت‬
‫• ﺑﺮای ﺟﻮاب دادن ﺳﻮاﻻت ﻣ ﺗﻮاﻧﯿﺪ ﻫﺮ ﮐﻼس ﯾﺎ ﻣﺘﺪ دﯾ ﺮی ﮐﻪ ﻣ ﺧﻮاﻫﯿﺪ ﻧﻮﺷﺘﻪ و اﺳﺘﻔﺎده ﮐﻨﯿﺪ وﻟ ﮐﻼسﻫﺎ‬
‫و ﻣﺘﺪﻫﺎﯾﯽ ﮐﻪ در ﺻﻮرت ﺳﻮال آﻣﺪهاﻧﺪ ﺣﺘﻤﺎ ﺑﺎﯾﺪ ﺑﺎ ﻫﻤﺎن ﺳﺎﺧﺘﺎر ﮔﻔﺘﻪﺷﺪه ﭘﯿﺎدهﺳﺎزی ﺷﺪه ﺑﺎﺷﻨﺪ‪.‬‬
‫• در ﻫﺮ ﻓﺎﯾﻞ ﺟﺎوا ﻓﻘﻂ ﯾ ﮐﻼس ‪ public‬ﻣ ﺗﻮاﻧﺪ وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ‪) .‬ﮐﻪ ﻫﻢﻧﺎم ﻓﺎﯾﻞ ﺑﺎﯾﺪ ﺑﺎﺷﺪ‪ (.‬ﺑﺮای اﯾﻦ ﮐﻪ‬
‫ﭼﻨﺪ ﮐﻼس در ﯾ ﻓﺎﯾﻞ داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﺑﺎﯾﺪ ﻓﻘﻂ ﭘﺸﺖ ﯾ از آنﻫﺎ ﻋﺒﺎرت ‪ public‬را ﺑ ﺬارﯾﺪ‪ .‬در ﺻﻮرت‬
‫ﺳﻮالﻫﺎ ﮐﻼسﻫﺎﯾﯽ ﮐﻪ ﺑﺎﯾﺪ ‪ public‬ﺑﺎﺷﻨﺪ ﻣﺸﺨﺺ ﺷﺪهاﻧﺪ‪ .‬ﺷﻤﺎ ﺑﺎﯾﺪ ﻫﻤﻪی ﮐﻼسﻫﺎی ﺧﻮد را در ﯾ‬
‫ﻓﺎﯾﻞ ﺑﻔﺮﺳﺘﯿﺪ‪.‬‬
‫• ﺑﺮای ﻫﯿﭻﮐﺪام از ﺳﻮالﻫﺎ ﻻزم ﻧﯿﺴﺖ ﺗﺎﺑﻊ ‪ main‬ﻧﻮﺷﺘﻪ ﺷﻮد‪ .‬ﻓﻘﻂ ﺧﻮد ﮐﻼسﻫﺎ و ﻣﺘﺪﻫﺎی ﻣﺸﺨﺺﺷﺪه ﮐﺎﻓ‬
‫اﺳﺖ‪.‬‬
‫‪١۵‬‬