JAVA_901_HW2_Ver4.pdf

‫تمریه سری ديم‬
‫درس بروامه وًیسی شئگرا‬
‫مًعد ارسال‪ :‬شىبه ‪ 41‬آبان ‪4931‬‬
‫تٌْام حاتوی‬
‫هحوذ چگیٌی‬
‫توشیي سشی اٍل تشًاهِ ساصی ضیءگشا‬
‫هْلت تحَیل‪ :‬شىبه ‪ 41‬آبان ‪4931‬‬
‫وکات کلی‬
‫‪ ‬دس ایي توشیي ضوا تشًاهِی اجشایی ًویًَیسیذ ٍ کاسی کِ اًجام هیدّیذ‪ ،‬پیادُساصی چٌذ کالس است‪.‬‬
‫‪ ‬هطخػات کلی سَالّای ایي توشیي تِ ایي ضشح است‪:‬‬
‫توشیي‬
‫وام کالس‬
‫وام فایل‬
‫ومره‬
‫توشیي ‪1‬‬
‫‪MiniExcel‬‬
‫‪MiniExcel.java‬‬
‫‪20‬‬
‫توشیي ‪2‬‬
‫‪Polynomial‬‬
‫‪Polynomial.java‬‬
‫‪35‬‬
‫توشیي ‪3‬‬
‫‪FourInARow‬‬
‫‪FourInARow.java‬‬
‫‪35‬‬
‫توشیي ‪4‬‬
‫‪Management‬‬
‫‪Management.java‬‬
‫‪30‬‬
‫‪ّ ‬ذف ایي توشیي‪ ،‬آصهایص دسک ضوا اص هفَْم ضئگشایی ٍ تکاسگیشی ایي هفَْم دس ػول است‪ .‬پس اص ایي‬
‫توشیي ضوا تایذ تشاحتی تتَاًیذ هذلّای سادُ جْاى ٍاقؼی سا تػَست ضئگشایی هذل کٌیذ‪.‬‬
‫‪ ‬تشای اسسال توشیي تِ آدسس صیش هشاجؼِ کٌیذ‪:‬‬
‫‪http://arsh.co.ir/java901/‬‬
‫تَجِ ًواییذ کِ تایذ ّش کذام اص فایلّای ‪ .java‬سا تغَس جذاگاًِ اسسال ًواییذ‪$ .‬تغَس دقیقتش‪ً ،‬ثایذ تواهی آًْا‬
‫سا ‪ zip‬کٌیذ!‪#‬‬
‫‪ ‬هَػذ تحَیل ساػت ‪$ 11:59‬ضة‪ #‬سٍص ضٌثِ ‪ 14‬آتاى تَدُ ٍ تِ ّیچ ػٌَاى توذیذ ًخَاّذ ضذ‪.‬‬
‫‪ً "20‬وشُ‪ ،‬اص ‪ 24‬ساػت تا ‪ 25‬ساػت‪ ،‬تِ اصای ّش ‪ 2‬دقیقِ هَجة کسش ضذى ‪ً "1‬وشُی دیگش ٍ تیي ‪ 25‬ساػت‬
‫تا ‪ 48‬ساػت تاػث کسش ضذى ‪ً "50‬وشُ هیضَد‪ .‬تأخیش تیطتش اص ‪ 48‬ساػت قاتل قثَل ًیست‪.‬‬
‫‪ ‬قغغ تَدى ایٌتشًت خَاتگاُ‪ ،‬کٌذی پایگاُ ایٌتشًتی داًطکذُ‪ ،‬توام ضذى کاست ایٌتشًت ٍ … ّیچکذام دلیل‬
‫هَجْی تشای تأخیش ًیستٌذ‪ .‬تٌاتشایي پیطٌْاد هیضَد جَابّای خَد سا دس داوشکده اسسال کٌیذ‪.‬‬
‫‪ ‬اص آًجایی کِ هوکي است تػحیح تِ ضکل خَدکاس اًجام ضَد دس ًتیجِ ػذم سػایت ًکات ظشیف هاًٌذ ًام‬
‫هتذّا ٍ ‪ ...‬هَجة اختالل دس سًٍذ تػحیح ‪ً ٍ$‬وشُ‪ #‬خَاّذ ضذ‪.‬‬
‫توشیي سشی دٍم تشًاهِ ساصی ضیءگشا‬
‫‪ ‬تأخیش تا ‪ 1‬ساػت‪ ،‬تِ اصای ّش ‪ 3‬دقیقِ هَجة کسش ضذى ‪ً "1‬وشُ‪ ،‬اص ‪ 1‬ساػت تا ‪ 24‬ساػت هَجة کسش ضذى‬
‫‪1‬‬
‫‪ ‬تالش تشای استفادُ اص هٌاتغ سیستن هاًٌذ کاست غذا ٍ پشیٌتش ٍ ًَضتي تِ فایل ٍ ‪ ...‬هٌجش تِ دسیافت ًوشُی‬
‫غفش دس ایي توشیي هیضَد‪.‬‬
‫‪ ‬کالسّا ٍ هتذّای گفتِ ضذُ دس آىّا حذاقلّای الصم ّستٌذ‪ .‬یؼٌی ضوا هیتَاًیذ تشای ساحتتش ضذى پیادُ‪-‬‬
‫ساصیتاى یا ضئگشاتش ضذى کذتاى تِ ایي کالسّا هتذّای دیگشی اضافِ کٌیذ یا تِ کل توشیي کالسّای‬
‫دیگشی اضافِ کٌیذ‪ٍ .‬لی دقت داضتِ تاضیذ کِ کالسّای گفتِ ضذُ ٍ هتذّای آًْا تایذ تِ ّویي ضکل‪،‬‬
‫هَجَد تاضٌذ‪ .‬تَجِ کٌیذ کِ توام هتغیشّای داخلی ضوا دس سَال ّای ‪ 4 ٍ 2‬تایذ ‪ Private‬تاضٌذ‪.‬‬
‫‪ ‬سَاالت خَد سا تا فشستادى ایویل تِ آدسس ‪ java-91-1 @gmail.com‬هغشح کٌیذ‪.‬‬
‫‪ً ‬حَُ تحَیل حضَسی توشیي هتؼاقثاً اػالم خَاّذ ضذ‪.‬‬
‫تمریه ‪MiniExcel :4‬‬
‫دس ایي تشًاهِ قػذ داسین تشًاهِی غفحِ گستشدُی سادُای تٌَیسین‪ .‬دس ایي تشًاهِ یک جذٍل هاًٌذ ‪ Excel‬داسین کِ‬
‫دس ّش یک اص خاًِّای آى هی تَاًذ یک ػذد یا یک فشهَل تاضذ‪ .‬تواهی اػذاد اص ًَع ‪ّ int‬ستٌذ‪ّ .‬ش خاًِ یک‬
‫فیلذ‪ٍ$‬یژگی‪ #‬تِ ًام ‪ contains‬داسد کِ فشهت آى تِ ایي ضکل است‪:‬‬
‫‪ .1‬اگش دس خاًِ فشهَل تَد ٍ هثالً قشاس تَد خاًِی )‪ (0,0‬تا خاًِی )‪ (1,0‬جوغ ضَد فیلذ ‪ contains‬تِ غَست صیش‬
‫است‪:‬‬
‫‪=0 0+1 0‬‬
‫‪ .2‬اگش دس خاًِ ػذد تَد تِ غَست صیش است‪:‬‬
‫‪=56‬‬
‫دس فشهَلّا ّویطِ تٌْا دٍ خاًِ تا ّن & یا – یا ‪ %‬یا ‪ /‬هیضًَذ‪ .‬ضوا تایذ دس ایي سَال دٍ کالس تِ ًامّای‬
‫‪ Block ٍ MiniExcel‬پیادُساصی کٌیذ کِ کالس ‪ Public‬ضوا ّواى ‪ MiniExcel‬تاضذ‪.‬‬
‫توشیي سشی دٍم تشًاهِ ساصی ضیءگشا‬
‫‪2‬‬
‫{‪Class Block‬‬
‫;)(‪public int getRow‬‬
‫;)(‪public int getColumn‬‬
‫;)(‪public String getContains‬‬
‫;)(‪public String getType‬‬
‫;)‪public Block(int row,int column‬‬
‫}‬
‫ایي کالس تشای پیادُساصی ّش یک اص خاًِّای جذٍل است‪.‬‬
‫تاتغ اٍل تشهیگشداًذ کِ خاًِ‪ ،‬دسسغش چٌذم قشاس داسد‪ .‬دقت ضَد کِ خاًِی تاال سوت چپ خاًِی ‪#0 ،0$‬‬
‫هیتاضذ‪.‬‬
‫تاتغ دٍم تشهیگشداًذ خاًِ‪ ،‬دس ستَى چٌذم قشاس داسد‪.‬‬
‫تاتغ سَم فیلذ ‪ّ contains‬ش ‪ Block‬سا تشهیگشداًذ کِ دس تاال تَضیح آى دادُ ضذ‪.‬‬
‫)(‪ًَ :getType‬ع آى خاًِ سا تشهیگشداًذ‪ .‬اگش خاًِ خالی تَد ػثاست ‪ null‬تشگشداًذُ هیضَد اگش دس آى فشهَل‬
‫تَد ػثاست ‪ ٍ formula‬اگش دس آى ػذد ثاتت تَد ػثاست ‪.number‬‬
‫{‪Class MiniExcel‬‬
‫;)(‪public int getRowNum‬‬
‫;)(‪public int getColumnNum‬‬
‫;)(‪public Block[][] getBlocks‬‬
‫;)‪public void deleteBlockContains(int row, int column‬‬
‫;)‪public void fill(int row,int column, String contains‬‬
‫;)‪public String toStringSpecialBlock(int row, int column‬‬
‫;)‪public MiniExcel(int rowNum, int columnNum‬‬
‫}‬
‫)(‪ً :getRowNum‬طاىگش تؼذاد سغشّای جذٍل است‪.‬‬
‫)(‪ :getBlocks‬یک آسایِی دٍ تؼذی کِ خاًِّای ‪ّ table‬ستٌذ‪.‬‬
‫)(‪ :deleteBlockContains‬هحتَیات یک خاًِی خاظ سا پاک هیکٌذ‪.‬‬
‫)(‪ :fill‬یک خاًِی خاظ سا تا فشهت گفتِ ضذُ پش هی کٌذ‪.‬‬
‫توشیي سشی دٍم تشًاهِ ساصی ضیءگشا‬
‫)(‪ً :getColumnNum‬طاىگش تؼذاد ستَىّای جذٍل است‪.‬‬
‫‪3‬‬
‫)(‪ :toStringSpecialBlock‬هقذاس خاظ یک خاًِ کِ تایذ تِ کاستش ًطاى دادُ ضَد سا تشهیگشداًذ‪ .‬اگش دس‬
‫خاًِ ػذد ثاتت رخیشُ ضذُ است هقذاس آى ػذد تشگشداًٌذُ هیضَد‪ .‬اها اگش داخل خاًِ فشهَل رخیشُ ضذُ تاضذ‬
‫حاغل آى فشهَل سا تشهیگشداًذ‪ .‬هثالً اگش تاتغ ‪ getContains‬یک ‪ Block‬هقذاس صیش سا تشگشداًذ‪:‬‬
‫‪=0 0+1 0‬‬
‫ٍ تا ایي فشؼ کِ دس خاًِی )‪ (0,0‬ػذد ‪ ٍ 2‬دس خاًِی )‪ (1,0‬ػذد ‪ 3‬رخیشُ ضذُ تاضذ تایذ ػثاست ‪ 5‬تشگشداًذُ‬
‫ضَد!‬
‫)(‪ :MiniExcel‬ایي تاتغ ‪ constructor‬کالس است کِ ٍسٍدی آى تؼذاد سغش ٍ ستَىّای تاتغ است‪.‬‬
‫دس ایي تشًاهِ ّیچ حالت خاظ‪ٍ ،‬سٍدی غیشاستاًذاسد‪ ،‬ػولیات هٌغقی غیشاستاًذاسد ٍ ‪ ...‬تِ کالس ضوا دادُ‬
‫ًویضَد‪ّ .‬ذف اص عشاحی ایي سَال تٌْا سفاُ حال ضواست‪.‬‬
‫ًوَداس ‪ UML‬کالسّای تاال تِ غَست صیش است‪.‬‬
‫‪Class MiniExcel‬‬
‫‪Block‬‬
‫)‪+ Block(int row,int column‬‬
‫)‪+ MiniExcel(int rowNum,int columnNum‬‬
‫‪+ getRow() : int‬‬
‫‪+ getRowNum() : int‬‬
‫‪+ getColumn() : int‬‬
‫‪+ getColumnNum() : int‬‬
‫‪+ getContains() : String‬‬
‫][][‪+ getBlocks() : Block‬‬
‫‪+ getType() : String‬‬
‫‪+ deleteBlockContains(int row, int column) : void‬‬
‫‪+ fill(int row,int column, String contains) : void‬‬
‫توشیي سشی دٍم تشًاهِ ساصی ضیءگشا‬
‫‪4‬‬
‫‪+ toStringSpecialBlock(int row, int column): String‬‬
‫ چىد جمله ای‬:2 ‫تمریه‬
.‫دس ایي توشیي هیخَاّین کالس چٌذ جولِای سا تٌَیسین‬

ِ‫ تَجِ ًواییذ ک‬.‫کالس اٍل کالس اػذاد گَیا ٍ کالس دٍم کالس چٌذ جولِایّایی تا ضشایة گَیا هیتاضذ‬

class Rational{
Rational(int x, int y); // y > 0; x/y
Rational(String s);
int getNumerator(); // x
int getDenominator (); // y
boolean equals(Rational other);
String toString();
}
class Polynomial{
Polynomial(String init);
Polynomial polyAdd(Polynomial other);
Polynomial polyMultiply(Polynomial other);
Polynomial polySubtract(Polynomial other);
Polynomial polyDivide(Polynomial other);
Polynomial polyPow(int pow); // pow > 0
Rational getValue(Rational point);
boolean equals(Polynomial other);
int getDegree();
String toString();
‫توشیي سشی دٍم تشًاهِ ساصی ضیءگشا‬
}
5
.‫تَاى جولِّای چٌذ جولِای اػذادی غحیح ٍ ًاهٌفی است‬
‫ یؼٌی‬.‫تَجِ ًواییذ کِ اػذادی کِ دس کالس گَیا ًگْذاسی هیضًَذ تایذ سادُ تشیي حالت هوکي سا داضتِ تاضٌذ‬
:ًَِ‫ تِ ػٌَاى ًو‬.‫تایذ ّوَاسُ تضسگتشیي هقسَم ػلیِ غَست ٍ هخشج یک تاضذ‬
Rational rational = new Rational("-4/6");
System.out.println(rational.getNumerator());
-2
System.out.println(rational.getDenominator());
3
System.out.println(rational.toString());
-2/3

‫;)"‪rational = new Rational("4/2‬‬
‫‪‬‬
‫‪2‬‬
‫;))(‪System.out.println(rational. getNumerator‬‬
‫‪1‬‬
‫;))(‪System.out.println(rational.getDenominator‬‬
‫‪2‬‬
‫;)")(‪System.out.println("rational.toString‬‬
‫دس کالس اػذاد گَیا‪ ،‬تاتغ )(‪ toString‬خشٍجی اص ًَع سضتِ داسد‪ .‬دس غَستی کِ ػذد ها غحیح تاضذ سضتِ‬
‫تشاتش غَست کسش هیضَد ٍ دس غیش ایي غَست تایذ اتتذا غَست کسش‪ ،‬تؼذ اص آى ػالهت «‪ ٍ »/‬تؼذ هخشج کسش‬
‫ًَضتِ ضَد‪ .‬تِ عَس هثال‪:‬‬
‫… ‪1/2, 1, 0, -2/3,‬‬
‫تَجِ ًواییذ ‪ constructor‬ایي کالس تایذ تتَاًذ ایي سضتِ سا تِ ػٌَاى ٍسٍدی تگیشد ٍ یک ًوًَِ اص اػذاد گَیا‬
‫تساصد‪ .‬تَجِ کٌیذ سضتِی ٍسٍدی تِ عَس قغغ استاًذاسد است‪ٍ .‬سٍدی ایي تاتغ ّواًٌذ خشٍجی تاتغ‬
‫)(‪ toString‬هیتاضذ‪ .‬تاتغ )(‪ّ equal‬ن چک هی کٌذ کِ ػذد گَیای ها تا ػذد گَیای ٍسٍدی تشاتش است یا ًِ‬
‫‪ True$‬دس غَست تشاتشی‪.#‬‬
‫‪‬‬
‫‪ Constructor‬کالس چٌذجولِای‪ :‬ایي تاتغ اص یک سضتِ‪ ،‬چٌذجولِای تا ضشایة گَیا هیساصد‪ .‬تَجِ کٌیذ‬
‫تَاىّای جولِّای آى دس سضتِی ٍسٍدی‪ً ،‬ضٍلی است‪ .‬تِ عَس هثال سضتِی «‪ »x^3+x+x^2+1/2‬یک‬
‫سضتِی هجاص ًیست ٍ تش خالف آى «‪ »3/4*x^3+x^2+x+1/2‬یک سضتِی هجاص است‪$ .‬هتغیش ّوَاسُ ‪ٍ x‬‬
‫دس سضتِ فاغلِ ًذاسین ٍ تضویي هی ضَد‪ ،‬سضتِ استاًذاسد است‪ .#‬تاتغ )(‪ getValue‬هقذاس تاتغ سا دس ًقغِی‬
‫گَیای هَسد ًظش حساب هیکٌذ‪ .‬تاتغ )(‪ toString‬تایذ چٌذ جولِای سا تِ فشهت سضتِ تِ تشتیة ًضٍلی تَاى‬
‫تٌَیسذ‪ .‬تِ عَس هثال «‪.»x^4+x^2+3/2‬‬
‫تمریه ‪ :9‬چهارتایی ها‬
‫دس ایي تاصی یک جذٍل ‪ n‬دس ‪ m‬تایی ٍجَد داسد‪ .‬دس ّش هشحلِ یک تاصیکي ‪$‬قشهض یا صسد‪ #‬یکی اص ستَىّای جذٍل سا‬
‫توشیي سشی دٍم تشًاهِ ساصی ضیءگشا‬
‫‪6‬‬
‫اًتخاب هیکٌذ ٍ هْشُای داخل آى هیاًذاصد‪ .‬دقت کٌیذ ضشٍع تاصی تا تاصیکي قشهض است‪ .‬هْشُی اًذاختِ ضذُ تا جایی‬
‫پاییي هیسٍد کِ هْشُای سش ساُ آى قشاس ًذاضتِ تاضذ یا تِ تِ جذٍل تشسذ‪ّ .‬ش ٍقت تاصیکٌی تَاًست چْاس خاًِی پطت‬
‫سش ّن افقی‪ ،‬ػوَدی یا اسیة سا اص آى خَد کٌذ تشًذُی تاصی است‪ .‬اگش خاًِّا توام ضذ ٍلی تاصیکٌی تشًذُی تاصی ًطذ‬
‫تاصی هساٍی توام ضذُ است‪.‬‬
‫تشای اًجام ایي تاصی تِ ایي آدسس هشاجؼِ کٌیذ‪:‬‬
‫‪http://www.donutgames.com/play/four_in_a_row‬‬
‫ضوا تایذ کالس ‪ ،FourInARow‬کالس ‪ ٍ Table‬کالس ‪ Block‬سا تِ غَست صیش پیادُ ساصی کٌیذ‪ .‬دقت کٌیذ کِ ّش‬
‫سِ کالس سا دس یک فایل تایذ رخیشُ کٌیذ‪ .‬کالس ‪ FourInARow‬تایذ ‪ Public‬تاضذ‪.‬‬
‫‪ .1‬کالس ‪:Block‬‬
‫{‪Class Block‬‬
‫;)‪public Block(row,column‬‬
‫;)(‪public int getRow‬‬
‫;)(‪public int getColumn‬‬
‫;)(‪public char getBlockType‬‬
‫}‬
‫)(‪ :getRow‬ضواسُی سغش خاًِی هَسد ًظش سا تش هیگشداًذ‪ .‬دقت کٌیذ کِ خاًِی تاال سوت چپ خاًِی‬
‫‪ #0,0$‬هحسَب هیضَد‪.‬‬
‫)(‪ :getColumn‬ضواسُی ستَى خاًِی هَسد ًظش سا تش هیگشداًذ‪.‬‬
‫)(‪ًَ :getBlockType‬ع خاًِی هَسد ًظش سا تش هیگشداًذ‪ .‬اگش ‪ R‬تَد یؼٌی هْشُی قشهض دس خاًِ قشاس داسد‪ ،‬اگش‬
‫‪ Y‬تَد یؼٌی هْشُی صسد دس خاًِ قشاس داسد ٍ اگش ‪ E‬تَد یؼٌی خاًِ خالی است‪.‬‬
‫)‪ّ :Block(row,column‬واى عَس کِ حذس صدیذ ایي خاًِ ‪ constructor‬ایي کالس است‪.‬‬
‫‪ .2‬کالس ‪Table‬‬
‫{‪Class Table‬‬
‫;)‪public Table(rowNum, columnNum‬‬
‫;)(‪public Block[][] getBlocks‬‬
‫;)(‪public int getRowNum‬‬
‫;)(‪public int getColumnNum‬‬
‫)(‪ :getBlocks‬یک آسایِی دٍ تؼذی کِ خاًِّای ‪ table‬یا ّواى تختِی تاصی ّستٌذ سا تشهیگشداًذ‪.‬‬
‫)(‪ :getRowNum‬تؼذاد سغشّای جذٍل سا تشهیگشداًذ‪.‬‬
‫)(‪ :getColumnNum‬تؼذاد ستَىّای جذٍل سا تشهیگشداًذ‪.‬‬
‫)(‪ :Table‬ایي تاتغ ‪ constructor‬کالس است کِ ٍسٍدی آى تؼذاد سغش ٍ ستَى جذٍل است‪.‬‬
‫‪ .3‬کالس ‪FourInARow‬‬
‫توشیي سشی دٍم تشًاهِ ساصی ضیءگشا‬
‫}‬
‫‪7‬‬
‫{‪Public class FourInARow‬‬
‫;)‪public FourInARow(table‬‬
‫;)(‪public Table getTable‬‬
‫;)(‪public char getTurn‬‬
‫;)‪public String play(char turn,int column‬‬
‫}‬
‫)(‪ :getTable‬جذٍل هشتَط تِ تاصی سا تشهیگشداًذ‪.‬‬
‫)(‪ :getTurn‬تشهیگشداًذ ًَتت کذام تاصیکي است‪ .‬اگش ًَتت تاصیکي قشهض تَد ‪ ٍ R‬اگش ًَتت تاصیکي صسد تَد ‪Y‬‬
‫سا تشهیگشداًذ‪.‬‬
‫)(‪ :fourInARow‬ایي تاتغ ‪ constructor‬کالس است کِ ٍسٍدی آى یک جذٍل یا ّواى تختِی تاصی است‪.‬‬
‫)(‪ّ :play‬واى عَس کِ دس تاصی هطاّذُ کشدیذ ّش ًَتت تاصی یک تاصیکي تایذ دس یک ستَى هْشُی خَد سا‬
‫تیٌذاصد‪ .‬ایي هتذ ایي کاس سا اًجام هیدّذ‪ .‬اگش تا غذا صدى ایي هتذ ػولیات غیشهٌغقی اص تاصیکٌاى‪ ،‬هثالً اًذاختي‬
‫هْشُ تِ خاسج جذٍل یا تِ ستَى پش هطاّذُ ضَد تایذ ػثاست ‪ error‬تشگشداًذُ ضَد‪ .‬دقت کٌیذ اگش تؼذ اص غذا‬
‫صدى ایي هتذ تاصی توام ضذُ تاضذ‪ ،‬اگش تاصیکٌی دس تاصی تشًذُ ضذُ تاضذ تایذ هتٌاسة تا تشًذُی تاصی‪ ،‬پیغام‬
‫‪ Yellow wins‬یا ‪ Red wins‬تشگشداًذُ ضَد ٍ اگش تاصی تشًذُ ًذاضتِ تاضذ پیغام ‪ Equal‬تشگشداًذُ ضَد‪.‬‬
‫پس اص اٍلیي تاسی کِ یکی اص ایي ‪ 3‬حالت هزکَس سخ داد‪ ،‬دس غذا صدُ ضذىّای تؼذی ایي تاتغ‪ّ ،‬یچ ػولی‬
‫ًثایذ سخ دّذ ٍ تٌْا سضتِی خالی سا تشگشداًذ‪.‬‬
‫‪FourInARow‬‬
‫)‪+ FourInARow(table‬‬
‫][][‪+ getBlocks() : Block‬‬
‫‪+ getTable() : Table‬‬
‫‪+ getRowNum() : int‬‬
‫‪+ getTurn() : char‬‬
‫توشیي سشی دٍم تشًاهِ ساصی ضیءگشا‬
‫‪8‬‬
‫‪Table‬‬
‫‪+ play(char turn,int column) :‬‬
‫‪String‬‬
‫‪+ getColumnNum() : int‬‬
‫)‪+ Table(rowNum,columnNum‬‬
‫‪Block‬‬
‫)‪+ Block(row,column‬‬
‫‪+ getRow() : int‬‬
‫‪+ getColumn() : int‬‬
‫‪+ getBlockType() : char‬‬
‫ آقای جلوخاوی‬:1 ‫تمریه‬
‫ تِ دستیاس آهَصضی دسس جاٍا هشاجؼِ کشد ٍ دسخَاستی هثٌی تش عشاحی تشًاهِای تشای‬،‫ دیشٍص آقای جلَخاًی‬
.‫هذیشیت ًحَُی اختػاظدّی کالسّای داًطکذُ دادُ است‬
class Course(){
public Course(String name, int courseID, int classNum);
public void setTimeSlices(TimeSlice[] classTimeSlices,
TimeSlice TATimeSlice, TimeSlice[] examTimeSlice);
public int getCoursID();
public String toString()
}
class Time(){
public Time(int hour, int minute);
public String toString();
}
class TimeSlice(){
public TimeSlice(int day, int week, Time startTime, Time finishTime); // week >= 0
public String toString();
}
class Management{
public Management();
public void reset();
public int reset(int day);
public boolean remove(int courseID);
public boolean add(Course course);
‫توشیي سشی دٍم تشًاهِ ساصی ضیءگشا‬
public boolean isFree(TimeSlice timeSlice);
9
}
.‫ّا تشای هقذاس دّی هتغیشّای داخلی استفادُ هیضًَذ‬Constructor 
.‫ سا تاص هیگشداًذ‬courseID ‫ هقذاس هتغیش‬getCourseID() ‫ تاتغّای‬
.‫ است‬24 ‫ هیتاضٌذ ٍ ساػت کوتش اص‬30 ‫ توام صهاىّا داسای دقیقِای هضشب‬
‫ فشهت ایي‬.‫ تایذ سضتِای حاهل اعالػات هَجَد سا تِ ػٌَاى خشٍجی تذّذ‬،‫ تاتغ اٍل‬3 ‫ دس‬toString() ‫ تاتغّای‬
‫ تؼذ هقذاس‬،»;« ‫ تؼذ ػالهت‬،‫ اتتذا اسن‬،Constructor ‫سضتِ تِ ایي غَست است کِ تِ تشتیة هتغیشّای‬
‫هتغیش‪ ،‬تؼذ ” ‪ “, ”$ “,‬تشای هتغیش آخش الصم ًویتاضذ‪ .#‬ػالٍُ تش ساختاس گفتِ ضذُ تایذ دٍس کل سضتِ‪ ،‬پشاًتض‬
‫تاضذ‪ .‬تِ عَس هثال تشای کالس ‪ Time‬تا ساػت ‪ ٍ 13‬دقیقِی ‪ 30‬داسین‪:‬‬
‫”)‪“(hour=13, minute=30‬‬
‫یا تشای کالس ‪ TimeSlice‬داسین‪:‬‬
‫”))‪“(day=4, week=0, startTime=(hour=3, minute=0), finishTime=(hour=5, minute=0‬‬
‫یا تشای کالس ‪ Course‬داسین‪:‬‬
‫”)‪“(name=C, courseID=24021, classNum=101‬‬
‫‪ ‬دس کالس ‪ ،TimeSlice‬هتغیش ‪ week‬دس غَستی کِ ‪ 0‬تاضذ ًطاى دٌّذُی آى است کِ ایي قغؼِی صهاًی‪،‬‬
‫هتٌاٍب است ٍ ّش ّفتِ سٍی هیدّذ‪ .‬دس غَست هثثت تَدى‪ً ،‬طاى دٌّذُی ضواسُی ّفتِی هشتَعِ هیتاضذ‪.‬‬
‫‪ ‬دس کالس ‪ TimeSlice‬تاصُّا تِ غَست تستِ‪-‬تاص اًذ‪ .‬یؼٌی )‪ [1،2‬کِ دس آى ‪ 1‬اتتذا ٍ ‪ 2‬اًتْا است‪.‬‬
‫‪ ‬دس کالس ‪ Course‬تاتغ ‪ ،setTimeSlice‬هقذاس ‪ّTimeSlice‬ای هشتَط تِ کالسّای ‪،EXAM ،TA‬‬
‫‪ Class‬سا هطخع هیکٌذ‪.‬‬
‫‪ ‬دس کالس ‪ Management‬تاتغ )(‪ reset‬توام اعالػات هَجَد سا پاک هیکٌذ ٍ تؼذ اص آى فشؼ ضذُ ّیچ‬
‫دسسی دس سیستن ثثت ًطذُ است‪.‬‬
‫‪ ‬تاتغ )‪ reset(int day‬دسسّایی کِ یکی اص کالسّای هَسد ًیاص آىّا دس ایي سٍص است سا‪ ،‬حزف هیکٌذ‪.‬‬
‫خشٍجی ایي تاتغ تؼذاد ایي دسسّای حزف ضذُ هیتاضذ‪.‬‬
‫‪ ‬دس تاتغ )‪ add(Course course‬دسس هَسد ًظش سا دس غَست ًذاضتي تذاخل تا تقیِ دسسّای هَجَد دس‬
‫لیست دسٍس داًطکذُ اضافِ هیکٌذ‪ً .‬کتِی قاتل تَجِ ایي است کِ صهاًی کِ یک ‪ Course‬دس لیست آقای‬
‫جلَخاًی ٍاسد ضذ‪ً ،‬ثایذ صهاى کالسّای آى تَسظ تاتغ ‪ setTimeslice‬تغییش کٌذ‪ .‬صیشا ایي تغییش صیش ًظش‬
‫توشیي سشی دٍم تشًاهِ ساصی ضیءگشا‬
‫‪10‬‬
‫آقای جلَخاًی غَست ًگشفتِ است‪.‬‬
‫‪ ‬تاتغ )‪ remove(int courseID‬دسس هَسد ًظش سا دس غَست ٍجَد‪ ،‬اص لیست آقای جلَخاًی حزف هیکٌذ‪.‬‬
‫‪ ‬تاتغ )‪ّ isFree(TimeSlice timeslice‬ن یک قغؼِ صهاًی هیگیشد ٍ دس غَستی کِ خالی تاضذ ‪ True‬تش‬
‫هیگشداًذ‪.‬‬
‫هَفق تاضیذ‬