写在前面
正值期末考试复习月,在复习软件构造课程的过程中又领悟了许多以前没有理解的东西,搭配使用起来也更有灵感了,可谓温故而知新吧。这期间也对一些没学过的技术(比如一直觉得麻烦而没学的UML图)进行了下学习积累。
先说下UML图
之前直接去搜索的UML这个语言的学习内容,当时一看那规模我吓的直接躺平…这段时间复习课件,再加上做了做往年的考试题,发现我们这门课程更多的用到的是UML类图,这个内容量就可以接受了,它对于描述你的类关系的设计还是比较有帮助的。我刚看了看,在这里积累一下(仅记录常用到的一些内容):
首先,我们来看下一个具体类的类图:
再来说中间部分(rep),这里每个成员是以:
“可见性 成员名 :类型”
来写的(据说后面还可以跟一个初始值,但没必要)。对于可见性,那个‘-’ 就表示的可见性,指private;类似的,‘+’表示public,‘#’为protected,‘~’为缺省。对了,rep名加下划线表示它是个类变量static。
再来看第三个区域(方法),和第二个区域差别不大,以“可见性 方法名 (参数类型 参数名):返回值类型”的形式存在。当然也有人不写参数名,这个随意吧。
如果你没rep,那第二个区域就是空的。
单个类或接口咋画已经说的差不多了,现在看下类与类之间关系怎么表示。
我们主要说这门课课件中出现的四种关系(其他两种应该不会用到),包括关联、实现接口、继承父类、委托:
类之间的实线箭头表示关联(一般是为了指明Car为Record中某一成员变量的类型):
实线三角指向父类表继承:
再说一些零碎知识点
一.第六章 断言
适用场合br> 首先要知道断言是:开发阶段 对程序的内部逻辑进行假设检验(你假设传入一个被调用方法的参数应该满足一定条件 你需要对这个假设做一定的检验 断言能够将你的假设文档化 如果不满足假设说明你的程序逻辑出问题了 需要修bug——开发阶段尽快 错并定位错误)
所以什么时候用呢正如前面说的,它用于开发阶段,对程序的内部逻辑进行假设检验。比如说,可以用于检查RI、方法的前置条件、后置条件、方法内局部变量的属性、控制流的属性(某一个分支不应该到达)等等。
作用br> 1.文档化记录你对程序的假设,比如对不变量的假设
2.迅速 错并定位错误
3.增强你的自信(…)
4.便于程序猿之间交流等等
断言在run-time应该被关掉以免影响性能 (-da关闭 -ea打开 可以在Eclipse中设置)
二.第七章线程安全:
给两个定义吧,之前一直记不清楚这俩定义…
竞争条件:程序结果的正确性依赖于线程间的执行顺序,多线程共享内存中的可变变量
线程安全:ADT或方法在不需要额外对client要求其他条件的情况下,无论各线程以如何的执行顺序执行,程序总能给出按照spec来说正确的结果并保持RI。
三.git的使用
git的使用操作也属于日常应用重点,我们对其中较为重点的一些指令总结如下(这也是复习时总结的啦):
将修改后的文件暂存:git add filename
commit到CMDB:git commit -m “anymessage”
添加远程仓库:git remote add somename url
将更改从本地push到远程仓库:git push remote-name branch-name
从对应远程仓库克隆项目:git clone url
创建新的分支:git checkout -b branchname
删除某个分支:git branch -d branchname
切换到某个分支:git checkout branchname
查看变动信息 git status
其他的用的不太多,记这些应该就行
四.第三章ADT和OOP
我只想补一些容易忘的小知识点:
基本数据类型(如int 、double、 char等)为不可变类型,存储在stack中,并且没有自己的ID(这个引入上学期CSAPP学的知识就好)
对象数据类型(还包括数组、enum等)有的是可变类型,有的是不可变类型,它们存在heap中,有自己的ID
另外,要注意区分静态类型检查等和静态语言等。
五,关于可复用性和可维护性
这里除了好好掌握那些设计模式之外,还要注意一些原则。
我主要提一下LSP:它除了对于我们的子类所继承的方法的强度方面的要求,还要求不变量的保持,这里说一下我之前犯过的一错误:我曾经认为immutable类可以派生出mutable类,因为只要RI保持,新增一些可变的rep也无所谓。但是!这个想法是错的,因为我之前把RI和不变量默认的等价了,而不变量实际上说的是整个ADT的属性,除了RI还要会要求其他的一些属性,比如不变性。所以子类也不能违反这个属性。
写在后面
上面是我个人在复习中生疏或者曾经不理解的一些知识点,希望能对大家有所帮助,不过复习的话还要看个人的学习状况,大家加油!
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91648 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!