📄 复习1.txt
字号:
基础
异常处理的关键字及作用
try:产生异常
catch:处理异常
finally:不管有没有异常必执行
throws:在方法声明处声明一个异常,调用者必须对这个异常进行处理
throw:在方法内抛出一个异常
抽象类与接口的区别
一个类只可以继承一个抽象类
抽象类即可有方法的实现又可以有方法声明
当功能需要累积时,用抽象类
一个类可以实现n个接口
接口只提供方法的声明不提供方法的实现
当定义一个标准,功能不需要累积时用接口
final、finally、finalize的区别
final:不可变
finally:异常处理中,有没有异常必执行
finalize:是类级的一个方法,当虚拟机回收实例前执行
软件开发的过程:
1、需求分析(25-30%):在面试时说明自己参与了某个项目的某个模块从需求到设计到开发的所有过程,
一定客户签字认可,在合同中要说明验收时以需求说明书的内容为准,
若有改动,需与商务另行商议。
成果:
需求说明书,具体内容如下:
demo(界面原型):需求的可视化
需求特征列表:简要的说明系统的功能,确定优先级及风险度
用例图:说明系统整体的功能
角色:
角色:系统的参与者
用例:一个功能
系统边界:功能范围
关系:
角色与角色:泛化(实线+三角)
用例与用例:
扩展:---extend-->可用可不用
包含:---include---->必须调用
角色与用例:调用(实线+箭头)
用例说明:
1、用流程图(活动图)说明
开始
结束
判断
分支
泳道
汇集
2、写用例说明文档,其有六大元素
功能描述
参与者
前置条件:前提
后置条件:结果
基本流:最正常的情况
扩展流:可能及出错的情况
2、整体设计(20-30%)
1、分析业务流程
bbs
登陆注册
浏览、发新帖、回复
短消息
用户管理
版块管理
帖子管理
2、根据业务 =>设计业务实体=>类图
讨论区(1) 版块(0..n)
版块(1) 主帖(0..n)
主帖(1) 回帖(0..n)
用户(1) 帖子(主帖、回帖)(0..n)
用户(1) 消息(0..n)
***(数据库)e-r图的的过程
1、外模型:根据业务找业务实体,与具体技术无关
2、概念模型:与具体的技术整全在一起
过程:
找实体
接关系
写属性
三级范式:
有主键
完全依赖于主键
不出现传递依赖
***类图:
角色:
接口
类
关系:
继承:实线+三角
实现接口:虚线+三角
依赖:虚线+箭头
关联:实线+箭头
聚集:实线+空心菱
组成:实线+实心菱
3、确定项目的技术框架
框架设计的原则:上层依赖于下层,尽量减少下层对上层的
依赖,层与层之间通过接口调用。
模式的目的:提高代码的可扩展、可维护性
模式的原则:增加开放,修改关闭,面向接口抽象类编程
常用的模式:
最好画图
simplefactory:简单工厂,有三个角色
工厂:产生具体产品返回抽象产品
抽象产品:一个接口或抽象类
具体产品:具体的实现
增加一个产品时不用修改客户端,只需修改工厂,
如果用了返回,就不用修改工厂,只需修改配置,spring
用的就是返射,是超级工厂。
单例:整个虚拟机中只有一个实例。三大特征:
1、私有所构造子
2、私有的静态属性类型是它本身
3、公有的静态方法,对象为空时产生一个新的,
不为空直接返回
代理:代理与真实对象实现的是同一接口,将真实对象作为代理的属性
向客户端公开的代理,客户端调用代理的方法时,代理找到真实对
象,调用真实对象方法,在调用之前之后可以提供事务、日志、安
全等服务。
模板:父类提供抽象方法及具体方法,具体方法调用抽象方法,
抽象方法由子类实现,向客户端公开的子类,客户端通过
父类的具体方法调用子类实现的抽象方法,为子类
提供服务。
装饰:有三个角色,通用接口,本原,装饰,将通用接口聚集到
装饰中,所在可以将本原或装饰通过构造子注入到另一个装饰中,
装饰可以有很多子类,可以将本原或装饰通过构造
子注入到另一个装饰中,将多个装饰的功能随意组合。
轻量级的框架
jsp&servlet&dao&jdbc:用的model2,速度是最快的,开发效率不高。
M:
facade&dao&jdbc
C:
serlvet
V:
jsp
通过jsp将请求发给servlet,servlet通过
FacadeFactory产生具体的Facade返回一个IFacade接口,通过IFacade接口
调用Facade的具体方法。
Facade通过dao的抽象工厂产生具体的工厂,通过具体的工厂产生具体的dao,
返回dao接口给业务层。
Facade执行完后将结果返回给servlet,servlet转发到下一个页面。
Servlet用了模板模式可以提供错误处理、事务、页面跳转的服务。
struts&dao&hibernate:速度较快,因为我们要自己实现工厂,并不是所有的一切
都是返射,相对spring来说速度更快一些。
struts:
mvc,请求处理过程
用一个模板模式提供通用错误、事务、跳转服务。
将IFacade接口作业其属性,通过FacadeFactory工厂产生具体的Facade
返回一个Facade接口。
facade
IFacade接口
Facade实现类
FacadeFactory:facade工厂
dao接口作为Facade的属性,通过AbstractFactory调用具体的DaoFactory
产生具体的dao实例,返回dao接口。
dao:
dao
daoImpl
DaoFactory:产生daoImpl实例,返回dao接口
AbstractFactory:通过返射、工厂、单例产生具体的DaoFactory,返回
AbstractFactroy,因为具体的工厂继承于抽象的工厂,客户端
调用的还是具体工厂方法。
hibernate
核心类
核配置文件
struts&spring&hibernate/ibatis:这是当前最通用、最快速、藕合度最低的开发方式
但也有一个问题spring一切都是返射,速度慢。
struts/hibenate/ibatis要解析xml文件、要大量用到返射,所以速度慢。
一般适合于中小型系统(并发量<500),大型系统有些不适合需要调整。
struts已是MVC
spring是一个超级工厂,在spring中配置的都是实现类,在代码中得到都是接口。
hibenate/ibatis是o/r Mapping
框架结构:
struts:
mvc
请求处理过程
在spring中加入bean标签,配置具体的action,通过set方法将Facade代理
注入到action的IFcade接口中。
Facade
IFacade接口
Facade实现类
在applicationContext.xml配置具体的Facade类,在配置Facade的Aop服务时,
先配置抽象代理AbstractProxy其是TransactionProxyFactoryBean,说明装备
TransactionManager,说明连接点TransactionAttributes。再配置具体的
代理,继承于AbstractProxy,通过target指向真实的对象。
通过set方法注入将具体的Dao注入到Facade的Dao接口属性中。
Dao
dao接口
dao的实现 extends HibernateDaoSupport/SqlMapClientSupport
在applicationContext.xml中配置具体的dao,向Facade返回dao接口。
hibernate
在applicationContext.xml中配置dataSource、sessionFactory,
通过set方法注入将sessionFactory注入到dao实现类中。
ibatis:
在applicationContext.xml中配置dataSource、sqlMapClient,
通过set方法注入将sqlMapClient注入到dao实现类中。
3、详细设计
对于开发能力比较强的团队,可以不做详细设计。
时序图:
作用:找类、找方法、验证系统的正确性
元素:
纵轴:时间,对象的生命周期
横轴:说明对象与对象的交互
4、编码(25-30%)
5、测试(10%)
uml
ooa与ood的区别?
ooa:面向对象的分析,根据客户的业务找业务实体,与具体的技术无关,客户可以看懂。
ood:面向对象的设计,是ooa的全集,与具体的技术框架相结合进行设计。
面向过程与面向对象的区别?
面向过程:
1、现实世界是对象,其在分析过程中是对象,
在设计过程不是对象而是方法与方法之间的调用,
容易与现实脱离,容易出错。
2、因为是方法与方法之间的调用,重用性不高,
无法达到宏观层次上的控制。
3、开发难、维护难、可扩展性、重用性差。
面向对象:
1、现实世界是对象,其在分析过程中是对象,
在设计过程还是对象
分析设计与现实接近,降低了开发的难度。
2、继承可以让概念在宏观层次重用,当层与层之间通过
接口或抽象类调用时,他们所依赖的不再是具体的实现
细节,而是宏观商业逻辑即接口、抽象类,具体的实现
是可以随时被替换的。
3、技术在不断的更新,但业务变化较少,
业务实体可以很好的重用。
3、开方方便、好维护、好扩展
什么是模型?现实的浓缩。
模型的作用?
1、便于分析、认识世界
2、便于存档、沟通
3、便于决策。
模型的原则?
1、模型好坏决写系统的成败。
2、与现实越接近说明模型越正确。
3、模型不止一个,而是多个,它从不同的侧面说明现实的世界。
4、根据不同人的需求,模型有不同的实现细节。
九大图形:
类图:贯穿软件开发的所有过程,从需求到整体到详细到开发到测试
use-case(用例图):是系统分析员与客户沟通的桥梁
时序图:用于详细设计阶段,用于找类、找方法、验证系统的正确性
活动图:用于需求阶段说明具体业务的流程
协作图:与时序图功能类似,但没有时间的概念,通过序号说明
交互顺序。
状态:一个对象在不同动作的作用下状态的改变。
元素:
对象
方法
构件:组件与组件的依赖关系或层与层的依赖关系。
元素:
组件
部署:说明主机与主机的关系,找出系统运行的瓶颈。
元素:
主机
对象图:不般不画
活动图作用及元素?
主要用在需求分析阶段,说明某一个用例的业务流程。
元素如下:
开始
结束
状态
处理(动作)
判断
分支
汇集
泳道:说明不同角色所做的工作
软件开发的过程模型:
1、瀑布模型
前一个阶段结束并审核通过后才可以开始下一个阶段
缺:
不灵活
不适合大型
需求模糊的系统
2、螺旋模型:迭代式,每一次迭代要将软件开发的流程再走一遍。
优:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -