小学

小学

中等

说明

给定学生的姓名以及他们所在的年级,为学校创建一个名册。

最终,你应该能够:

  • 把学生的姓名添加到某个年级的名册中
    • “把 Jim 加入 2 年级。”
    • “好的。”
  • 获取某个年级所有学生的列表
    • “2 年级有哪些学生?”
    • “目前只有 Jim。”
  • 获取所有年级所有学生的排序列表。 年级应按 1、2、3 等排序,同一年级内的学生应按姓名的字母顺序排序。
    • “现在全校都有哪些学生?”
    • “让我想想。 1 年级有 Anna、Barb 和 Charlie,2 年级有 Alex、Peter 和 Zoe,5 年级有 Jim。 所以答案是:Anna、Barb、Charlie、Alex、Peter、Zoe 和 Jim”

注意,我们这里的学生都只有一个名字(小镇嘛,你还想怎样?),而且每个学生都不能被重复添加到一个年级或名册中。 事实上,当测试尝试重复添加同一个学生时,你的实现应该表明这是错误的。

注意

并不是非要把学生建模成一个独立的对象,需求本身相当简单,你完全可以用一个方便的内部数据结构来表示(只要它不会泄漏到结果里)。

Note

这个练习对问题规范做了小幅修改,因为把添加学生和查询学生分开放在不同的方法里更合理(而不是用一个方法同时完成这两件事,那样不太像 Pharo/Smalltalk 的风格)。


来源

与 Phil Battos 在 gSchool 的一次结对编程
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Pharo Exercism

准备好开始 小学 了吗?

注册 Exercism,借助 50 个练习 和真人导师指导,学习并掌握 Pharo,全部免费。