我正在开发一个大型项目(对我来说),它将有许多类,需要可扩展,但我不知道如何规划我的程序以及类需要如何交互.
我在几个学期后参加了OOD课程并从中学到了很多东西; 比如编写UML,并将需求文档翻译成对象和类.我们也学习了序列图,但不知怎的,我错过了讲座或其他什么,他们并没有真正坚持我.
在以前的项目中,我尝试过使用从课程中学到的方法,但通常最终得到的代码一旦我能说"是的,看起来像我的想法"我不想挖掘泥土添加新功能.
我有一份史蒂夫麦康奈尔的代码完整副本,我不断听到这里和其他地方都很棒.我阅读了有关设计的章节,似乎没有提供我正在寻找的信息.我知道他说这不是一个削减和干燥的过程,它主要基于启发式,但我似乎无法将他的所有信息都应用到我的项目中.
那么你在高级设计阶段(开始编程之前)做了些什么来确定你需要什么类(特别是那些不基于任何"真实世界对象"的类)以及它们如何相互作用?
具体来说,我对您使用的方法感兴趣?您遵循的流程是什么,通常会形成一个良好,干净的设计,能够代表最终产品?
我有一个非常简单的python脚本,它应该扫描一个文本文件,其中包含格式为id =' value '的行并将它们放入一个dict中.python模块名为chval.py,输入文件名为in.txt.这是代码:
import os,sys
from os import *
from sys import *
vals = {}
f = open(sys.argv[1], 'r')
for line in val_f:
t = line.split('=')
t[1].strip('\'')
vals.append(t[0], t[1])
print vals
f.close()
Run Code Online (Sandbox Code Playgroud)
当我尝试运行它时,我得到:
回溯(最近一次调用最后一次):
文件"chval.py",第9行,在?f = open(sys.argv [1],'r')TypeError:需要一个整数
我正在使用python 2.4 ...因为我一直被要求不使用任何更新的东西,是否有一些我不知道的open()?为什么要整数?
该行之后的任何内容都是未经测试的.简而言之:为什么它会给我错误,我该如何解决?
我很难找到以下谜题的算法 - 如果一个字符串连续有3个元音,或者连续5个辅音,或者两者都有,则称为丑陋.如果字符串不丑,则称其为nice.给你一个字符串s,由大写字母('A' - 'Z')和问号('?')组成.你能找到一个算法,通过用字母替换问号来判断字符串是否可以变好吗?
示例 -
"EE?FFFF" - 不能做得很好.插入辅音或元音会使它变得难看.
"H 24 LOWOR ??" - 可以做得很好.
PS - 不是家庭作业,而是互联网上编程难题的一部分.
试图看看在浮动下溢的情况下会发生什么,我发现我可以使浮点数比FLT_MIN小得多.我在OS 10.9上使用xcode 5.1.语言方言是gnu99.
#include <stdio.h>
#include <stdlib.h>
#include <float.h>
int main(int argc, const char * argv[])
{
float underflow = FLT_MIN * 0.0000004;
printf("Float min is %f or %e.\nUnderflow is %f or %e\nMin float exp is %d.\n", FLT_MIN, FLT_MIN, underflow, underflow, FLT_MIN_10_EXP);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
打印:
Float min为0.000000或1.175494e-38.
下溢为0.000000或4.203895e-45
Min float exp为-37.
我第一次尝试jython是一个java/jython项目,我正在使用pydev在eclipse中编写.
我创建了一个java项目,然后通过RightClick项目设置为pydev项目>> pydev >>设置为...你明白了.然后我添加了两个源文件夹,一个用于java,一个用于jython,每个源文件夹都有一个包.我将每个文件夹设置为项目的构建路径.我想我已经让你知道了所有这些,所以希望你能告诉我我是否正确设置项目.
但真正的问题是:如何将我的jython代码变成类文件,以便java代码可以使用它?首选方法是eclipse/pydev会自动为我执行此操作,但我无法弄明白.jython用户指南中提到的东西暗示它是可能的,但我无法在任何地方找到它的信息.
我一直非常密切地关注第二个链接中的指南,但我无法弄清楚如何让jythonc为我的python类创建一个构造函数.
我需要做的就是打开一个MS excel表 - 不确定哪种(2003年,2007年等) - 并将每行中的信息解析为一个对象.我只执行只读操作.
最适合此任务的Apache POI,JExcelAPI或OpenXLS?
我不想再发现api了,但如果你确定这些都不是最好的那么我会接受你的意见.
以下代码列出了名称和"数字",并为每个人提供了15到90岁之间的随机年龄.
#!/bin/sh
file=$1
n=$2
# if number is zero exit
if [ "$n" -eq "0" ]
then
exit 0
fi
echo "Generating list of $n people."
for i in `seq 1 $n`;
do
let "NUM=($RANDOM%75)+15"
echo "name$i $NUM (###)###-####" >> $file
done
echo "List generated."
Run Code Online (Sandbox Code Playgroud)
有了它,我正在尝试列出1M名称.它很慢,我预料到了; 它太慢了,我失去了耐心,尝试了10K的名字.那也很慢,但它在几秒钟内就完成了.
我生成名称的原因是对它们进行排序.令我惊讶的是,当我对10K名称列表进行排序时,它是即时的.
怎么会这样?
是否有什么东西让这个变得不那么慢?排序和生成都是访问文件,那么排序如何更快?列表生成器中的随机数数学是什么减慢了它?
这是我的排序脚本.
#!/bin/sh
#first argument is list to be sorted, second is output file
tr -s '' < $1 | sort -n -k2 > $2
Run Code Online (Sandbox Code Playgroud) 我发誓......我希望这是我要问的最后一个问题,但我要发疯了.
我有一个使用自定义TableCellRenderer的JTable,它使用JEditorPane在JTable的各个单元格中显示html.如何处理点击JEditorPane中显示的链接?
我知道HyperlinkListener但没有鼠标事件通过JTable到EditorPane来处理任何HyperlinkEvent.
如何在JTable中的JEditorPane中处理超链接?
这个查询不起作用的原因是什么?如果我只是排除WHERE子句,以下查询将起作用.我需要知道它有什么问题.我知道表中存在$ key的给定值,为什么这不起作用?
$q = "SELECT * WHERE t1.project=$key
FROM project_technologies AS t1
JOIN languages AS t2
ON t1.language = t2.key";
Run Code Online (Sandbox Code Playgroud)
表格包含以下字段:
project_technologies
- 关键
- 项目
- 语言
语言
- 键
- 名称
java ×3
python ×2
algorithm ×1
apache-poi ×1
architecture ×1
argv ×1
bash ×1
c ×1
class-design ×1
eclipse ×1
excel ×1
file-io ×1
gnu99 ×1
html ×1
integer ×1
jeditorpane ×1
jexcelapi ×1
jtable ×1
jython ×1
list ×1
mysql ×1
oop ×1
openxls ×1
php ×1
pydev ×1
random ×1
scripting ×1
sorting ×1
swing ×1