小编Vic*_*tor的帖子

你如何设计面向对象的项目?

我正在开发一个大型项目(对我来说),它将有许多类,需要可扩展,但我不知道如何规划我的程序以及类需要如何交互.

我在几个学期后参加了OOD课程并从中学到了很多东西; 比如编写UML,并将需求文档翻译成对象和类.我们也学习了序列图,但不知怎的,我错过了讲座或其他什么,他们并没有真正坚持我.

在以前的项目中,我尝试过使用从课程中学到的方法,但通常最终得到的代码一旦我能说"是的,看起来像我的想法"我不想挖掘泥土添加新功能.

我有一份史蒂夫麦康奈尔的代码完整副本,我不断听到这里和其他地方都很棒.我阅读了有关设计的章节,似乎没有提供我正在寻找的信息.我知道他说这不是一个削减和干燥的过程,它主要基于启发式,但我似乎无法将他的所有信息都应用到我的项目中.

那么你在高级设计阶段(开始编程之前)做了些什么来确定你需要什么类(特别是那些不基于任何"真实世界对象"的类)以及它们如何相互作用

具体来说,我对您使用的方法感兴趣?您遵循的流程是什么,通常会形成一个良好,干净的设计,能够代表最终产品?

architecture oop class-design

229
推荐指数
10
解决办法
10万
查看次数

需要一个整数?打开()

我有一个非常简单的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()?为什么要整数?

该行之后的任何内容都是未经测试的.简而言之:为什么它会给我错误,我该如何解决?

python file-io integer argv

38
推荐指数
4
解决办法
8万
查看次数

使String变得漂亮或丑陋的算法

我很难找到以下谜题的算法 - 如果一个字符串连续有3个元音,或者连续5个辅音,或者两者都有,则称为丑陋.如果字符串不丑,则称其为nice.给你一个字符串s,由大写字母('A' - 'Z')和问号('?')组成.你能找到一个算法,通过用字母替换问号来判断字符串是否可以变好吗?

示例 -

  1. "EE?FFFF" - 不能做得很好.插入辅音或元音会使它变得难看.

  2. "H 24 LOWOR ??" - 可以做得很好.

PS - 不是家庭作业,而是互联网上编程难题的一部分.

language-agnostic algorithm

10
推荐指数
2
解决办法
674
查看次数

漂浮小于FLT_MIN.为什么FLT_TRUE_MIN?

试图看看在浮动下溢的情况下会发生什么,我发现我可以使浮点数比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.

  1. 是否有更有效的方法来证明数据类型的限制?
  2. 为什么FLT_MIN实际上不是最小的浮点值?我应该使用其他常量吗?输入上一个问题后,我找到了FLT_TRUE_MIN.这个号码是多少?

c floating-point gnu99

6
推荐指数
2
解决办法
1986
查看次数

来自jython的带有pydev的.class文件

我第一次尝试jython是一个java/jython项目,我正在使用pydev在eclipse中编写.

我创建了一个java项目,然后通过RightClick项目设置为pydev项目>> pydev >>设置为...你明白了.然后我添加了两个源文件夹,一个用于java,一个用于jython,每个源文件夹都有一个包.我将每个文件夹设置为项目的构建路径.我想我已经让你知道了所有这些,所以希望你能告诉我我是否正确设置项目.

但真正的问题是:如何将我的jython代码变成类文件,以便java代码可以使用它?首选方法是eclipse/pydev会自动为我执行此操作,但我无法弄明白.jython用户指南中提到的东西暗示它是可能的,但我无法在任何地方找到它的信息.

编辑:我确实在这里这里找到了一些信息,但事情并不太顺利.

我一直非常密切地关注第二个链接中的指南,但我无法弄清楚如何让jythonc为我的python类创建一个构造函数.

python java eclipse jython pydev

3
推荐指数
1
解决办法
3724
查看次数

选择一个excel java api

我需要做的就是打开一个MS excel表 - 不确定哪种(2003年,2007年等) - 并将每行中的信息解析为一个对象.我只执行只读操作.

最适合此任务的Apache POI,JExcelAPIOpenXLS

我不想再发现api了,但如果你确定这些都不是最好的那么我会接受你的意见.

java excel jexcelapi openxls apache-poi

3
推荐指数
1
解决办法
1万
查看次数

我如何加快速度?

以下代码列出了名称和"数字",并为每个人提供了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)

sorting random bash scripting list

2
推荐指数
3
解决办法
1692
查看次数

JEable中的JEditorPane中的超链接

我发誓......我希望这是我要问的最后一个问题,但我要发疯了.

我有一个使用自定义TableCellRenderer的JTable,它使用JEditorPane在JTable的各个单元格中显示html.如何处理点击JEditorPane中显示的链接?

我知道HyperlinkListener但没有鼠标事件通过JTable到EditorPane来处理任何HyperlinkEvent.

如何在JTable中的JEditorPane中处理超链接?

html java swing jtable jeditorpane

2
推荐指数
1
解决办法
2857
查看次数

这个WHERE子句有什么问题?

这个查询不起作用的原因是什么?如果我只是排除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
- 关键
- 项目
- 语言

语言
- 键
- 名称

php mysql

0
推荐指数
3
解决办法
193
查看次数