回 帖 发 新 帖 刷新版面

主题:[原创]C++第一讲---类与对象

    面向对象是计算机认识世界的一种方式,面对于花花绿绿的世界,计算机是怎样认识这个世界呢?人类为了描述这个世界,在数学上有一种重要的数学模式,分类别。计算机是人类发明的,自然也采用这样的一种模式。这就是面向对象。。。。。。。。
    计算机把信息世界分为很多个部分,每一个部分需要有共同的特征。这就像共和国的宪法一样,制定了很多规范,定义了很多概念。这里的概念,计算机把它叫做类(class)。
    每一个概念都有其静态和动态的部分。例如:人的概念,静态的有年龄(int),姓名(String),性别(bool)。。。。。。。等等等等;动态的有,吃饭(吃什么,在那里吃,吃的好吗),上班(干什么,怎么去,先做什么,后作什么,今天发奖金吗,今年提职吗)等等等等。。。。。
这就是类的概念。静态的我们叫做属性,动态的我们叫做方法。即一个类包含2方面的因素:静态的成员变量(属性)和动态的成员函数(方法)。程序代码如下
class Person//class类的标识   抽象的,现实中不存的,仅为一个概念
{    
public://以后在讲述
    //成员变量
    int Age;
    bool Sex;
    char Name[10];


    //成员函数
    void Work(int type)
    {
        if(type<22)
            printf("我是一名学生,正在学习\n");
        if(type>22)
            printf("我是一名工人,为时会主义而努力奋斗\n");
    }
    void Eat(bool type)
    {
        if(type==false)
            printf("建议吃减肥健美之食物\n");
        if(type==true)
            printf("建议吃健身增寿之食物\n");
    }
};
概念是抽象的,并不是现实生活中一个个活生生的实例,计算机要描述世界,需要这样的实例,在计算机的概念里,把实例叫做对象。这就是面向对象的第一大思想,类与对象。
void main()//主函数
{
    Person me;//对象 现实生活中的事务,实际存在的
    me.Age=18;
    me.Sex=false;
    me.Name[0]='A';me.Name[1]='l';me.Name[2]='i';me.Name[3]='c';me.Name[4]='e';
    Person you;//对象  现实生活中的事务,实际存在的
    you.Age=30;
    you.Sex=true;
    you.Name[0]='B';you.Name[1]='o';you.Name[2]='b';
}

对象调用方法:
    me.Work(me.Age);me.Eat(me.Sex);//对象调用方法
    printf("\n");
    you.Work(you.Age);you.Eat(you.Sex);
输出结果:
我是一名学生,正在学习
建议吃减肥健美之食物

我是一名工人,为时会主义而努力奋斗
建议吃健身增寿之食物
 
完整程序代码
class Person//class类的标识   抽象的,现实中不存的,仅为一个概念
{
public://以后在讲述
    //成员变量
    int Age;
    bool Sex;
    char Name[10];


    //成员函数
    void Work(int type)
    {
        if(type<22)
            printf("我是一名学生,正在学习\n");
        if(type>22)
            printf("我是一名工人,为时会主义而努力奋斗\n");
    }
    void Eat(bool type)
    {
        if(type==false)
            printf("建议吃减肥健美之食物\n");
        if(type==true)
            printf("建议吃健身增寿之食物\n");
    }
};

void main()//主函数
{
    Person me;//对象 现实生活中的事务,实际存在的
    me.Age=18;
    me.Sex=false;
    me.Name[0]='A';me.Name[1]='l';me.Name[2]='i';me.Name[3]='c';me.Name[4]='e';
    Person you;//对象  现实生活中的事务,实际存在的
    you.Age=30;
    you.Sex=true;
    you.Name[0]='B';you.Name[1]='o';you.Name[2]='b';

    me.Work(me.Age);me.Eat(me.Sex);//对象调用方法
    printf("\n");
    you.Work(you.Age);you.Eat(you.Sex);
}
当对象代表了现实生活中的实例之后,程序也就完成了描述信息的使命,纵观整个面向对象编程,程序员整天描述的问题也就是这些东西,书写一个类,声明一些对象,然后调用方法。OK,你明白了吗。
总结:这就是神秘的类与对象概念,面向对象的第一大思想。本文还提出了成员变量,成员函数的概念。关于面向对象的其它思想,且听下回分解。

回复列表 (共17个回复)

沙发

诶!支持先!!

板凳

加油,下回我会提点意见,这次....

3 楼

支持◎◎

4 楼

5 楼

首次发贴,有很多不足之处,望大家批评指正

6 楼

{    
public://以后在讲述
    //成员变量
    int Age;
    bool Sex;
    char Name[10];


    //成员函数
    void Work(int type)
    {
        if(type<22)
            printf("我是一名学生,正在学习\n");
        if(type>22)
            printf("我是一名工人,为时会主义而努力奋斗\n");
    }
....
}

既然是面向对象,楼主的所给类的设计有些不恰当。其实还是面向过程的程序!

1。面向对象一般来说都要强调数据的封装,所以像 Age 和Sex 都应该是私有变量所以应该使用privat,而不是public。
2。void Work(int type),既然Work()是成员函数,也就是处理私有变量的方法。但如果这样使用,me.Work(me.Age);,则明显是外露私有变量。
  work的一个合理的写法是:
   void Work(void)
    {
        if(Age<22)
            printf("我是一名学生,正在学习\n");
        if(Age>22)
            printf("我是一名工人,为时会主义而努力奋斗\n");
    }
3.还有在主函数main()中,竟然出现了
    you.Age=30;
    you.Sex=true
   这完全是违背面向对象的思想, 因为对一个对象的赋值是通过构造函数来实现的。
而楼主的写的类成员函数中,竟没有设计构造函数,所以难免会出现上面的错误!

4。我也是初学者,有不当之处请各位见量!
  
   支持楼主继续发表自己的学习心得!!!

7 楼

回复上楼
构造函数在以后讲述
还有3种权限以后讲述
如果用了没有讲的,怕初学者看着迷糊

我是对照刚开始学习的人,没有什么基础的,一点一点向下讲述的,实例的内容是我所讲述的内容,如果没有讲述的,我不会使用,怕初学者感到意外,我将一点一点讲述

8 楼

我将一点一点向下写,准备写道COM编程,子子孙孙无穷尽也

9 楼

我在这里不敢谈OO的学习方法!
 但我认为要学C++,最好还是从学C语言来过渡比较好些!
 还有 如果连数据结构和算法还没学好,
 就来学习向对象的语言,个人觉得没有多大意义!

10 楼

面向对象我还没学过.但我认为,面向对象或面向过程只是个人的思想习惯而已.
比如说有人喜欢把砖头做好了再砌房.但也有的人喜欢用混凝土浇筑.其实最主要的还是在我们心中已有一个房子的蓝图.

我来回复

您尚未登录,请登录后再回复。点此登录或注册