软件设计思想概述

文中所述仅为自我便于理解,表述简单不全。不适合深入研究,详细的介绍可参考:http://blog.csdn.net/zhengzhb/article/category/926691

 

面向对象编程四大特性

 

抽象:对有共性的事物中待关注的部分加以抽象成接口或类。包括过程抽象和数据抽象

封装:将具有共性的一类事物的共性部分抽象出来形成一系列封闭的、自治的数据与过程,通过private、protected、public来决定对外开放的级别。封装要做到低耦合高内聚。

 

继承:当具有某些共性时,一个新类可以通过继承另一个已实现的类的方法、数据并加以扩展实现

多态:不同子类对象实现父类的抽象方法的行为可以不一样 (注意与重载的区别)

 

 

面向对象编程6大原则

 

单一职责原则:一个类最好只实现一个粒度足够小的功能,该功能不能再被细分。防止类中出现两个功能相互影响等情况。

里氏替换原则:子类的实现不影响父类已有的非抽象方法调用,只扩展不修改。防止因子类重载或重写父类方法造成调用混淆、功能紊乱等的情况。

依赖倒置原则:高层级的类尽量不要直接对低层级的类产生依赖,而是尽量面向接口编程,通过接口(也可以是方法或委托)传递依赖关系,防止出现低层级的类修改导致原有的高层级调用关系失效的情况。

接口隔离原则:接口实现的功能粒度应最小化,即多个功能应分成多个独立的接口(原则上如此,实际编码可适当酌情设计,把握度),防止类在实现接口时需要实现该类不必要的功能,造成代码复杂度增加

迪米特法则:对象的行为实现要保持对其他对象尽量少的了解,即对象的实现尽量避免对其他的类的依赖,做到高内聚低耦合。 例如A的实现与B和C产生了关联,而B和C属于聚合关系,A的实现可以只和B关联,则就没必要使A和B产生直接的关联。所以一个类应尽量少的依赖其他类,同时也要尽量少的让其他类对你产生依赖。防止修改类时出现藕断丝连的情况

开闭原则:对扩展开放,对修改关闭。即要求用抽象构建框架,用实现扩展细节(http://blog.csdn.net/zhengzhb/article/details/7296944);专门函行为要单一功能,通用行为要抽象。防止后期需求变更引起的代码修改量大

 

面向对象编程的23种特性

 

 

附:

多态与重载的区别:http://blog.csdn.net/weigb/article/details/1864192 多态是对虚方法的重写,编译时无法确定方法调用情况。重载允许一个类中有重名的方法,方法中参数不同。

 

第一章 软件工程基本观念 1.1 软件工程的目标与常用模型 1.2 软件开发的基本策略 1.2.1 复用 1.2.2 分而治之 1.2.3 优化——折衷 1.3 一些不正确的观念 1.4 一些有争议的观念 1.5 小结 第二章 程序员与程序经理 2.1 了解程序员 2.2 了解程序经理 2.3 程序员升为经理后是否还要编程 2.4 经理与技术队伍的建设 2.5 向错误与失败学习 2.6 提高综合素责 2.7 小结 第三章 项目计划与质量管理 3.1 项目计划 3.1.1 知己知彼 3.1.2 进度安排 3.2 零缺陷质量管理的观念 3.2.1 高目标 3.2.2 可执行的规范 3.3 软件的质量因素 3.3.1 正确性与精确性 3.3.2 性能与效率 3.3.3 易用性 3.3.4 可理解性与简洁性 3.3.5 可复用性与可扩充性 3.4 质量检查 3.5 小结 第四章 可行性分析与需求分析 4.1可行性分析的要素 4.1.1 经济 一、成本——收益分析 二、短期——长远利益分析 4.1.2 技术 4.1.3 社会环境 4.1.4 人 4.2 可行性分析案例——投资软件公司失败的教训 4.2.1可行性分析案例之一 4.2.2 可行性分析案例之二 4.2.2 可行性分析案例之三 4.3 需求分析为什么困难 4.3.1 客户说不清楚需求 4.3.2 需求自身经常变动 4.3.3 分析人员或客户理解有误 4.4 如何进行需求分析 4.4.1 应该了解什么 4.4.2 通过什么方式去了解 4.5 小结 第五章 系统设计 5.1 体系结构设计 5.1.1 层次结构 一、上下级关系的层次结构 二、顺序相邻关系的层次结构 三、其它的层次结构 5.1.2 Client/Server结构 5.2 模块设计 5.2.1 信息隐藏 5.2.2 内聚与耦合 5.2.3 封闭——开放性 5.3 数据结构与算法设计 5.4 用户界面设计 5.4.1 界面设计中美的需求与导向作用 5.4.2 界面美的内涵 一、界面的合适性 二、界面的风格 三、界面的广义美 5.5 系统设计示例——支持协同工作的交互式三维图形软件开发系统 5.5.1 设计背景 5.5.2 通用交互式三维图形软件开发工具 Intra3D 2.0 5.5.2.1 主要模块和功能 5.5.2.2 用户界面设计 5.5.3 支持协同工作的网络通讯开发系统 CNC 1.0 5.5.3.1 CNC 客户程序的API设计 5.5.3.2 CNC Server的设计 5.5.4 应用示例 5.6 小结
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值