C++PrimerPlus 学习笔记 | 第十章 类和对象|7 抽象数据类型 8 总结

本文探讨了面向对象编程中的抽象数据类型(ADT)概念,以栈为例说明如何定义和实现ADT。通过定义类来隐藏数据实现细节,确保接口的一致性。栈的ADT包括创建、添加、删除、检查满和空等操作。类的私有部分存储数据,公有接口提供访问途径,实现数据隐藏和封装。强调了类作为数据和方法的组合,以及接口与实现分离的重要性。
摘要由CSDN通过智能技术生成

抽象数据类型

前面定义的 c a r car car类非常具体,程序常常通过定义类表达更加通用的概念,就抽象数据类型ADT的而言,使用类是非常好的概念,顾名思义ADT以通用的方式来描述数据类型,而没有引入语言和实现细节,例如栈。

我们不妨以栈为例,来看看如何描述一个抽象数据类型

具有的操作

  1. 可以创建空栈
  2. 可以讲数据项添加到栈顶
  3. 可以讲数据项从栈顶删除
  4. 可以查看栈是否填满
  5. 可以查看栈是否为空

来看下面实例

typedef int Item;
class Stack{
private:
    enum class Stack_Size {Small = 10,Medium = 100,Large = 1000};
    Item _ItemArr[(unsigned long)Stack_Size::Large];
    int top;
public:
    Stack();
    bool isEmpty() const;
    bool isFull() const;
    bool push(const Item&);
    bool pop(Item&);
};

私有部分表明改栈是由数组实现的,而公有接口隐藏了这一点,所以即使程序兴致大发,合理的改为new实现,对于外部使用者来说也没有任何区别,而为了栈通用,使用了typedef来定义数据类型,在后面我们会学到类模版来更好实现的这一点。

通过私有化数据成员来保证各个数据项能被成员函数正确的处理,这种保证措施是OOP更加可靠的之一

总结

面向对象编程强调的是程序如何使用数据,使用OOP方法解决编程第一步是根据他与程序的接口来描述数据.从而制定如何使用数据。然后设计一个类来实现该接口,一般来说私有数据成员存储信息,公有成员函数提供访问数据的唯一途径,类将数据和方法合成一个单元,其私有性实现数据隐藏。

一般来说,将类声明分为两个文件存储,一个头文件存储类声明(由函数原型表示的方法),定义成员函数的源代码应该放在源文件中,这样便将接口细节和实现细节分开,从理论来上说只需要查看接口就可以使用类。程序不应该依赖类的实现细节,只要程序与类通过定义接口的方法进行通信,程序就可以随意的对任何部分进行修改,而不必担心导致意外的不良影响。

类是用户定义的类型,对象是类的实例,C++试图让用于定义的类型与内置类型更加一致,提供了许多与普通内置类型相同的操作方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值