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

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

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

0. 成员变量的选择

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

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

  • 到达时间;
  • 优先级;

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

1. 从泛化到特殊

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

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

2. 动词做类

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

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

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

相关文章推荐

对象,类,方法的自我理解

首先楼主要问了,什么是:名词,动词,形容词····?? 下面说说我自己的理解嚎:        凡是你能叫得出名字,或者有名字的事物,都称为名词,名词就等于对象这个词,        名词:任何一个名...
  • xingui6
  • xingui6
  • 2015年08月16日 10:52
  • 329

类的大小——sizeof 的研究(1)

先看一个空的类占多少空间? class Base{public: Base(); ~Base();};      注意到我这里显示声明了构造跟析构,但是sizeof(Base)的结果是1.     因...
  • hairetz
  • hairetz
  • 2009年05月12日 17:09
  • 19759

Javascript面向对象(八)——Class

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

Java菜鸟学习笔记--面向对象篇(十五):Wrapper Class包装类

什么是包装类? 在Java里一切都是对象,除了Java中的基本数据类型(byte,short,int,long,char,float,double,boolean)不是面向对象的,这在实...

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

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

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

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

一个例子理解 C++ 面向对象——构造函数、虚函数、抽象基类

#include using namespace std; void TestException(int argc) { try { if (argc != 2) ...

VB.NET面向对象CLASS的实现.chm

  • 2007年07月10日 10:22
  • 82KB
  • 下载

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

写在最前面: 只是测试,有些凌乱!这几天开始写密记的后台,到处随意看来看 node 和js的语法,感觉乱糟糟的,什么 mean 架构,什么js 什么 es6,真是一团乱麻,习惯了面向对象,突...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面向对象 —— 对类(class)的理解
举报原因:
原因补充:

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