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

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

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

0. 成员变量的选择

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

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

  • 到达时间;
  • 优先级;

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

1. 从泛化到特殊

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

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

2. 动词做类

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

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

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

C++ 面向对象(一)—— 类(Classes)

类(class)是一种将数据和函数组织在同一个结构里的逻辑方法。定义类的关键字为class ,其功能与C语言中的struct类似,不同之处是class可以包含函数,而不像struct只能包含数据元素。...
  • zqixiao_09
  • zqixiao_09
  • 2016年05月22日 12:35
  • 13108

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

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

有关javascript与nodejs面向对象的编程总结

有关javascript与nodejs面向对象的编程总结 一、javascript面向对象 JavaScript没有 “类”的概念,object就是对象的类型。在JavaScript中不管多么复杂...
  • kang1466325048
  • kang1466325048
  • 2016年07月26日 16:14
  • 2084

神奇的go语言(面向对象)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】    有过C++语言学习经历的朋友都知道,面向对象主要包括了三个基本特征:封装、继承和多态。封...
  • feixiaoxing
  • feixiaoxing
  • 2014年07月27日 09:51
  • 9965

C++面向对象 类的定义

C语言是面向过程的语言。它的思想就是将一个程序分成若干个过程,然后写出每个过程的算法。但是重用性比较差。 C++面向对象的语言:将自然界的事物看成不同的实体,也就是对象。每个对象都有自己的行为和状态。...
  • helainthus
  • helainthus
  • 2016年05月11日 18:17
  • 591

超级容易理解!!!Java的面向对象思想———类与对象。

在初学者学Java的时候,面向对象很难让人搞懂,那么今天小编就来为大家把这个思想来为大家用极为简单的方法理解吧。 首先我们来简单的阐述面向对象的思想。 面向对象: 官方的语言很抽象,我们把官方的...
  • a907691592
  • a907691592
  • 2016年06月07日 16:17
  • 13262

面向对象编程基础 二 this的用法

this可以简单的理解为当前的对象,在构造对象时可以理解为对象的第一人称“我”。this一般被分为三种用法: 1、this表示对象成员变量的引用而非函数参数变量,如下面的代码 public class...
  • xinsuixiaofeiyu
  • xinsuixiaofeiyu
  • 2014年03月12日 10:25
  • 1090

javascript中的面向对象理解(一)

一、注意:提到“面向对象”这一概念,众所周知,javascript中的面向对象思想与其他的编程语言(例如:PHP、Java等)是有着很大区别的。因此,我们先复习下,传统意义上,面向对象的相关概念,以便...
  • u014516981
  • u014516981
  • 2016年10月19日 23:48
  • 1844

ABAP面向对象的开发

在程序中, 对象的识别和寻址是通过对象引用来实现的, 对象引用变量可以访问对象的属性和方法。 ABAP 中的类也有程序内部的局域类和全局类之分, 其作用范围不同。 ABAP中的全局类是通过ABAP工作...
  • zhongguomao
  • zhongguomao
  • 2017年04月20日 16:39
  • 1206

python 2.7 : 面向对象高级编程

转载于:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013868200582...
  • afei198409
  • afei198409
  • 2016年12月28日 17:56
  • 556
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面向对象 —— 对类(class)的理解
举报原因:
原因补充:

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