当前位置: 首页 > 图文教程 > 开发语言 > VC++ > C++编程杂谈之二:面向对象

VC++
在Dialog中使用Menu和Toolbar
如何定制对话框中的回车键
再谈 Windows 2000 “打开”文件对话框
Windows2000新型Open对话框的使用
Windows SDK 非模态对话框的消息处理
VC6中使用CHtmlView在对话框控制中显示HTML文件
Windows 2000 UI 新特点之四:其他类型的外壳扩展
Windows 2000 UI 新特点之二:自定义文件夹栏目
Windows 2000 UI 新特点之三:搜索管理器
Windows 2000 UI 新特点之一:信息条提示(Infotip)
数据库异步操作(ADODB)
VC++:小编谈自动注册数据源(DSN)
VC++:小编分享面向对象特征及其优点
VC++:VC++中Windows 3.x的协同多任务
VC++:小编浅谈VC++中的CRecordset类
VC++:小编浅谈ODBC概念,了解ODBC不在是难事
VC++:小编谈用ODBC创建表
VC++:小编浅谈用DAO创建表
VC++:浅析VC++中传统控件的控件通知消息
VC++:小编浅谈静态控件

VC++ 中的 C++编程杂谈之二:面向对象


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 57 ::
收藏到网摘: n/a


C++编程杂谈之二:面向对象
作者/xulion
软件开发是一个极其复杂的过程,一段小的代码我们可以快速、准确的完成,但是当你面对的是一个庞大的软件系统的时候,你是否有不知所措的感觉呢?
在我们使用C的年代里面,编程思想是结构化的,你的C语言老师可能会不断的教导你怎样使用结构化的方法来完成一段程序,同时,你可能也知道在软件开发中的一个重要定律(Wirth定律):
程序 = 算法 + 数据结构
在结构化设计中人们通常是这样来看待这个定律的:
  程序 =(算法) + (数据结构)
例如:(我仍然使用C++标准库来写下面的代码,方便和以后的代码对比)
#include <iostream>using namespace std ;typedef struct Student{ char strname[50]; //姓名 int math; //数学分数 int chinese; //语文 int total; //总分}STUDENT;void InitData(STUDENT* some){ ////////////////////////////////////// //初始化数据 some->strname[0] = ''''\0''''; some->math = 0; some->chinese = 0; some->total = 0;}void InputData(STUDENT* some){ /////////////////////////////////////// //获取输入 cout<<"enter name"<<endl; cin>>some->strname; cout<<"enter math"<<endl; cin>>some->math; cout<<"enter chinese"<<endl; cin>>some->chinese; ////////////////////////////////////// //计算总分 some->total = some->math + some->chinese;}void PrintData(STUDENT some){ cout<<some.strname<<"''''s total mark is:"<<some.total<<endl;}//上面的部分可以单独放在一个头和CPP中main(){ STUDENT someone; InitData(&someone); InputData(&someone); PrintData(someone);} 
到目前为止,程序的划分变得相对简单了,团队的开发才成为可能。在面向对象中,所存在的Wirth定律与上面的结构非常类似:
  对象 = (算法 + 数据结构)
  程序 = 对象 + 对象
  表面上似乎二者之间并没有太大的差别,但就是这个差别为我们带来了巨大的变革。
  有这样一句话:“编程是在计算机中反映世界”,我觉得再贴切不过,面向对象(Object-Oriented)对这种说法的体现也是最优秀的,比如在前面的例子中,我们设计的数据结构是一个学生成绩的表现,而对数据结构的操作(函数)是分离的,虽然这些操作是针对这种数据结构而产生的。为了管理大量的数据,我们不得不小心翼翼地使用它们。
  面向对象中一个重要的概念就是类(class)C++中是它。类和struct数据结构最大的不同就是提供了限制级别(可见性)的保护——我们先抛开复杂的继承与多态不谈。正是通过这种方式,我们可以对数据成员提供非常有效的保护,同时使数据结构更符合现实行为。
  在面向对象的概念中,前面的数据结构表示如下:
  #include   using namespace std;  class Student  {  private:   //属性   char strname[50]; //姓名   int math; //数学分数   int chinese; //语文   int total; //总分  public:  //方法   char* getname(){ return strname; };   int getmath(){ return math; };   int getchinese(){ return chinese; };   int gettotal(){ return total; };   Student();   void InputData();   void PrintData();  };    Student::Student()  {   //////////////////////////////////////   //初始化数据   strname[0] = ''''\0'''';   math = 0;   chinese = 0;   total = 0;  }    void Student::InputData()  {   ///////////////////////////////////////   //获取输入   cout<<"enter name"<<endl;   cin>>strname;   cout<<"enter math"<<endl;   cin>>math;   cout<<"enter chinese"