摘要: 线程安全的四种策略总结 一、Confinement限制可变变量的共享 核心思想:线程之间不共享mutable数据类型 将可变数据限制在单一线程内部,避免竞争;不允许任何线程直接读写该数据 局部变量总是线程安全的,但如果局部变量是一个对象引用,若该对象是可变对象,则必须确定该对象也是线程confine 阅读全文
posted @ 2019-06-24 00:02 Boston丶o 阅读(230) 评论(0) 推荐(0) 编辑
摘要: (一)LSP 子类型多态:客户端可以用统一的方法处理不同类型的对象 子类:更强的不变量,更弱的前置条件,更强的后置条件 1)子类可以增加方法、但不可删 2)子类型需要实现抽象类型中的所有未实现方法 3)子类型中重写的方法必须有相同或子类型的返回值 4)子类型中重写的方法必须使用同样类型的参数 5)子 阅读全文
posted @ 2019-06-23 23:30 Boston丶o 阅读(129) 评论(0) 推荐(0) 编辑
摘要: ADT和OOP中的等价性 equal和== hashcode()和equals()方法总是一起被重写 “==”:引用等价性,指向相同的内存地址, equals():对象等价性,在自己定义的ADT时,需要重写Object的equals()/ "=="是对基本数据类型,而对于对象类型,使用equals( 阅读全文
posted @ 2019-06-23 22:07 Boston丶o 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 面向对象的编程 对象是类的一个实例,有状态和行为。 比如,一只狗是一个对象,他有几种状态(名字、颜色、饥饿,品种等等),以及几种行为(叫,摇尾巴等等);自行车有齿轮,速度,踏板节奏等状态,有改变齿轮,改变速度等行为。 类是一个模板,描述了一类对象的行为和状态。 每个对象都有一个类。类定义了属性类型以 阅读全文
posted @ 2019-06-23 21:15 Boston丶o 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 抽象数据型(ADT) 抽象数据类型与表示独立性:如何设计良好的抽象数据结构,通过封 装来避免客户端获取数据的内部表示(即“表示泄露”),避免潜在 的bug ADT的特性:表示泄漏、抽象函数AF、表示不变量RI 基于数学的形式对ADT的这些核心特征进行描述并应用于设计中。 ADT的四种操作 1)Cre 阅读全文
posted @ 2019-06-20 21:08 Boston丶o 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 设计规约 概述:方法的规约、前置/后置条件、操作式规约、规约的强度及其比较、如何设计好的规约 一个完整的方法 一个完整的方法包括规约spec和实现体implementation; "方法"是程序的积木,它可以被独立的开发、测试、复用; 使用“方法”的客户端,无需了解方法内部如何工作,这就是抽象的概念 阅读全文
posted @ 2019-06-20 19:31 Boston丶o 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 3.1 数据类型与类型检验 一、数据类型 数据类型分为以下两种: 基本数据类型:int、long、boolean、double、char 对象数据类型:String、BigInteger等 他们的区别如下图: 二、静态、动态检查 静态类型:在编译阶段进行类型检查,可在编译阶段发现错误,避 免了将错误 阅读全文
posted @ 2019-06-18 22:18 Boston丶o 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 第一部分 一、软件的生命周期 1.from zero to one 计划、分析、设计、实现、测试、维护 2.from 1 to n 软件的更新与老化、不同软件之间相互取代演化 二、经典软件模型 两个基础类型:线性、迭代 现有模型:瀑布模型、增量模型、V模型、原型法、螺旋模型 考虑的关键因素:适应变化 阅读全文
posted @ 2019-04-21 14:32 Boston丶o 阅读(1721) 评论(1) 推荐(0) 编辑
摘要: 一、课程简介 1.软件构造课程的目标 ①程序设计与实现能力 ②系统设计与实现能力 ③系统分析与评价能力 ④利用现代软件构造工具的能力 2.传统软件设计步骤 ①讨论需要写的软件并实现②测试代码并改错③重复②。图示如下 3.更好的软件设计 ①未雨绸缪②考虑非功能质量属性③考虑多种设计选择④把设计决策明确 阅读全文
posted @ 2019-03-03 19:11 Boston丶o 阅读(542) 评论(0) 推荐(0) 编辑