自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 LSP原则(复习)

LSP原则:如果对于类型T的对象x,q(x) 成立,那么对于类型T的子类型S的对象y,q(y) 也成立。Java中的编译器强制规则(静态类型检查):从代码一到代码二,子类满足相同的不变量(以及额外的不变量),start方法前置条件更弱,brake方法后置条件更强。在编程语言中,LSP依赖于以下限制:协变:父类型→子类型:越来越具体specific;返回值类型:不变或变得更具体;异常的类型:也是如此。数组是协变的,泛型不是协变的。如何实现两个泛型类的协变?...

2022-06-12 10:39:34 1646 1

原创 泛型的使用(复习)

泛型程序设计是程序设计语言的一种风格或范式。范式允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。泛型在运行时根据具体指定类型确定具体类型(编译成class文件时,会用指定类型替换类型变量“擦除”)。泛型变量有三种使用形式:泛型类、泛型接口、泛型方法。类中如果声明了一个或多个泛型变量,则为泛型类,这些类型变量称为类的类型参数。泛型接口与泛型类同理。泛型接口有两种实现方式,可以 通过非泛型的实现类,或者是 泛型的实现类。注:泛型可以有多个类型的参数

2022-06-11 11:03:29 156

原创 ADT和OOP中的等价性(复习)

目录一、== vs equals()二、equals()和hashcode()的重写我认为本章中比较重要的点首先第一个是== 和equals()。==检查的是引用等价性,如果想要判断二者是否指向内存中同一空间,则可使用==;而equals()检查的是对象等价性,即对象的内容。对基本数据类型,使用==判定相等;对对象类型,使用equals()判断。注:由于必须为每种抽象数据类型适当地定义相等的操作,因此在自定义ADT时,需要重写Object的equals()。其次就是equals()和hashcode()的重

2022-06-10 20:04:44 131

原创 继承的使用

实验二中主要考察的是对接口的理解与使用。首先接口是什么,接口是一种把类抽象的更彻底,其中只能包含抽象方法的“特殊类”。接口不关心类的内部状态数据,定义的是一批类所遵守的规范。在JAVA语言中是一种抽象类型,是抽象方法的集合。接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口中的方法。注:接口不是类,它们是两种不同的概念。接口中包含的是类要实现的方法,而类则描述的是对象的属性以及方法。除非实现接口的类是抽象类(继承关系),否则该类要定义接口中的所有方法。接口在编写时需要注意以下问题:

2022-06-09 20:16:48 117

原创 Git命令

通过本学期的软件构造课程,我学会了如何利用Git管理代码。Git是目前世界上最先进的分布式版本控制系统,分为Workspace(工作区)、Index / Stage(暂存区)、Repository(本地仓库)、Remote(远程仓库)四个部分。在电脑上安装好Git后,选择你想要的工作目录,在该目录下右键,即可对代码进行管理。点击Git Bash Here,即可进入到如下界面。 我们在实验中用到的主要是以下几条指令。首先,使用Git可以从远程仓库下载代码。在命令框中输入git clone + 远程仓库地址,

2022-06-09 20:02:32 57

原创 ADT和OOP中的“等价性”

一、Equivalence Relation 四、Implementing equals()在Object中实现的缺省equals()是在判断引用等价性,这通常不是程序员所期望的,因此需要重写。 五、The Object contractThe contract of equals() in Object: The equals contract in English:

2022-06-04 17:16:34 101

原创 抽象数据类型 (ADT)

一、Abstraction and User-Defined Types二、Classifying Types and Operations不可变数据类型: 其操作不可改变内部值,而是构造新的对象 六、Testing an Abstract Data TypeHow to test an ADT:测试creators, producers, and mutators:调用observers来观察这些operations的结果是否满足spec;测试observers:调用creators, produce

2022-06-04 12:00:40 1120

原创 Designing Specification 设计规约

一、Functions & methods in programming languages规约实例:二、Specification: Programming for communication1.Documenting in programming 3.Behavioral equivalence根据规约判断是否行为等价。总结:4.Specification structure: pre-condition and post-condition前置条件:对客户端的约束,在使用方法时必须满足的条件

2022-06-02 11:26:30 122

原创 数据类型与类型检验

一、Data type in programming languages二、Static vs. dynamic data type checking不变性:重要设计原则 使用可变数据类型,可获得更好的性能,也适合于在多个模块之间共享数据。 五、Complex data types: Arrays and Collections Array、List 、Set、Map当添加一个item时,编译器执行静态检查,确保只添加合适类型的item。因此,可确保取出的值是指定类型的。Iterator as a m

2022-06-02 10:55:45 96

原创 软件构造的多维度视图和质量目标

一、多维度视图 By phases:build- and run-time views 按阶段划分:构造时/运行时视图By dynamics:moment and period views 按动态性划分:时刻/阶段视图By levels:code and component views 按构造对象的层次划分:代码/构件视图1.Build-time ViewsCode-level view: func

2022-06-01 22:08:18 190

原创 JAVA语言中泛型的使用

泛型的使用感悟

2022-05-22 19:03:33 180

原创 程序人生-Hello’s P2P

本文对hello.c程序编写成功后在Linux下如何顺利运行做出了详细的分析。hello.c源程序经过预处理、编译、汇编、链接、进程管理、存储管理、IO管理一系列操作完成了自己的生命周期。而我们可以通过一些工具清晰地观察它的一生,如gdb,edb等。

2022-05-19 22:49:53 1315

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除