在学习的路上

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  3 随笔 :: 1 文章 :: 4 评论 :: 0 引用

公告

2008年7月28日 #

类的封装性即不能让外面的类随意修改一个类的成员变量;

在定义一个类的成员(包括变量和方法),使用private关键字说明这个成员的访问权限,只能被这个类的其他成员方法调用,而不能被其他的类中的方法所调用;

为实现封装性,常将类的成员变量声明为private,再通过public的方法来对这个变量进行访问。对一个变量的操作,一般都有 读取和赋值操作,我们一般定义两个方法来实现这两种操作,即:getXxx()与setXxx();

一个类就是一个模块,我们应该让模块仅仅公开必须要让外界知道的内容,而隐藏其他的一切内容。再进行程序设计时,应尽量避免一个模块直接修改或操作另一个模块的数据,模块设计追求强内聚(许多功能尽量在类的内部独立完成,不让外面干预),弱耦合(提供给外部尽量少的方法调用)。

posted @ 2008-07-28 23:08 曲家林 阅读(368) 评论(0) 编辑

2008年7月8日 #

关键字: 软件测试、需求管理

        某日,老师在课堂上想考考学生们的智商,就问一个男孩:“树上有十只鸟,开枪打死一只,还剩几只?”
男孩反问:“是无声枪么?”
“不是。”
“枪声有多大?”
“80~100分贝。”
“那就是说会震的耳朵疼?”
“是。”
“在这个城市里打鸟犯不犯法?”
‘不犯。”
“您确定那只鸟真的被打死啦?”
“确定。”老师已经不耐烦了,”拜托,你告诉我还剩几只就行了,OK?”
“OK。鸟里有没有聋子?”
“没有。”
“有没有关在笼子里的?”
“没有。”
“边上还有没有其他的树,树上还有没有其他鸟?”
“没有。”
“方圆十里呢?”
“就这么一棵树!”
“有没有残疾或饿的飞不动的鸟?”
“没有,都身体倍棒。”
“算不算怀孕肚子里的小鸟?”
“都是公的。”
“都不可能怀孕?”
“………,决不可能。”
“打鸟的人眼里有没有花?保证是十只?”
“没有花,就十只。”
老师脑门上的汗已经流下来了,下课铃响起,但男孩仍继续问:“有没有傻的不怕死的?”
“都怕死。”
“有没有因为情侣被打中,自己留下来的?”
“笨蛋,之前不是说都是公的嘛!”
“同志可不可以啊!”
“…………,性取向都很正常!”
“会不会一枪打死两只?”
“不会。”
“一枪打死三只呢?”
“不会。”
“四只呢?”
“更不会!”
“五只呢?”
“绝对不会!!!”
“那六只总有可能吧?”
“除非你他妈的是猪生的才有可能!”
“…好吧,那么所有的鸟都可以自由活动么?”
“完全可以。”
“它们受到惊吓起飞时会不会惊慌失措而互相撞上?”
“不会,每只鸟都装有卫星导航系统,而且可以自动飞行。”
“恩,如果您的回答没有骗人,”学生满怀信心的回答,“打死的鸟要是挂在树上没掉下来,那么就剩一只,如果掉下来,就一只不剩。”
老师当即倒! 

       用这篇笑话故事来做开头,笑过之后可能不少能会认为这个小朋友是需求调研的最佳人选。回顾软件开发上的许多案例,软件开发失败率一直居高不下,特别在外包开发这个领域中,这个值可能会更高一筹。在分析项目失败的原因的时候,需求的因素可能是失败的关键原因、需求不明确,客户对需求的变更频频等等。

    1.需求的调研

        需求调研是为需要说明书做前期工作,可以说需要说明书是从需求调研表中得到或抽取而出。需求调研是要了解客户希望所要开发的系统能够解决他们的问题,以及了解他们对系统的期望等等。需求调研是整个开发的基础,经过需求调研的结果整理出需求说明书作为后续开发使用。

        如果做的项目是一个陌生的一个行业(专业),这是往往需要专家或者顾问等角色的协助,但是作为调研人员最少要想办法了解个专业,或许你需要成为这个行业的专家,但最少要了解一定的专业知识(最少专业词汇你要知道)。这样客户的沟通才能达到顺畅,不会出现牛头不对马嘴的现象。

        在某些难度不是很大的行业或者项目,做需求调研的时候可以通过自学的方式了解行业的特点,这些项目往往因为规模比较小,也不会有专家的影子出现。但是作为调研的时候我们最需要了解的一些问题如:

1):客户目前的问题与苦难
2):客户现在的工作模式
3):客户对系统的期望
4):客户哪些要求是自己能做到的,那些是依靠系统来做
5):还有客户对系统开发方式以及时间的要求等等

        其实做需求调研的时候最重要的目的在于资料收集,或许小孩的那种打破砂锅的方式会引起客户的反感,但是实际项目中往往需要的就是这些比较周全的调研方式,能够考虑到的问题点都需要和客户确认,尽量避免想当然的做法,只是采用的方式可能需要优化一下,采用良好的方式,尽量得到客户的最大配合。
posted @ 2008-07-08 00:04 曲家林 阅读(164) 评论(4) 编辑

2008年7月4日 #

窗体控件无非就是有treeview和listview,摆放由自己摆放
以下是代码

 1using System;
 2using System.Collections.Generic;
 3using System.ComponentModel;
 4using System.Data;
 5using System.Drawing;
 6using System.Text;
 7using System.IO;
 8using System.Windows.Forms;
 9
10namespace WindowsApplication1
11{
12    public partial class Form1 : Form
13    {
14        public Form1()
15        {
16            InitializeComponent();
17        }

18
19        string lj = @"G:\";
20        private void Form1_Load(object sender, EventArgs e)
21        {
22            treeView1 .Nodes.Clear ();
23            treeView1.Nodes.Add(lj, Path.GetFileNameWithoutExtension(lj));//添加第一个节点
24            treeView1.Nodes[0].SelectedImageIndex = 1;
25            DGWJJ(lj,treeView1 .Nodes[0]);
26            //treeView1.Nodes[0].Expand();
27            BLWJJ(lj);
28
29        }

30
31
32        private void BLWJJ(string lj)
33        {
34            listView1.Items.Clear();
35            foreach (string zwjj in Directory.GetDirectories(lj))
36            {
37                listView1.Items.Add(zwjj, Path.GetFileNameWithoutExtension(zwjj), 0);
38            }

39            foreach (string zwjj in Directory.GetFiles(lj))
40            {
41                listView1.Items.Add(zwjj, Path.GetFileName(zwjj), 2);
42            }

43
44        }

45
46        private void DGWJJ(string lj, TreeNode node)
47        {
48            foreach (string zlj in Directory.GetDirectories(lj))
49            {
50                
51                    TreeNode t1 = node.Nodes.Add(zlj, Path.GetFileNameWithoutExtension(zlj));
52                    t1.ImageIndex = 0;
53                    t1.SelectedImageIndex = 1;
54                    DGWJJ(zlj, t1);
55               
56            }

57        }

58
59        private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
60        {
61            BLWJJ(e.Node.Name);   
62        }

63
64        private void listView1_DoubleClick(object sender, EventArgs e)
65        {
66            string lslj = listView1.SelectedItems[0].Name;
67            BLWJJ(lslj  );
68
69            DG(lslj,treeView1.Nodes[0]  );
70
71
72        }

73
74        private void DG(string lj,TreeNode tn)
75        {
76            foreach (TreeNode tn1 in tn.Nodes)
77            {
78                if (tn1.Name == lj)
79                {
80                   //tn.Expand;
81                   tn1.Expand();
82                    // tn1.ExpandAll();
83                }
             
84
85                DG(lj, tn1);
86            }

87        }

88
89        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
90        {
91
92        }

93    }

94}
posted @ 2008-07-04 21:22 曲家林 阅读(194) 评论(0) 编辑

才注册了自己的技术博客,以后就在这里写一下,自己的学习成果,刚做完一阶的毕设,收获了很多的知识,真的是受益匪浅,以后会更加努力的去学习新的技术.我的程序员之路现在正式开始.今天是一个值得纪念的日子,向下一个目标进发.
posted @ 2008-07-04 21:03 曲家林 阅读(6) 评论(0)  编辑

仅列出标题