例题1:
制作一个4位数密码检测程序,该程序允许用户输入4位密码,并检测其正确性
确定类:
1 IDNumber:用户输入的密码
2 Display:和用户交互界面
3 IDMain:驱动程序
确定行为:
IDNumber:
1把用户输入保存为int,或String,或int数组代表各个数字
2检测输入是否正确
Display:
1读取用户输入
2告诉用户密码是否正确
3可能需要构建GUI
IDMain:
1构造Display对象
2利用Display读取输入以构造IDNumber对象
3得到判断是否正确
4打出信息
确定类之间的关系:
IDNumber和Display为组合关系,Display中应该存在一个IDNumber以记录数据并给出判断
分别构造两个类的实例变量和类方法是封装(encapsulation)的例子
可以在Display类里增加方法checkCharacter和checkRange等来检测输入,使用辅助方法是一个过程抽象(procedural abstraction),声明此类方法为private属于信息隐藏(information hiding)
如果一开始只构造IDNumber和驱动类,在后期补上Display类来方便输入输出,属于自上而下开发
IDNumber实现不需要任何其他类,属于独立类(independent class) Display需要IDNumber, 和IDNumber是组合关系(composition relationship)
最终测试时,既要有正确密码,也要有不正确密码,甚至包括其他违规输入(不是4位数,不是数字……),检验程序坚固性(robustness)