在启动时说ruby中的应用程序有两种模式:命令行模式和文件模式
当给出参数 ruby myprogram input.txt output.txt 时,它会根据输入文件中的某些命令生成输出。当没有提供任何参数时,它会向我们提供命令提示符。使用以下命令。
create_class_with_capacity 40
create_student_with_marks Alex 70
create_student_with_marks Mathew 30
create_student_with_marks John 55
..
create_student_with_marks Sylvia 70 etc...
fail_student_roll_no 12
=> Student with roll number 12 #{student} failed
give_marks_to_roll_no 70 1
=>Student with roll number 1 Alex got 70 marks
find_all_students_with_marks 70
=> Alex, Peter , Russell , Mark etc...
如何设计这样的应用程序,保持RSpec,TDD,Cucumber,SOLID和Patterns in Mind。 我直接问的是,如果适用的话,这里的对象应该设计什么模块等等?以及如何衡量需要在这里测试什么和不测试什么?在面向对象设计方面设计最合适的机制。
另请参阅一些书籍或博客,以了解这些面向对象的ruby设计原则和实践。
答案 0 :(得分:4)
你是说你必须写这个应用程序?这是家庭作业吗?
听起来像是因为你患有分析瘫痪。你头脑中有太多的流行语。
不要担心模式,什么不是。将问题分解成碎片并开始编写一些代码。
我提出的一个建议是将I / O从我们的课程中删除。放置与基类中的用户交互无关的所有逻辑。这样,如果要求您创建基于Web的UI来替换文本版本,它们仍然有用。
需要测试什么?您认为可能破坏的所有代码。
面向对象设计最合适的方法?做一件显而易见的事:名词是问题陈述中的潜在对象,动词是潜在的方法。
以下是我看到的一些潜在对象:学生,课程,滚动。
以下是一些潜在的方法:学生和课程的CRUD操作;设置成绩并将学生标记为失败。
这并不复杂。认为“简单”并使某些工作正常,然后进行改进。
更新:
如果你可以描述你的所作所为,那么回答你会更容易。
如果这是我认为的家庭作业问题,我怀疑它会有很大的不同。而不是让我们猜测,为什么不阅读SOLID并开始查看您创建的课程,如果它符合这些原则,请问自己。
模式?被高估。别担心。