捏造的信仰

此人很懒,啥都没写

所在地区 : 中国-湖南-长沙
加入时间 : 2017-08-14
最近登录 : 2017-11-16 上午 08:34
我的母语 : 中文
第一外语 : 英文 ( A2 级)
资格证书 : <无>

关注的频道

翻译 45 段

最新动态

继承 本文我们最后要提到的一个概念就是关于类的扩展性。我们的 Vehicle 类已经体现了对车辆的一个大致描述,但现实当中车辆还有更具体的分类,比如轿车、卡车等等从车辆延伸出来的概念。它们都具有车辆的所有状态和行为,而且还包含了自身特...
因为我们的  状态是不能被外部直接访问的,所以可以说它被“保护”起来了,外部要修改这个状态,只能通过对应的 setter 行为。这样一来,对  这个状态的修改就完全把控在我们自己手里。比方说,外面传过来一个不正确的值(比如空的名字),...
对于状态的封装,我们还可以得出这样的结论:依据一个状态是否有 getter 或 setter,我们可以将其归类为只读(read-only)、只写(write-only)、可读写(readable-writable)、不可读写(unre...
我们注意到,我们的 Vehicle 类对于 Transmission 和 Engine 类的状态,还是在直接访问。我们有必要把这两个类的封装做好,也就是给它们的状态加上 getter 和 setter,然后让 Vehicle 类通过它...
我们这个类展现给外部的这种“缩水”的观感,我们称之为这个类的接口。接口是所有面向对象语言当中最重要的概念之一,它展现了别的类应该如何与我们这个类进行交互(换句话说就是,别的类通过我们这个类的接口来和我们这个类进行交互)。如下图所示。 ...
> 不要轻信、并且将自身的状态和行为暴露给其他的类;将任何状态或行为暴露出去,都应该是有其作用的。 良好的封装还能带来一点就是:我们可以自由的修改我们这个类的内部状态或行为逻辑,依赖我们这个类的其他类丝毫不会受到影响。比方说,我们删除...
这样子的话,当我们后面将当前速度替换成数学计算时:
任何依赖它的类都不需要做修改,因为 Vehicle 的接口是没有变的(也就是说,其他的类仍然可以一如既往地使用  来获得当前速度,不管里面的逻辑怎么变)。 那么,如果我们这个类的状态都变成私有的隐藏起来的话,又如何允许其他类来直接获取...
访问状态和行为 在我们  行为中,我们隐式的访问了 Vehicle 类的一个状态里面的状态。比如在  这条语句中,我们访问了  的  状态。为了更精简的表达,我们可以在不同层级的状态之间加上句点来表示这种对状态的访问。例如, 这句话可...
这种用来访问状态的写法也可以用在访问行为上,比如对加速行为的定义我们可以改成增加引擎转速的方式,写出来就是下面的样子: 可见性与封装  自从有了上面这样的符号表达方式,另一个问题也浮出水面:我们这个类的所有状态都可以供其它类访问。你现...
举个例子,对于一个车辆类来说,调整变速箱的速度比和引擎转速是一个精细的操作,如果没做好,可能就会损坏引擎或变速箱。要是谁都可以不经我们同意随便调整变速箱,那我们等于是失去了对 Vehicle 类的状态的控制。所以我们必须对类状态的可见...
同样的,我们也可以将可见性修饰符用在行为上。对我们的 Vehicle 类来说,所有的行为都是可以给其他类访问的。所以这些行为都可以用  来修饰:
通过将所有状态设为 private,并将所有行为设为 public,那么在其他的类看来,我们的 Vehicle 类就是这个样子的: 要注意一点的是,其他类访问我们的行为时是不知道这个行为的定义的。比如说,不管  这个行为的定义如何改变...
捏造的信仰 吱了一声
3个月前
发现我发布的原文存在内容遗失,如何纠正?
关联 我们的 Vehicle 类正在变得越来越成熟,但它还和现实当中的车辆概念有不小的差距。比如说,现实车辆都有引擎(Engine)和变速箱(Transmission)。作为补救措施,我们分别为引擎和变速箱创建相应的类:
这样的话,我们就可以修改 Vehicle 类,使其包含引擎和变速箱这两个状态:
像这种在 Vehicle 类中引用了其他的类的情形,我们称之为在 Vehicle 和其引用的类之间创建了一个关联。关联其实也算是依赖关系的一种,即 Vehicle 类的定义依赖于 Engine 类和 Transmission 类的定义...
所以为了更贴近真实的车辆概念,我们应该采用这种方式来计算。不过目前我们还没有可以令一个行为产生一个结果的方式。比如我们命令车辆计算它的当前速度,这就意味着必须把计算结果传回给请求计算的实体。为达成这个目的,我们引入返回语句的概念。有了...
行为参数 第二个我们要理解的概念就是,我们需要在执行一个类的行为的时候,传递一些额外的信息。比如我们想要加速到时速 80 英里(假设时速单位为英里),那我们得对当前的加速行为重复执行 80 次。现实系统当中如果有这样的操作,肯定是很二...
在执行一个行为时,参量会映射到对应的参数上,供行为取用。比如  就是将 30 这个数字类型的参量映射到  参数上。如果一个行为有多个参数,那么参数定义之间用逗号隔开,比如 。在执行包含多个参数的行为时,传入的参量也用逗号隔开,参量会依...
显示更多