类型的密封和扩展
OOP是编写软件的均衡办法。数据和行为放在一起。密封创建了定义用户的数据类型,扩展语言数据类型并相互作用。类型扩展是一个向语言添加用户定义数据类型的机会,该类型像基本类型一样,很容易使用。
抽象数据类型,例如,字符串,是著名行为类型理想的描述。
字符串用户知道字符串操作,例如连结或者打印,都有一定的行文。连结和打印操作称为类函数。
某种ADT执行有一定的限制,例如,字符串长度有限制。这些限制影响了行为全部开放。同时,内部或者私人执行细节不直接影响用户看对象的方法。例如,字符串尝以数组来执行,而这个数组的内部基本地址及其名称对于用户则不是必须的。
密封就是当向用户定义类型提供端口时,隐藏执行细节的能力。在MQL5中,及在C++中,类和结构定义(类 和结构 )用于接入关键字 private,protected和public连结的封存规定中。
关键字public 接入其后面的成员,无任何限制就可以打开。无关键字,类成员默认封锁。个人成员仅可以接入这个类里成员函数。
Protected类函数不仅可以在其类中得到,也可以在其继承类中得到。Public类函数可以在类声明范围任一函数中得到。保护可以隐藏类的部分执行,因此阻止了数据结构中意外改变。接入限制和数据隐藏都是面向对象程序设计的一个特点。
通常情况下,类函数由protected修饰符保护和声明,读取和编写值通过使用publics接入修饰符定义的所谓的特别的set-and get-类函数来执行。
示例:
class CPerson
|
这个办法提供了几种优势。首先,通过函数名我们知道它是做什么的-设置或者获得类成员值。其次,也许在将来我们将需要改变CPerson类中或者任一衍生类中的m_name CPerson变量类型。
在这种情况下,我们只需要改变执行函数SetName()和GetName(),而CPerson类的对象可用于使用无代码改变的程序因为用户甚至不知道m_name数据类型已经改变。
示例:
struct Name
|
另见