码迷,mamicode.com
首页 > 其他好文 > 详细

软件构造2

时间:2018-06-16 21:49:25      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:code   gen   中心   参数类型   server   实例   CM   错误   分享图片   

HIT - 软件构造

 

3章:

 

基本数据类型:int,long,boolean,double,char,short,byte,float

 

对象数据类型:classes,interface,arrays,enums,annotations

 

Java是一种静态类型的语言,所有变量的类型在编译是已知的,Java可以静态检查,在像python这样的动态类型语言中,这种检查被推迟到运行时。

 

静态检查的类型:语法错误,名字错误,参数个数错误,参数类型错误,返回错误

 

动态检查的类型:非法参数,非法返回值,数组越界,空指针引用

 

不变性:不变数据类型创建完后,值不可变(final)

 

一个final类不能被继承,一个final变量不能被改变,一个final方法不能被重写

 

String为不变类型,StringBuilder为可变类型

 

快照图:表示程序的内部状态,它的堆栈在运行时的方法和他们的局部变量及其堆,变量为单箭头,不变量为双箭头

 

技术分享图片

 

行为等价:一个实现代替另一种实现

 

前提条件是客户的义务,这是调用方法的状态。后置条件是实现者的义务,如果前提条件被满足看则后置条件必须被满足,比如:返回适当的值,抛出指定的异常,修改或不修改对象等等。

 

前置条件写在@Param 后置条件写在@return @throws

 

规约的强度:如果S2的前提条件<=S1 ,S2的后置条件>=S1,对于满足S1前提条件的状态,则规约S2强于S1

 

ADT:抽象数据类型是软件工程中一般原则的一个实例,它有很多名称:抽象模块化,封装,信息隐藏。

 

数据抽象类型的特点是可以对其执行操作

 

ADT四种操作

 

creator 创作该类型的新对象,creator可以将对象作为参数,但不是正在构建类型的对象

 

producer 从该类型旧对象中产生新对象,String的Concat方法是一个producer

 

observers 采用ADT对象并返回不同类型 eg:List中的Size()

 

Mututors 改变对象 eg:List中的add()

 

 

表示独立性:ADT的使用与其表示形式无关,因此表示形式的变化对抽象类型本身之外的代码没有影响 eg:List的独立的不管是表现为Linked list或array

 

表示不变性和抽象函数

 

技术分享图片

 

R:表示值空间,由实际实现的实体的值组成

 

A:抽象值空间,就是抽象想表示的值空间

 

AF:将表示值映射到它们表示的抽象值,R->A图中的弧显示抽象函数。

 

 

RI,AF 是doc形式 

 

OOP:

 

oop应该把类作为中心概念

 

 

继承 extends

 

重写 override

 

多态性是操作可以应用于其他类型的值的类型。

 

 

分为 adhoc polymorphism,function overloading,parametric polymorphism,generic programming

 

(oop其他内容,请看java核心技术)

 

防御式拷贝:不把自己的引用传给别人,首先new一个新对象,把自己的信息传递给这个对象,然后给别人展示这个对象。

ADT和OOP的equality:用抽象函数     使用关系     使用观察

就ADT而言“观察”意味着调用对象的操作。所以当且仅当通过调用抽象数据类型的任何操作不能区分他们时,两个对象是相等的

 

==比较的是引用  

 

equal()比较的是对象的信息

 

equals满足传递性,自反性,对称性

 

对于不可变类型:equals()应该比较抽象值。这与equals()应该提供行为平等相同,hashcode()应该将抽象值映射到一个整数。所以不可变类型必须覆盖equals()和hashcode()

对于可变类型 equals()应该比较引用,就像==一样。同样与equals应该提供行为平等一样。所以不应该重写equals()和hashcode()

软件构造2

标签:code   gen   中心   参数类型   server   实例   CM   错误   分享图片   

原文地址:https://www.cnblogs.com/yry1160300116/p/9191436.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!