Глава 3
Задача 3.18 "Выпускники "
Добавьте к классу Child из программы о детском саде (задача 2.8) метод, который возвращает значение, указывающее, выпускается ли ребенок из детского сада в этом году. Решите, где должно быть объявлено значение года и как должен осуществляться доступ к нему: как к константе в главной программе, которая передается в качестве параметра, как к статической переменной в классе или иначе.
Решение
Объявим текущий год как константу в главной программе
static final int Year = 2007;
и будем передавать ее как параметр в конструктор класса.
Кроме того изменим несколько класс Child: вместо переменной, обозначающей возраст ребенка введем переменную (с тем же именем) обозначающую год рождения. Тогда возраст ребенка будет определяться разницей между текущим годом и годом рождения.
Кроме того, введем в класс Child еще один метод YesOrNo, который высчитывает возраст ребенка и в зависимости от полученного результата выводит сообщение о том, идет или не идет ребенок в этом году в школу.
Код программы:
class ChildGarten {
static final int Year = 2007;
Child Ben, Sally,George,Ringo,Pol,Jhon;
// The constructor for the program is
// where the initial work gets done
ChildGarten () {
Ben = new Child("Ben","Smit","great",2001,Year);
Sally = new Child("Sally","Brown","middle",2003,Year);
George = new Child("George","Harrison","small",2004,Year);
Ringo = new Child("Ringo","Starkey","small",2005,Year);
Pol = new Child("Pol","MacCartny","prepare",2000,Year);
Jhon = new Child("Jhon","Lennon","greate",2001,Year);
// Print out a header
System.out.println();
System.out.println(" ChildGarten program\n");
Ben.write();
Ben.YesOrNo();
Sally.write();
Sally.YesOrNo();
George.write();
George.YesOrNo();
Ringo.write();
Ringo.YesOrNo();
Pol.write();
Pol.YesOrNo();
Jhon.write();
Jhon.YesOrNo();
System.out.println();
}
// All programs must have a main method
public static void main (String [ ] args) {
// Start the program running from its constructor
new ChildGarten ();
}
}
class Child {
String name;
String secondName;
String groupName; //small,great,maddle,prepare
int year; // born
int limit = 7;
int currentYear;
Child(String n, String sec_n, String gr_n, int y, int Y ){
name = n;
secondName = sec_n;
groupName =gr_n;
year =y;
currentYear = Y;
}
// a method to output the values of the object's variables
void write() {
System.out.println( name + " " + secondName + " " + groupName + " group " + (currentYear- year) + " year" + "(" +
(limit - (currentYear - year)) + " year to scool) " );
}
void YesOrNo(){
if( 7 == (currentYear - year))
System.out.println( name + " " + secondName + " go to Scool in this year ");
System.out.println( name + " " + secondName + " not go to Scool in this year ");
}
}
Результат :
ChildGarten program
Ben Smit great group 6 year(1 year to scool)
Ben Smit not go to Scool in this year
Sally Brown middle group 4 year(3 year to scool)
Sally Brown not go to Scool in this year
George Harrison small group 3 year(4 year to scool)
George Harrison not go to Scool in this year
Ringo Starkey small group 2 year(5 year to scool)
Ringo Starkey not go to Scool in this year
Pol MacCartny prepare group 7 year(0 year to scool)
Pol MacCartny go to Scool in this year
Pol MacCartny not go to Scool in this year
Jhon Lennon greate group 6 year(1 year to scool)
Jhon Lennon not go to Scool in this year
Назад |
Начало урока |
Вверх |
Вперед
Содержание