1、确定在软件开发过程中有利害关系的参与者。他们各自的关注点是什么?他们如何从面向对象模型中受益?
在软件开发过程中,常见的有利害关系的参与者、他们的关注点及从面向对象模型中的受益如下:
-
客户
- 关注点 :软件能满足业务需求、易用且成本合理。
- 面向对象模型的益处 :允许开发定制化软件,通过模块化设计便于理解和沟通,降低成本。 -
开发者
- 关注点 :代码的可维护性、可扩展性和开发效率。
- 面向对象模型的益处 :封装、继承和多态特性提高代码复用性和可维护性,加快开发速度。 -
测试人员
- 关注点 :全面发现软件缺陷。
- 面向对象模型的益处 :模块化使测试用例设计更清晰,便于定位和修复问题。 -
项目经理
- 关注点 :项目按时交付、控制成本和保证质量。
- 面向对象模型的益处 :有助于合理分配资源,降低项目风险,提高项目成功率。 -
维护人员
- 关注点 :能轻松理解和修改代码。
- 面向对象模型的益处 :结构清晰,易于维护人员理解和修改。
2、考虑一个你熟悉的应用程序,比如大学系统。将这个应用程序的实体进行分组,从而确定类。
在大学系统中,可将实体分为以下几类:
-
人员类 :包括教师、学生、行政人员。
- 教师负责授课、评定成绩;
- 学生注册课程、参加学习;
- 行政人员进行人员信息管理、课程信息维护等工作。 -
课程类 :包含课程和课程开设信息。
- 课程是大学课程公告中列出的项目,如“CS 430: 面向对象软件构造原理”;
- 课程开设信息则涉及具体学期的课程安排,包括时间、地点、授课教师和选课学生等。 -
资源类 :例如教室,用于课程教学,与课程开设信息相关联,每门课程的不同开设都有对应的授课教室。
3、假设我们将所有(对应所有类的)代码放入一个单一的类中。内聚性和耦合性会发生什么变化?
若将所有代码放入一个单一类中:
-
内聚性 会降低,因为一个类承担过多不同职责,其组成部分难以围绕一个明确定义的职责,各组成部分可能缺乏明显关联。
-
耦合性 方面,由于所有功能集中在一个类,不存在不同模块间的调用和依赖,类间耦合消失。但从系统整体看,这个单一类变得复杂且难以修改,一旦修改可能影响到所有功能,可视为一种极端的 高耦合 情况。
4、学习设计模式有哪些好处?
学习设计模式的好处包括:
- 应对系统生命周期内的变化,设计出能以最小代价处理规格变化的系统,避免大范围修改;
- 帮助更快理解设计,设计模式是常见问题的成熟解决方案,了解模式能快速明白系统中类和接口的组织方式;
- 促进代码复用,如适配器模式可利用现有类的功能开发新类来满足接口需求。
5、给定以下类,编写一个无参数的构造函数,该构造函数使用给定的构造函数,使得 x 和 y 在对象创建时分别初始化为 1 和 2。类定义如下:public class SomeClass { private int x; private int y; public SomeClass(int a, int b) { x = a; y = b; } 编写无参数构造函数,使 x 和 y 分别初始化为 1 和 2,且必须使用给定的构造函数。 }
可以在 SomeClass 类中添加如下无参构造函数:
public SomeClass() {
this(1, 2);
}
6、设计一个名为Course的类和一个名为Section的类,使得:(a) Course类维护所有课程节次(Section)的列表。(b) Section存储课程的容量和已注册学生的数量。(c) Course有一个搜索功能,返回未满员的课程节次列表。
以下是修改后的代码示例:
```java
import java.util.ArrayList;
import java.util.List;
public class Course {
private String id;
private String name;
private int numberOfCredits;
private String description;
private List<Section> sections;
public Course(String courseId, String courseName) {
id = courseId;
name = courseName;
sections = new ArrayList<>();
}
public void setNumberOfCredits(int credits) {
numberOfCredits = credits;
}
public void setDescription(

最低0.47元/天 解锁文章
6万+

被折叠的 条评论
为什么被折叠?



