2-8编程练习

编程练习:请使用面向对象的思想,设计自定义类完成如下功能要求:

接收用户输入的信息,选择需要完成的工作任务。其中,可供选择的有:测试工作和研发工作。

关于类型设定描述如下:

  • 测试工作

​ 属性:工作名称、编写的测试用例个数、发现的Bug数量

​ 方法:工作描述

  • 研发工作

​ 属性:工作名称、有效编码行数、目前没有解决的Bug个数

​ 方法:工作描述

程序运行参考效果图如下:

父类信息测试:开心工作
测试工作类信息测试:测试工作的日报是:今天编写了10个测试用例,发现了5个BUG。
研发工作类信息测试:研发工作的日报是:今天编写了1000行代码,目前仍有10个BUG没有解决

任务

思路分析:

第一步:分析测试工作和研发工作的共性:

  1. 都是工作类型
  2. 都有工作名称的属性,工作描述的方法

第二步:根据共性,定义工作类

属性:工作名称

方法:

  1. 编写无参构造方法、带参构造方法完成对属性的赋值
  2. 编写工作描述的方法,描述内容为:开心工作。

第三步:定义测试工作类、研发工作类分别继承工作类,要求:

  • 测试工作类:
  1. 增加属性:编写的测试用例个数、发现的Bug数量
  2. 在构造方法中调用父类相关赋值方法,完成属性赋值
  3. 重写运行方法,描述内容为:的日报是:今天编写了个测试用例,发现了bug。其中的数据由属性提供
  • 研发工作类:
  1. 增加属性:有效编码行数、目前没有解决的Bug个数
  2. 在构造方法中调用父类相关赋值方法,完成属性赋值
  3. 重写运行方法,描述内容为:的日报是:今天编写了行代码,目前仍然有个bug没有解决。其中的数据由属性提供

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package me.feihong.work;

public class Work {
// 属性:工作ming
private String name ;

public Work() {

}// 无参构造方法

public Work(String name) {
this.name=name;

}// 带参构造方法,完成工作类型的赋值

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
// 公有的get***/set***方法完成属性封装

// 方法:工作描述,描述内容为:开心工作
public String work() {
String str="开心工作";
return str;
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package me.feihong.work;

public class TestWork extends Work {
//属性:编写的测试用例个数、发现的Bug数量
private int testNum=10;
private int bugNum=5;

// 编写构造方法,并调用父类相关赋值方法,完成属性赋值
public TestWork() {
super("测试工作");
}

// 公有的get***/set***方法完成属性封装
public int getTestNum() {
return testNum;
}

public void setTestNum(int testNum) {
this.testNum = testNum;
}

public int getBugNum() {
return bugNum;
}

public void setBugNum(int bugNum) {
this.bugNum = bugNum;
}

// 重写运行方法,描述内容为:**的日报是:今天编写了**个测试用例,发现了**bug。其中**的数据由属性提供
public String work() {
String str=getName()+"的日报是:今天编写了"+testNum+"个测试用例,发现了"+bugNum+"个BUG。" ;
return str;
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package me.feihong.work;

public class DevelopmentWork extends Work {
// 属性:有效编码行数、目前没有解决的Bug个数
private int yline=1000;
private int unSovleBug=10;

//编写构造方法,并调用父类相关赋值方法,完成属性赋值
public DevelopmentWork() {
super("研发工作");
}

// 公有的get***/set***方法完成属性封装
public int getYline() {
return yline;
}

public void setYline(int yline) {
this.yline = yline;
}

public int getUnSovleBug() {
return unSovleBug;
}

public void setUnSovleBug(int unSovleBug) {
this.unSovleBug = unSovleBug;
}

// 重写运行方法,描述内容为:**的日报是:今天编写了**行代码,目前仍然有**个bug没有解决。其中**的数据由属性提供
public String work() {
String str=getName()+"的日报是:今天编写了"+yline+"行代码,目前仍有"+unSovleBug+"个BUG没有解决" ;
return str;
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package me.feihong.work;

public class Test {

public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.print("父类信息测试:");
Work fwork=new Work();
System.out.println(fwork.work());
System.out.print("测试工作类信息测试:");
TestWork twork=new TestWork();
System.out.println(twork.work());
System.out.print("研发工作类信息测试:");
DevelopmentWork dwork=new DevelopmentWork();
System.out.println(dwork.work());

}

}
-------------本文结束感谢您的阅读-------------