OPP第二次作业
-
习题四的整体难度不大,但第一题难度较大,需要对整体输入输出有一个很好的设计,对设计者提出了很高的要求,尽管本人很快的写完了其他的题目,但是在对第一题的设计中频频碰壁,难以达到题目预期效果,导致第一题未能成功做出。
-
习题五整体难度适中,主要考查了正则表达式和聚合,需要对正则表达式有较高的熟练度,清楚聚合的使用,由于之前对日期类题目有过较多的训练,也使得对日期类题型有较清晰的思路。
-
习题六整体难度较高,前两题考察了Java的继承于多态,后三题需要有非常严谨的逻辑,学会合理的分割输入数据,需要创建多个类,建立多个类之间的关系,也对阅读和理解能力提出了较高的要求。
2.设计与分析
OPP训练集05
7-5 日期问题面向对象设计(聚合一)
-
题目如下、
分析:
本题其实难度较高,但是由于这题已经写过多次,并且类图给出了很多的提示,他引导着我们用month类聚合year类,day类聚合month类,DataUtil类聚合day类,类似于套娃的模式,使得到DataUtil类时已经可以调用day,month,year的类,然后用Main函数去调用DataUtil类去进行相关的数据的传输。
代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int year = 0;
int month = 0;
long day = 0;
int choice = input.nextInt();
if (choice == 1) { // test getNextNDays method
int m = 0;
year = Integer.parseInt(input.next());
month = Integer.parseInt(input.next());
day = input.nextLong();
DateUtil date = new DateUtil(day, month, year);
if (!date.checkInoutValidity()) {
System.out.println("Wrong Format");
System.exit(0);
}
m = input.nextInt();
if (m < 0) {
System.out.println("Wrong Format");
System.exit(0);
}
System.out.println(date.getNextNDays(m).showDate());
} else if (choice == 2) { // test getPreviousNDays method
long n = 0;
year = Integer.parseInt(input.next());
month = Integer.parseInt(input.next());
day = input.nextLong();
DateUtil date = new DateUtil(day, month, year);
if (!date.checkInoutValidity()) {
System.out.println("Wrong Format");
System.exit(0);
}
n = input.nextLong();
if (n < 0) {
System.out.println("Wrong Format");
System.exit(0);
}
// System.out.print(
// date.getDay().getMonth().getYear().getValue() + "-" + date.getDay().getMonth().getValue() + "-" + date.getDay().getValue() + " previous " + n + " days is:");
System.out.println(date.getPreviousNDays(n).showDate());
} else if ( -