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

2016-01-29 12:19 4 1 收藏

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

【 tulaoshi.com - 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"
                        

来源:http://www.tulaoshi.com/n/20160129/1485556.html

延伸阅读
标签: Web开发
----什么是类和对象     这是所有面向对象编程之前必须弄明白的.     所谓类:简单地说就是模板,说的专业一些,是一类具有某种性质的物的集合.比如:人就是一个类,车也是一个类,等等.     所谓对象:就是类的具体实现.如上面所说,人是一个类,一个具体的人就是一个对象,比如张三.   &nb...
    在写面向对象的WEB应用程序方面JavaSciprt是一种很好的选择.它能支持OOP.因为它通过原型支持继承的方式和通过属性和方法的方式一样好.很多开发者试图抛弃JS,试着用C#或JAVA仅是因为JS不是他认为合适的面向对象的语言.许多人还没有认识到javascript支持继承.当你写面向对象的代码时.它能给你很强大的能量.你也可以使用它写出...
标签: Web开发
面向对象编程的概念: 不同的作者之间说法可能不一样,但是一个OOP语言必须有以下几方面: 抽象数据类型和信息封装  继承  多态  在PHP中是通过类来完成封装的:  ?php  class Something {  // 在OOP类中,通常第一个字符为大写  var $x;  function s...
前文回顾:C/C++编程新手错误语录  错误语录(续一) (13)“整型变量仅仅意味着一个整数” !-- frame contents -- !-- /frame contents -- 当我们还是一个新手,看整型就是整数; 当我们成为高手,看什么都是整型。 整型,在所有C/C++基本数据类型中最富有艺术魅力和奇幻色彩。 我们从某闻名...
请注重,这一节内容是c++的重点,要非凡注重! 我们先说一下什么是构造函数? !-- frame contents -- !-- /frame contents -- 上一个教程我们简单说了关于类的一些基本内容,对于类对象成员的初始化我们始终是建立成员函数然后手工调用该函数对成员进行赋值的,那么在c++中对于类来说有没有更方便的方式能...

经验教程

993

收藏

37
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部