HW11中对ageVar采用缓存优化的等价性证明(包括溢出情况) 概要 我们知道,第三次作业里age上限变为2000,而如果缓存年龄的平方和,2000*2000*800 > 2147483647,会溢出.但是实际上,我们仍然能通过缓存得到正确的结果.这是因为,计算机内进行的二进制运算其实每一步都进行了 \(\&0xffff\_ffff\) 操作,有交换律.结合律.平方公式成立.即使在溢出的情况下,两个式子仍然是等价的.本文试着利用二进制运算和无符号数运算的关系,以及无符号数运算的性质,来证明…
不知不觉中,我已经接触OO五周了,顺利地完成了第一章节的学习,回顾三次编程作业,惊喜于自身在设计思路和编程习惯已有了一定的改变,下面我将从度量分析.自身Bug.互测和设计模式四个方向对自己第一章的学习做一个总结.本人OO萌新,且这篇文章更多面向我自己,无法面面俱到,因此若对文章内容有疑惑和建议,欢迎各位大佬在评论区批评指正~ 程序度量分析 本章求导作业共有三次,通过从不同度量指标纵向对比三次作业,我发现自己的代码结构已经逐渐有了变化,下面我将从类结构图.代码复杂度和类依赖三个指标对三次作业进行分…
BUAA面向对象设计与构造——第二单元总结 第一阶段:单部傻瓜电梯的调度 第二阶段:单部可捎带电梯的调度 (由于我第一次写的作业就是可捎带模式,第二次只是增加了负数楼层,修改了一部分参数,因此一起总结.) 1.设计策略 这次作业我设计了两个线程:Elevator和DealWithInput,前者模拟电梯,而后者用来处理输入.队列PersonQueue作为一个单例模式下的对象,被两个线程所共有,充当调度器的角色. DealWithInput基本套用下发的模板,只是增加了每次读到新请求就通知调度器p…
BUAA面向对象设计与构造——第一单元总结 第一阶段:只支持一元多项式的表达式求导 1. 程序结构 由于是第一次接触面向对象的编程,加之题目要求不算复杂,我在第一次作业中并没有很好利用面向对象的特点,只建了两个类. 第一个DerivativeFunc类只包含main函数,而剩余所有功能包括正确性检查.求导和输出都全在类Poly里.这两个类之间也没有继承等关系,所以整体看起来还是偏向C语言的思路,这也是这次作业最大的问题.在类Poly里面,我建立了两个链表来分别存储每一项的系数和幂指数. 从以上两…
面向对象设计与构造:OO课程总结 第一部分:UML单元架构设计 第一次作业 UML图 MyUmlInteraction类实现接口方法,ClassUnit和InterfaceUnit管理UML图中的类和数据单元 MyUmlInteraction类整合UML类图中的所有数据元素,并用Map建立相应的Id到UmlElement的映射 ClassUnit除了记录自身的属性,关联和实现接口外,采用All-XXX的形式记录来自父类的上述元素继承和自身的上述元素 InterfaceUnit分别记录了自身继承的…
1  概述 本章叙述面向向对象设计的七大原则,七大原则分为:单一职责原则.开闭原则.里氏替换原则.依赖倒置原则.接口隔离原则.合成/聚合复用原则.迪米特法则. 2  七大OO面向对象设计 2.1 单一职责原则SRP(Simple Responsibility Principle) 单一职责原则,就是一个设计元素只做一件事.什么是“只做一件事”?就是少管闲事.现实中也是如此,如果让一个人认真的去做一件事,那么任何人都有信心可以做到很出色.就一个类而言,应该仅有一个引起它变化的原因,如果你能想到两个…
面向对象设计与构造:JML规格单元作业总结 第一部分:JML语言理论基础 JML语言是什么:对Java程序进行规格化设计的一种表示语言 使用JML语言有什么好处: 用逻辑严格的规格取代自然语言,照顾马龙的语文水平.一切挑战规则的行为必将受到严厉惩罚 代码维护性高,让大牛的代码不再晦涩,让轮子制造机无机可乘 JML(Level 0)语法 单行注释 //@ public model non_null int [] elemen[]ts; JML规格所管理的数据(规格变量),并非类的组成部分,non_…
Part-1 JML总结 Section-1 理论基础 The Java Modeling Language (JML) is a behavioral interface specification language that can be used to specify the behavior of Java modules. JML是一种正则化的描述Java模块行为的描述语言.也就是说,JML的作用是对程序各模块和架构进行描述. 利用JML,我们可以做到: 对模块内,架构与实现分离,JM…
「BUAA OO Pre」 Pre 2总结回顾概览 目录 「BUAA OO Pre」 Pre 2总结回顾概览 Part 0 前言 写作背景 定位 您可以在这里期望获得 您在这里无法期望获得 对读者前置知识的期望 Part 1 Pre 2 task 1 题目 描述 输入/输出格式 数据范围与操作限制 变量约束 操作约束 测评方法 输入样例 输出样例 提示 值得注意的点 Part 2 Pre 2 task 2 题目 基本要求 描述 输入/输出格式 数据范围与操作限制 变量约束 操作约束 测评方法 输…
原文:https://blog.csdn.net/tjiyu/article/details/57079927 面向对象设计原则(二):开放-封闭原则(OCP) 开放-封闭原则(Open-closed principle,OCP)也称开闭原则,是面向对象设计(OOD)中比较重要.常见的一种,下面来总结开放-封闭原则的知识点,包括: 1.什么是开放-封闭原则? 2.为什么需要遵守开放-封闭原则? 3.怎么做到开放-封闭原则? 4.开放-封闭原则需要注意什么? 1.什么是开放-封闭原则(OCP)1-…