软件构造(三)

数据类型:基本数据类型和对象数据类型
在这里插入图片描述

类型转换:静态类型语言和动态类型语言

静态类型检查:在编译阶段发现错误,避免将错误带入到运行阶段,可以提 高正确性、健壮性
动态类型检查:在运行阶段发现错误,检查非法的参数值、非法的返回值、越界、空指针
静态检查 >> 动态检查>> 无检查

不可变数据类型/可变数据类型
不可变数据类型:一旦被创建,其值不可变,始终指向同一个值/引用,因此更加安全。如果是引用类型,也可以使不变的,一旦确定其指向的对象,不能再被改变指向其他对象。
可变数据类型:拥有方法可以修改自己的值/引用

Snapshot diagram
用于描述程序运行时的内部状态
便于程序员之间的交流,刻画类变量随时间的变化,便于设计思路
不可变对象:用双线椭圆;不可变的引用:用双线箭头

Specification 前置/后置条件
specification需要包含:输入/输出的数据类型、功能和正确性、性能;只讲“能做什么”,不讲“怎么实现”
前置条件:对客户端的约束,在使用方法时必须满足的条件
后置条件:对开发者的约束,方法结束时必须满足的条件
在写前置条件时,使用@param关键字声明对变量的要求,在写后置条件时,使用@return关键字和@throws关键字
除非在后置条件里声明过,否则方法内部不应该改变输入参数,尽量避免使用mutable的对象

继承、override
严格继承:子类只能添加新方法,无法重写超类中的方法
重写函数:重写的函数:完全同样的signature;实际执行时调用哪个方法,运行时决定,在重写的方法前,需要使用@Override关键字。重写之后,利用super()复用了父类型中函数的功能,并对其进行了扩展

多态、子类型、重载
多态:特殊多态 + 参数化多态 + 子类型多态
一个方法可以有多个同名的实现(方法重载), 一个类型名字可以代表多个类型(泛型编程),一个变量名字可以代表多个类的实例(子类型)
重载:多个方法具有同样的名字,但有不同的参数列表或返回值类型。重载(Overload)是一种静态多态,根据参数列表进行最佳匹配

泛型
若一个接口声明了变量类型,那该接口被称作泛型接口;若一个方法声明了变量类型,那该方法被称作泛型方法。

equals()的自反、传递、对称
自反:对任意非空的引用变量x,x.equals(x)必须返回true
对称: 对任意非空的引用变量x、y,若x.equals(y)返回true,则y.equals(x)返回true
传递:对任意非空的引用变量x、y、z,若x.equals(y)返回true且y.equals(z)返回true,则x.equals(z)也返回true。

hashCode():若两个对象相等,则它们的hashCode相等;反之,若两个对象不相等,则它们的hashCode不相等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值