例二:
1确定类:
技巧:找出程序说明书里面所有名词,看其中哪些应该定义为类
program 告诉你要写一个程序,什么都不是
teacher 老师是用户
schedule 应该作为外部文件存在,而非类
data, record 学生信息,应作为Student类成员变量
class 属于类,应该建一个classList类
构建类:GradeBook ClassList Student FileHander Display
分类:基本独立类:Student FileHander Score
集合类:ClassList ScoreList AllClasses
控制类 GradeBook
交互类 Display
2确定类之间的关系
没有明显继承关系
组合关系:ClassList有Student
3确定行为
注意程序说明书里面的动词,确定每个类要实现的方法
注意合理分配不同类应该实现的部分,如Student类应该展示单个学生信息,但不用去修改其他学生
4制定
GradeBook应该有一个provideMenu方法,该菜单可以执行相关类
ClassList保持并更新所有课程及学生,提供方法addStudent deleteStudent transferStudent createNewClass printClassList printScore updateList
Student要保存一个学生的全部信息,方法setName getName enterScore correctData findAverage getAverage getGrade displayRecord
FileHander将会保存和遍历文件信息,方法有openFileForReading openFileForWriting closeFiles loadClass saveClass
首先实现独立类Score Student ScoreList, 这些成功后实现集合类ClassList,最后为控制类GradeBook和展示类Display。这种策略属于自下而上开发