在设计软件的时候,有时假思维没有转化过来。常常会以流程化或过程化的思维来设计与编码。而流程化的设计主要是一些代码的堆积,有时会出现混乱,虽然我用用的是JAVA这个彻底地面向对象的语言。可实际上设计的时候会感觉到函数式编程或过程结构化编程。这样会导不能致一些不记后果:
1.代码没有层次性,归类,混乱,不易阅读。
2.代码重用性差。这个项目做完以后,里头的一些模块很难再服务于其他系统.
3.代码中没有应用到面向对象编程思想,比如接口(interface),变量的生存周期,抽象(abstract)与继承(inherit)。以及覆盖(override),以及模块化思想(低内聚,高耦合)。有时个个模块的耦合性太大。导致代码后期维护困难。而面向对象就是为处理这个问题而出现的。所以在应用与开发的过程中,应该尽量以类与对象为实体,考虑系统的动态行为方式。
包括:
1.抽象
2.对象与类
3.对象之间的交互
4.对象之间的关联
等等
其实概括成一句话就是充分理解对象的角色,职责,以及交互。只有充分理解对象的这些行为和属性,以及属性的生存周期(有时把属性当成local properties, class scope proprities也可).
下面我以IM即时通信系统为例:
去分析一下系统的功能模块
实现群聊和私聊。用户列表。消息推送。文件传输。天气预报。用户签名。
语音视频,上线下线通知。网络硬盘。传输表情。单点登陆到其他网站或系统。消息历史查询。
外观界面修改等等(注意要原创性开发)开始完全模似QQ,YY进行开发。
上面是这个系统的一些基本需求。你能够抽取出它的一些类与对象吗?你能够定义它们的角色以及职责,它们之间的交互嘛。 当然要做好这件事情是非常不容易的。
1.具有良好的协议,比如XMPP协议
2.具有良好的框架与结构。比如osgi,MVC(swing,qt,等)
3.具有良好开发经验的框架设计者与程序员
................................................................
下面是我学习过程中的一些技术总结,希望跟大学一起学习与交流.
1.dom4j.jar api解的xml文件
2.正则表达式,解析字符串 oro.jar
3.luncene.jar查询与检索全文API
4......................
5.JDBC ,iBatis,Hibernate,JPA
6.Spring ,EJB
7.Socket,tcp/ip,mina,java.nio
8.java.io,java输入输出
9.面向对象设计基础,abstract,interface,override等
10.java gui (swing,swt,gwt,flex)
11.java多线程,泛型,集合,异常处理机制等等
12.j2me,android嵌入式手机开发
13.windows,linux,unix系统搭建环境等等
14.海量数据处理,hadoop,mongoDB,应用
15.java模块化osgi
分享到:
相关推荐
Java数据结构与面向对象编程基础
VFP 面向对象编程基础VFP 面向对象编程基础VFP 面向对象编程基础VFP 面向对象编程基础
面向对象,以及区别与面向过程,理解类和对象的概念,设有的实验
Java面向对象编程基础PPT课件.pptx
面向对象编程基础正规版资料.ppt
【推选】面向对象编程基础PPT资料.ppt
第章面向对象编程基础ppt课件.ppt
第5章-JAVA面向对象编程基础.ppt
面向对象编程基础知识,基本概念、面向对象思想
python强大的面向对象能力,让你更好的理解python核心语法
面向对象编程基础ppt课件.ppt
面向对象编程基础PPT课件.pptx
Java面向对象编程基础1.ppt
使用.NET 2.0 模版的面向对象编程基础
第4章面向对象编程基础.ppt
C面向对象编程基础学习教案.pptx
C面向对象编程基础PPT课件.pptx