【软件构造】课程提纲(2)

第三章

  1. 基本/对象数据类型

(1)基本数据类型:只有值,不可变,廉价,在栈中,使用时存在,无法实现表达的统一

(2)对象数据类型:继承自Object,有不同身份,有些可变,更昂贵,在堆中,等待垃圾回收,表达与泛型统一

  1. 静态/动态类型检查

(1)静态检查:代码运行之前,检查名称、语法、参数数量和类型、返回类型,优于动态检查

(2)动态检查:代码执行时,检查非法参数值、不可表示的返回类型、数组越界、空指针引用

  1. 可变性与不变性

(1)不变性:主要的设计原则

·不变数据类型创建完后,值不可修改final指定引用位置,不可再次指定

·final class不能再被继承,final method不能被重写

·优点:可理解性强、易读、安全、不需要被防御性复制

(2)可变性:可以改变变量值,方便分享、方便作为全局变量

(3)例:StringStringBuilder

扫描二维码关注公众号,回复: 1516724 查看本文章

String t = s; t = t + “c”; 指向新对象

StringBuilder tb = sb; tb.append(“c”); 改变原来的值

  1. /引用的改变:改变引用是改变指针,改变值是在这个指针下改变对象内容
  2. 防御式复制:针对可变对象而言,返回一个复制的新对象,占用额外空间
  3. 快照图

(1)原始值快照图示例:

 

(2)对象快照图示例:

  1. 规格说明、前置/后置条件

(1)规格说明:名称、功能、参数、返回值

(2)前置条件(requires)是客户的任务,后置条件(effects)是实现者的义务,前置条件满足时,应满足后置条件,前置条件未满足时,后置条件无所谓。

(3)JavaDoc

  1. 行为等价性:用一个实现代替另一个实现。为了使替代成为可能,需要一个规范来说明客户端依赖的内容,规范不应提及方法类的局部变量或私有字段。
  2. 规约的强度:若S2强于S1,要么前置条件弱,要么后置条件强

猜你喜欢

转载自www.cnblogs.com/zhangyushuqing/p/9152993.html
今日推荐