对象约束语言(Object Constraint Language), 简称OCL, 是一种指示用户建模系统中的限制方式。 他是UML可选的附加内容, 可以用来更好地定义对象的行为, 并为任何类元指定约束。
相似性:
- 形式化语言:基础都是集合论和谓词逻辑。是选择有歧义的但是多数人能看懂的自然语言,还是无歧义但少数人才能看懂的数学符号,OCL和JSF选择了“中庸之道”。(不过JSF的形式化没有OCL那么强)【PS:数学、逻辑和计算机科学中,形式语言(英语:Formal language)是用精确的数学或机器可处理的公式定义的语言】
- 声明式语言:就是描述了应该做出什么结果,而不是应该怎样做才能达到某个结果,给出了结果而非具体过程。
-
描述的约束相似:OCL可以描述4种约束:不变量、前置条件、后置条件、监护条件。JSF类似。
不同之处:
- 类型化语言:OCL中的每一个表达式都是具有类型的。这些类型包括:标准类型、UML图中的元素、上述元素的集合。
- 表达能力:OCL表达能力更强、也更严谨。
- OCL是和UML(统一建模语言)绑定的,JSF是直接面向代码。
总结:1.课程总结
第一单元重点在于对于面向对象编程思想的学习. 是从面向过程编程到面向对象编程的一个过渡学习.
第二单元重点在于学习多线程, 基于第一单元所编写的单线程电梯, 将其改写成多线程电梯.侧重于实际应用, 难度较大, 调试bug的难度也比第一单元难了不少, 并且经常出现死锁或者其他crash.
第三单元学习了规格化,JSF, 这单元不再侧重于编写程序, 而在于构建程序, 规格化程序, 学习让自己程序规格更加规范.
第四单元是正确性论证. 正确性论证基于第三单元的编写的规格(jsf), 同时和测试也是向对立的两种完全不同的验证程序的方法.
2.程序梳理
刚开始编写程序的时候, 对我来说处理输入是一个很大的难点, 对于正则使用不熟练, 导致对于输入的判断很复杂, 思路不清晰, 同时设计程序时, 经常将许多语句堆在一个代码中, 或者代码中出现了许多重复的语句.通过练习, 我正则使用的更加熟练了, 关于处理数据方面的代码写得更加的整洁, 思路清晰, 对于代码中经常出现的部分也都封装成了一个函数, 程序结构的设计也更加的合理.
3.自己对工程化开发的理解
工程化开发是非常有必要的, 我们现在写的代码还比较短, 处理起来还比较简单, 当代码多到一定程度时, 如果没有工程化的方法, 可能修改一个很小的参数都许多废很大的劲. 工程化对于代码的可维护性是非常有必要的. 同时工程化写出的代码因为遵守相应的规则, 阅读性和拓展性也非常好.
4.对课程的建议
该课程对我学习面向对象的编程有很大的作用, 但是该课程的作业量实在是太大了, 对我学习其他课程产生了很大的负面作用. 建议适当的为学生们减负, 明确每次作业的重点. 其实该课程的互测环节对大家的作用是弊大于利