找回密码
 FreeOZ用户注册
查看: 3547|回复: 28
打印 上一主题 下一主题

[论坛技术] 一个小程序:网络聊天室,Java版 - 从设计到实现

[复制链接]
跳转到指定楼层
1#
发表于 20-6-2009 21:42:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?FreeOZ用户注册

x
简单说明:

这是一个用来做assessment的项目,项目其实不复杂,要求也不高。
不过是我自己画蛇添足地把它当实际项目做出来而已。

项目最后写成一个 2.5k 行的Java程序,我用了2.5天时间来写代码,
前面几天在写开发文档。因为时间问题,文档只完成了70%左右(文档不是要求),
也直接导致了后面的程序的质量。

总的来说,我最满意的地方是通过前期的分析,代码的重用性得到保证,扩展性也
还可以。基于这个项目,我可以整理出一个小的程序库,这也是我最想要的东西。

我自己不满意的地方主要是在设计的时候对线程的考虑过少,在实现的时候才发现
一些问题,但因为时间太紧,代码量不小,所以没有做得很好。

下面是我的一系列文档。有兴趣的朋友不妨自己玩一玩,不论是根据题目来实现,
还是根据我的文档来写代码,都可能是一件有趣的事。

如果你对于我的设计和实现有兴趣,不妨和我联系。

评分

参与人数 4威望 +100 收起 理由
MillerYang + 30 设计很详细!等代码学习。。
清风不写字 + 30 谢谢分享!
NoChoice + 10 谢谢分享!
ubuntuhk + 30 你太有才了!

查看全部评分

回复  

使用道具 举报

2#
 楼主| 发表于 20-6-2009 21:54:00 | 只看该作者

Requirements

Server
The server application should have a window to show the names of the people currently using the application and the messages they send. Also, for convenience in testing, show the address of the server host. A button could be included to shut the server down.
回复  

使用道具 举报

3#
 楼主| 发表于 20-6-2009 22:05:43 | 只看该作者

Use Cases

Start Server
回复  

使用道具 举报

4#
 楼主| 发表于 20-6-2009 22:08:47 | 只看该作者

Conceptual Model

回复  

使用道具 举报

5#
 楼主| 发表于 20-6-2009 22:12:48 | 只看该作者

System Architecture

login
回复  

使用道具 举报

6#
 楼主| 发表于 20-6-2009 22:18:27 | 只看该作者

Sequence Diagrams - Start Server

回复  

使用道具 举报

7#
 楼主| 发表于 20-6-2009 22:19:30 | 只看该作者

Sequence Diagrams - Close Server

Server side
回复  

使用道具 举报

8#
 楼主| 发表于 20-6-2009 22:20:55 | 只看该作者

Sequence Diagrams - User Login

client side
回复  

使用道具 举报

9#
 楼主| 发表于 20-6-2009 22:21:44 | 只看该作者

Sequence Diagrams - Send Message

client side
回复  

使用道具 举报

10#
 楼主| 发表于 20-6-2009 22:24:15 | 只看该作者

Sequence Diagrams - Exit Chatroom

client side
回复  

使用道具 举报

11#
 楼主| 发表于 20-6-2009 22:30:01 | 只看该作者

class diagram - server

回复  

使用道具 举报

12#
 楼主| 发表于 20-6-2009 22:30:40 | 只看该作者

class diagram - gui

回复  

使用道具 举报

13#
 楼主| 发表于 20-6-2009 22:31:23 | 只看该作者

class diagram - Client Related Class Diagram

回复  

使用道具 举报

14#
 楼主| 发表于 20-6-2009 22:31:56 | 只看该作者

class diagram - Message Class Diagram

回复  

使用道具 举报

15#
 楼主| 发表于 20-6-2009 22:32:26 | 只看该作者

class diagram - network

回复  

使用道具 举报

16#
 楼主| 发表于 20-6-2009 22:35:03 | 只看该作者

有没有人希望我贴代码?

2.5k的代码,35个.java文件
回复  

使用道具 举报

17#
 楼主| 发表于 20-6-2009 22:42:01 | 只看该作者

程序运行结果

回复  

使用道具 举报

18#
发表于 21-6-2009 09:47:23 | 只看该作者
谢谢分享, 代码可以打个包放上来。

我以前上学的时候也做过一个路由器最短路经模拟也是用java写的,7个路由器在一个拓扑网络里面动态相互交换routing table,任何一个路由器上面的机器发信息到指定地址,路由器要负责找到最短路经,如果有路由器down了或者reset,其他路由器要更新routing table,并要求动态计算最短路经
回复  

使用道具 举报

19#
 楼主| 发表于 21-6-2009 10:40:40 | 只看该作者
原帖由 NoChoice 于 21-6-2009 09:47 发表
谢谢分享, 代码可以打个包放上来。

我以前上学的时候也做过一个路由器最短路经模拟也是用java写的,7个路由器在一个拓扑网络里面动态相互交换routing table,任何一个路由器上面的机器发信息到指定地址,路由器要 ...


这道是算法题吧,摸拟RIP?
我打算把代码发到google code之类的地方去,然后链接过来。
等我写完现在这份垃圾报告再说。
回复  

使用道具 举报

20#
发表于 21-6-2009 13:17:02 | 只看该作者
厉害呀
回复  

使用道具 举报

21#
发表于 21-6-2009 16:34:47 | 只看该作者
学习一下。
回复  

使用道具 举报

22#
发表于 21-6-2009 19:04:36 | 只看该作者
原帖由 key 于 21-6-2009 10:40 发表


这道是算法题吧,摸拟RIP?
我打算把代码发到google code之类的地方去,然后链接过来。
等我写完现在这份垃圾报告再说。


是rip模拟
期待lz连接
回复  

使用道具 举报

23#
发表于 22-6-2009 14:13:25 | 只看该作者
key太强大!
本帖做国内本科论文足以。。。
回复  

使用道具 举报

24#
 楼主| 发表于 22-6-2009 17:47:29 | 只看该作者

项目源代码已经上传Google Code

http://code.google.com/p/brave-netchat/

这套代码写得很匆忙,也没有时间做unit test,
所以多线程部分一定会有bug。
有兴趣的同学不妨帮我改一下。

评分

参与人数 1威望 +20 收起 理由
shenlh + 20 Key大侠,我在http://code.google.com/p/br ...

查看全部评分

回复  

使用道具 举报

25#
 楼主| 发表于 22-6-2009 17:49:29 | 只看该作者
原帖由 procoder 于 21-6-2009 13:17 发表
厉害呀


pro同学过奖了,
你的uml文档给了不少启示给我,谢谢先。

另外,conceptual model那里我不是太满意,
理论上似乎还需要指出entity之间的relationship吧?
回复  

使用道具 举报

26#
发表于 16-12-2009 22:31:00 | 只看该作者
你是用来做CDR的?
回复  

使用道具 举报

27#
发表于 10-6-2010 19:54:34 | 只看该作者
程序应该是很简单的东西啊,这类型的作业基本属于本科第一个作业的内容,弄弄就好了呀? 楼主弄得文档这么全,厉害
回复  

使用道具 举报

28#
发表于 10-6-2010 20:11:12 | 只看该作者
不过MVC 和抽象基类还有EXCEPTION HANDLER到是分得很清楚, 很好的习惯  如果没看错,楼主的SOCKET 写得好有CORBA的味道哦. 有BASE,HELPER

[ 本帖最后由 bthy 于 10-6-2010 20:16 编辑 ]
回复  

使用道具 举报

29#
 楼主| 发表于 19-6-2010 07:56:24 | 只看该作者
这套东西的确有着眼MVC的分离,不过好象没有关于Exception handler部分吧?
我不会corba,哈哈。。。。想不到还有这个味着,就象黄蓉在压鬼岛做的羊腿一样。

我在这个课程设计中,最重要关注的是如何从sequence diagram变转到class diagram,一个是对应logical design,另一个则对应于physical design。
concept layer design用的是use cases diagram,还有一个叫system architecture的东西,是整体框架的考虑。
我喜欢activity diagram,在这里没有画出来。我通常从activity diagram开始画起,然后再考虑use cases。use cases的主要目的我觉得是系统模块的整理和定义,
当然是concept layer的定义了。

一直以来,如何平滑建立类图是我一直在思考的问题。我认为,拿起UML就直接类图,这和拿起电脑就直接coding没有质的区别。
我推崇的是传统的从概念到逻辑,再到物理实现的过程。就算是现在的OOA/OOD时代,这三步还是需要做的,只是这三个步骤之间的跨越间距比以前小很多而已。

Sequence diagram是一个很容易画出来的东西,我想做到的是,通过Sequence Diagram的进化,最后获得一个类的接口图,把主要的消息结构、类接口都定义出来,
然后再汇总在类图,以完成从逻辑设计到物理设计的进化。这个目的我想我在这套东西中已经做到了。

其实现在提介的DI/IoC概念又为这种逻辑设计到物理设计铺平了道路,我正在思考如何应用起来。
还有就是长期View页面实现的非程序员友好性(non-programmer-friendly)也让我们难以把OOA/OOD进行到底,
但GWT, Apache Click这类Web实现模型有可能帮我们解决这类问题。

对比Spring MVC,View层其实还有大量的代码无法让程序员来参与,或者参与得很痛苦。相比Apache Click,采用的是Page Component的概念来实现Web,
使得Web上的每一个东西都是程序员能控制的。而GWT走的路就更深远了,把整个界面实现都转化成程序语言。

有了这些系统工具的支撑,我们能做的事就更多了。

原帖由 bthy 于 10-6-2010 20:11 发表
不过MVC 和抽象基类还有EXCEPTION HANDLER到是分得很清楚, 很好的习惯  如果没看错,楼主的SOCKET 写得好有CORBA的味道哦. 有BASE,HELPER
回复  

使用道具 举报

您需要登录后才可以回帖 登录 | FreeOZ用户注册

本版积分规则

小黑屋|手机版|Archiver|FreeOZ论坛

GMT+10, 20-4-2024 04:57 , Processed in 0.075387 second(s), 47 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表