快速业务通道

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

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29

软件开发是一个极其复杂的过程,一段小的代码我们可以快速、准确的完成,但是当你面对的是一个庞大的软件系统的时候,你是否有不知所措的感觉呢?

在我们使用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::S

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号