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

大学曙光yy

大学曙光yy

2016-01-29 12:19

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

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] = '''''''';     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] = '''''''';      math       = 0;      chinese    = 0;      total      = 0;  }    void Student::InputData()  {      ///////////////////////////////////////      //获取输入      cout<<"enter name"<<endl;      cin>>strname;      cout<<"enter math"<<endl;      cin>>math;      cout<<"enter chinese"      
展开更多 50%)
分享

猜你喜欢

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

C语言教程 C语言函数
C++编程杂谈之二:面向对象

C++编程杂谈之三:面向对象(续)

C语言教程 C语言函数
C++编程杂谈之三:面向对象(续)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

C++面向对象编程入门:类(class)

编程语言 网络编程
C++面向对象编程入门:类(class)

类——C++面向对象编程的基石

编程语言 网络编程
类——C++面向对象编程的基石

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

c++面向对象的编程入门篇-----类(class)

编程语言 网络编程
c++面向对象的编程入门篇-----类(class)

C++面向对象编程入门:构造函数与析构函数

编程语言 网络编程
C++面向对象编程入门:构造函数与析构函数

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

JSP开发入门(二)----JSP语法的基本原理

JSP开发入门(二)----JSP语法的基本原理

PSV《英雄传说 闪之轨迹2》游戏通关完全解析

PSV《英雄传说 闪之轨迹2》游戏通关完全解析
下拉加载更多内容 ↓