以下分割线内摘自zjoe
----------------------------------------------------------
基本思路
这个问题本身很容易,但无奈老师的要求实在是奇怪。要从命令行 启动程序,并且多次运行后只保留一个程序在运行。已经都写UI了 为何还要用命令行控制?如果非要满足这个要求,还需要写很麻烦 的进程切换,所以我没有完全按照老师的要求写。我的想法是用UI 作为主控程序,直接在UI内实现参数的输入。输入后用户按下按钮 触发一个过程,在这个过程中实现如下功能:
- 分离参数
- 将参数传递给计算程序,执行计算
- 获取计算结果
- 新建tab并显示结果
这样实现的话计算程序运行完后就退出了,所以系统中不会有两个 maxsum在运行。
实现
由于最近一直在linux下学习,所以决定采用gtk来实现。Gtk是用c 语言实现的图形化库,几乎是完全按面向对象的规范实现的。容器 的思想使得用起来非常方便高效。不得不说c语言真的很强大,面 向对象不是语言属性,而是思想属性。
细节
具体实现的时候其实是两个程序分开来了,原来的计算程序没动。UI 直接调用计算程序,输出的结果保存在一个文件中,UI再读入处理。 没有采用进程通信之类的,感觉实在没有必要。没有把程序写在一起 是因为太长了,而且因为要多次执行计算,计算程序中的一些变量初 始化容易出问题,索性直接调用程序。具体图形化的细节就不说了, 了解了gtk的一些规则后真没什么说的,写就行了。有些细节没有再 细致的处理,如组件大小之类的,这周作业略多,时间不太够,望谅 解。
运行效果
------------------------------------------------------------------------------
回答问题
你现在使用的代码规范是什么, 和上课前有什么改进?
答: 现在比较注意代码的模块化,并尽量让更多代码得到重用.代码要写得好其实很不容易,需要注意到实现效率和可扩展性.而面向对象可能是一种提高模块化和可扩展性的方法.
你的同伴有哪些优点 (列出至少三点), 和那些需要改进的地方 (列出至少三点)
答:代码能力强,学习效率高,并且具有一定的沟通能力.需要改进的地方:坚持用c语言写图形化,坚持GTK(其实用python+Qt很方便的),太坚持自己的看法.
你的代码从 作业2 到 作业3 经历了哪些变化? 哪些代码需要重构 (看关于代码重构的资料), 哪些需要重写, 为什么?
答:由于作业3只是在原来的基础上增加了一个图形化程序,所以原代码基本不用变化,两个代码之前的通讯是通过作业2运行结果输出的文件来的.在作业3中,主要程序是作业3中增加的图形化程序,而在图形化程序中去调用作业2的程序,基本不需要重构.
你的设计是如何保证 不同的 maxsum.exe 命令行最后在一个GUI 的界面显示的? (C++ 的设计模式中有singleton 的概念, 说明一个类的实例如何在一个进程中保持单例, 我们这里谈的是软件如何在操作系统中保持 singleton)
答:只需要保持图形化界面存在,运行一次命令之后增加一个tab就行了.由于对C++不熟所以这个问题不会回答..
当然, 请继续记录时间的估计和你实际的用时:
Personal Software Process Stages | 时间百分比(%) | 实际花费的时间 (分钟) | 原来估计的时间 (分钟) | |
Planning | 计划 | |||
· Estimate | · 估计这个任务需要多少时间,把工作细化并大致排序 | 10 | 10 | 10 |
Development | 开发 | |||
· Analysis | · 需求分析 (包括学习新技术) | 30 | 2*60 | 1*60 |
· Design Spec | · 生成设计文档 | 0 | 0 | 0 |
· Design Review | · 设计复审 (和同事审核设计文档) | 0 | 0 | 0 |
· Coding Standard | · 代码规范 (制定合适的规范) | 5 | 10 | 10 |
· Design | · 具体设计 | 10 | 30 | 60 |
· Coding | · 具体编码 | 30 | 4*60 | 3*60 |
· Code Review | · 代码复审 | 0 | 0 | 0 |
· Test | · 测试(自我测试,修改代码,提交修改) | 10 | 30 | 20 |
Reporting | 总结报告 | 5 | 10 | 10 |
| 0 | 0 | 0 | |
| 0 | 0 | 0 | |
Total | 总计 | 100% | 总用时 7.5h | 总估计的用时 5.75h |