软件构造 Abstract Data Type (ADT) and Object-Oriented Programming (OOP)抽象数据类型与面向对象编程随笔

Data Type and Type Checking

Outline

  1. Data type in programming languages 主要还是Java
  2. Static vs. dynamic data types 静态和动态数据类型
  3. Type checking
  4. Mutability & Immutability(可变性和不可变性)
  5. Snapshot diagram 快照图
  6. Complex data types: Arrays and Collections 数组和集合
  7. Useful immutable types
  8. Null references 空引用

Data type in programming languages

primitive types(基础数据类型)object types(对象数据类型)
int, long, byte, short, char, float, double, booleanClasses, interfaces, arrays, enums, annotations
除了value之外没有任何区别具有与值不同的区别方式(有时是地址)
都是Immutable(不可变),并不意味着在多线程中的调用就会是安全的有些可变有些不可变
在栈中,只有用的时候才存在在堆中,通过GC(garbage collected)回收
Can’t achieve unity of expression无法实现表达的统一Unity of expression with generics表达与泛型的统一
Dirt cheap使用成本非常低比较(也可以说是挺)费的
  1. primitive types are lowercase, while object types start with a capital letter. 基本数据类型小写开始,对象数据类 型大写开始
  2. Immutable containers for primitive types 你可以将基本数据类型封装为不可变对象(大写就完事了) – Boolean, Integer, Short, Long, Character, Float, Double ,但是在程序中除非必要不要这么做(这将大大降低你的代码的效率),即使必要的时候,语言也可以自动将基础数据类型转化为这种不可变对象
  3. primitive types(基础数据类型)不能为null,否则编译器会报静态错误

Static vs. dynamic data types

Java是静态语言,所有变量的类型在编译时就已经必须是已知的了

Type checking

  1. Static checking(静态检查): the bug is found automatically before the program even runs(程序运行之前就自动进行检查)
  2. Dynamic checking(动态检查): the bug is found automatically when the code is executed(程序运行时报错)
  3. 你可以采用(你想得到的类型)变量进行强制转换:例如double a = (double)2/3; // a = 0.6666…

Mutability and Immutability

可变类型的优势 :

  1. 使用不可变字符串,这会产生很多临时副本(比如String a=a + b 原本那个较短的a仍然存在,只不过a 不再指向它了,但它仍然占用了内存)
  2. 方便共享而且性能较优
    可变类型的缺陷:多线程情况下并不安全

About Snapshot

我们需要了解不可变对象(如字符串)和不可变引用(如最终变量)之间的区别

  • Snapshot有助于理解这一点
  • 对象是值,由Snapshot中的圆表示,不可变的对象有一个双边框,表示它从不更改其值
  • 引用是指向对象的指针,由Snapshot中的箭头表示
  • 不可变引用是带双线的箭头,表示不能移动箭头指向其他对象。

Designing Specification 设计规约

Outline

  1. Function / method in programming language 函数/方法都有规约
  2. Specification: Programming for communication 规约:为了交流编程
    Why specification is needed 需要规范的原因
    Behavioral equivalence 行为等效
    Specification structure: pre-condition and post-condition 规格结构:先决条件后决条件
  3. Designing specifications 设计规范
    Classifying specifications 分类规范
    Diagramming specifications 绘图规范
    Quality of a specification 规格质量

Spec不应涉及实现的内部变量和私有域

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值