快捷搜索:   服务器  安全  linux 安全  MYSQL  dedecms

C++实例教学之类的应用

  类<class)的概念是面向对象程序设计的核心概念。把对数据和数据的操作和处理封装在一个程序模块中的方法,可以说是人们经过几十年程序设计 实践的经验总结。把程序以类的形式组织成若干模块,使其获得了最佳的结构特性。类概念的引入使程序设计发生了革命性的转变。从结构程序设计(SP)中以作为程序的基本模块转变为面向对象(OOP)程序设计中,以类作为程序的基本模块,这一变化使程序设计技术出现了质的飞跃。
类的概念抓住了程序的本质。程序的基本元素是数据。而函数是围绕数据进行处理和操作。抓住了数据这个“纲”,程序中关系复杂的各种函数就变得脉络清楚,可以随着相应的数据组合成类,类的使用使得:
* 程序设计本身更有条理了;
* 程序的可读性更好了;
* 程序设计的过程真正象是机器部件的组装;
* 由于程序的零部件化,使得程序的可重用性变成切实可行的事。
为了学会OOP方法,首先让我们看看C++程序中类及其对象是怎样工作的。

1 设计一个栈类
栈(stack)是程序设计过程中经常遇到朝气一种数据结构形式,它对于数据的存放和操作有下面这样的特点:
1) 它只有一个对数据进行存入和取出的端口;
2) 后进者先出,即最后被存入的数据将首先被取出。其形式很象一种存储硬币的小容器,每次只可以从顶端压入一个硬币,而取出也只可以从顶端进行,即后进先出。
这样的数据存储和管理形式在一些程序设计中很有用。例如,编译系统中(这是一类比较复杂的程序),对于函数调用的处理、对于表达式计算的处理,都利用了栈这样的数据结构。

下面是一个关于栈的程序: // program 6_1.h
#include<iostream.h>
const int maxsize=6; // enum boola{false,true}; /*注:如果在TC中调试,应加上这一句*/
class stack{
float data[maxsize];
int top;
public:
stack(void);
~stack(void);
bool empty(void);
void push(float a);
float pop(void);
};
stack::stack(void)
{
top=0;
cout<<"stack initialized."<<endl;
}
stack::~stack(void)
{
cout<<"stack destoryed."<<endl;
}
bool stack::empty(void)
{
return top==0?true:false;
}
void stack::push(float a)
{
if(top==maxsize)
{
cout<<"Stack is full!"<<endl;
return;
}
data[top]=a;
top++;
}
float stack::pop(void)
{
if(top==0)
{
cout<<"Stack is underflow!"<<endl;
return 0;
}
top--;
return data[top];
}
void main()
{
stack s1,s2;
for(int i=1;i<=maxsize;i++)
s1.push(2*i);
cout<<endl;
for(i=1;i<=maxsize;i++)
cout<<s1.pop()<<" ";
for(i=1;i<maxsize;i++)
s1.push(2.5*i);
for(i=1;i<=maxsize;i++)
s2.push(s1.pop());
do
cout<<s2.pop()<<" ";
while(!(s2.empty()));
}
程序运行结果如下:


  说明:
    1、 第一行定义了一种用户定义的枚举(enum)类型,该类型的全部值在定义式中的{...}内说明,每个值是一个标识符,每一个值与一个整数对应,如果不指定的话,就按顺序与0,1...相对应。
    程序中定义的枚举类型 名为bool,只有两个值,即false和ture。即falsh=0,true=1。
    C++语言中提供的枚举类型,实际上是int类型的一个子集。每个值除了作为一个整数之外,可以由用户给出一个标识符形式的名字。这样比直接用0,1形式的整数更直观,例如还可以定义这样的枚举类型 :
    enum answer{no,yes,maybe};
    enum listorde{no-order,in-order,in-reverse};
    前者指明用0,1,2表示‘否',‘是'‘可能'中不同的回答,后者则用0,1,2表示一个数据序列的三种状态:“无序”、“正序”(从小到大)、“逆序”。在程序运行中,nono-order完全和整数0起相同的作用,yes-和in-order则与整数1等价。
    在11,22行指出函数empty()返回类型为bool型,即是说明该函数应返回值false或true,当然返回整数0或1都是对的。在23行其返回语句为return top==0?true:false;其中top==0是一个关系表达式,如当前int型变量top的值为0,即top==0为真(true),返回true,如当前top的值不为0,则top==0为假(false),即返回值为false。
    2、5~14行为类stack的说明,其中:
    class

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论