面向对象 —— 对类(class)的理解

原创 2016年08月30日 16:04:46
  • 类是成员变量和成员函数的封装,封装的一个重要功能就是可见性(继承除外,当然继承是面向对象的另外一个重要特性),所谓可见性,类内可见,类外不可见。可见性保证了类型安全(type-safe)

  • 对类进行实例化(调用类的构造函数),获取类的对象,单是从类和对象的分别的命名上,也能体会类与对象的区别,类一般是抽象名词(Host),对象则是具体名词(Customs)。

0. 成员变量的选择

一个对象类,当然不只有限的属性,如果要追究和细分下去,能找出无数个属性出来。显然当我们进行某些类的设计时,首先需要定义其成员变量。成员变量对应于对象类的属性。成员变量的选择和确定的关键,看的该变量是否与实际问题的解决密切相关,该变量是否是解决问题所涉及的变量。

比如一个车辆排队系统,汽车的属性,显然需要:

  • 到达时间;
  • 优先级;

而与颜色、车重,等等属性无关。

1. 从泛化到特殊

公共基类(比如公共事件基类,Event):规范所有事件类的形式,在其中实现几个所有事件都需要的公共操作,有时也需要定义一个什么都不做的成员方法。

派生类:只需要根据实际情况,把具体类(事件类)定义为基类的派生类,在不同派生类里根据实际情况定义基类中什么也未作的成员方法。

2. 动词做类

可封装的都可做类(所谓封装,针对的是成员属性和成员方法,封装了的成员变量,成员变量类内可见,可获取其值,也可对它的值进行修改,然后将对成员变量的相关操作封装进

比如以事件类(Event)作抽象基类,派生出来的到达类(Arrive),离开类(Leave),含义更像是动词,而不是通常面向对象编程中的“人”、“动物”、“水果”等等具有鲜明的对象、可封装特性的类别。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Javascript面向对象(八)——Class

Javascript面向对象(八)——Class 类结构允许使用简洁、漂亮的方式定义基于原型的类模式。 class语法类的语法有多种形式,我们从简单的开始。 这里是基于原型的类User:func...

面向对象学习--嵌套类(Nested Class)

转自:http://blog.sina.com.cn/s/blog_586b6c050100ccgo.html 在学习研究命名空间这一命题时,笔者对C#中的嵌套类型(Nested Type ——MSD...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

面向对象复数类(class Complex) 的重载运算符 一元二元的实现与使用

 面向对象复数类(class Complex) 一.      实现与测试使用总共分为两个部分_(:зゝ∠)_,头文件与主函数 ,重载操作符与类成员函数有注释声明     &...

第二篇 nodejs 关于 面向对象 及 class 的使用初探

写在最前面: 只是测试,有些凌乱!这几天开始写密记的后台,到处随意看来看 node 和js的语法,感觉乱糟糟的,什么 mean 架构,什么js 什么 es6,真是一团乱麻,习惯了面向对象,突...

C++面向对象高级开发No.1 - Class Without Pointer

Key: Item1: 防卫式声明:避免头文件的重定义 Item2: 构造函数使用 initialization list Item3: 使用 const 限定不需要改变的对象 ...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)