- 博客(7)
- 收藏
- 关注
原创 里氏替换原则(LSP)
里氏替换原则(LSP)一句话来说就是:如果对于类型T的对象x,q(x)成立,那么对于类型T的子类型S的对象y,q(y)也成立。具体到Java中就有以下几点:子类型可以增加方法,但不可以删除方法子类型需要实现抽象类型(接口,抽象类)中所有未实现的方法子类型中重写的方法必须有相同或者子类型的返回值,或者符合协变(covariant)的返回值子类型中重写的方法必须使用同类型的参数或者符合逆变(contravariant)的参数(由于Java语言的特点,这一点被处理为重载overload,而不是重写
2020-07-08 23:25:36
414
原创 正则表达式
运算符字符说明连接*重复,0次或多次|选择,二者选一+重复,一次或多次?重复,0次或一次[…]字符集[^…]反字符集,不接受相应的字符\转义常用的字符集运算字符说明等价的操作[abc]匹配a,b,或者c 一次‘a’|’b‘|’c’[a-zA-Z]匹配a到z或者A到Z一次null[a-z&&[ab]]两个字符集求交,匹配a或b一次null[a-z&
2020-07-06 16:00:17
114
原创 设计模式(Design Pattern)
设计模式(Design Pattern)使用设计模式可以有效的提高开发效率和软件的健壮性等特性。设计模式可以分为下面几类:结构型模式行为类模式创建型模式设计模式有很多种,本文会给出一些有代表性的设计模式。结构型模式:Adapter 适配器模式Decorator 装饰器模式Façade 外观模式Proxy 代理模式行为类模式:Strategy 策略模式Template Method 模板模式Iterator 迭代器模式Observer 观察者模式Visitor 访问者
2020-07-02 12:59:25
413
原创 设计规约(Designing Specification)
设计规约(Designing Specification)概念定义写在方法前面的说明性注释,用来解释方法的功能、参数、返回值等。如下如所示规约的好处记录自己的设计决策,供自已或他人阅读。团队协作中,如果没有规约就无法分派任务,无法写程序;即使写出来,也无法验证对错。规约作为一种客户端与程序之间的“契约”,可以明确双方的责任。规约可以隔离变化,无需通知客户端,即不管具体实现如何修改,只要符合规约,客户端就没必要知道修改的具体内容。达到解耦的目标。可以利用规约来判定方法的行为等价性。测试
2020-06-20 21:39:59
852
原创 Code Snapshot
Code Snapshot代码快照图可以清楚地展示程序运行过程中某一刻内存中的变量状态。使用规范基本类型的表示基本类型的值直接写就行,然后用单线箭头表示对其的引用。对象类型的表示对象类型(分为可变对象和不可变对象)使用带有类型标记的椭圆表示。该对象的所含的域写不写出都可以,但是写出时需带上该域的类型。不可变对象不可变类型的椭圆是双线椭圆。不可变类型一旦生成就不能修改它的值。可变对象可变对象类型的椭圆是单线椭圆。可变类型的值可以进行修改。引用的表示引用也分为可变引用和不可变引用
2020-06-20 20:36:37
424
原创 自动生成UML图
自动生成UML图软件构造课程的实验需要提交UML图,最初设计ADT的时候自己画了一个草图,后面实际写代码的时候又做了一些改动,导致实际代码和草图设计有一些出入,所以需要重新修改,于是就在Github上找了一个根据代码自动生成UML图的工具SimpleUML。该工具是一个IDE的插件,下面以IDEA为例,介绍一下如何使用:安装项目地址:https://github.com/Jerey-J...
2020-04-12 14:47:16
5589
1
原创 软件构造第一次实验的几个知识点
软件构造第一次实验的几个知识点没啥难度,主要是写一下加深一下印象,大部分内容参考百度、CSDN(永远滴神)1. Java的二维动态数组普通数组实现class Two_dimensional_dynamic_array{ public statc main(String[] args){ /*这种方式实际上并不能实现完全的两个维度上的动态扩展,只能实现一维的动...
2020-03-08 16:00:51
104
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人