面向对象之初识类与对象

在一片苍茫的草地上生活着一群无忧无虑的小猪,他们有着粉粉嫩嫩或者黑不溜秋的皮肤、圆圆的鼻孔、大大的耳朵,非常惹人喜爱。定睛一看,有的猪正在舒适的窝里睡觉,有的正在夕阳下奔跑(国产的猪就是勤快),有的正为猪生大事而在谈恋爱。。。那么问题来了,这跟类和对象有什么关系呢?对,你可能猜到了,我们将这群小猪抽象成为猪类,而每只可爱滴猪则是猪类实例化的对象。好,那么我们如何使用C++来进行抽象呢?我们接着往下看。
我们可以使用class关键字来抽象一个类,比如:

class Pig
{

};  //注意后面的分号不能丢

这样我们就简单的声明了一个类,可是花括号里空空的,这跟咸鱼有什么区别呢?别急,我们把刚才观察到的一一列举上。每只小猪都有体重、性别、肉质情况等等,不过根据我们所侧重的方面,只取前三者就够了。

class Pig
{
public:
    string m_strName;   //名字
    char m_cSex;        //性别
    double m_dWeight;   //体重
};  //注意后面的分号不能丢

可是小猪们还会睡觉的啊,还会奔跑的啊。别急,我们再为其添加相应的方法(函数)。

class Pig
{
public:
    string m_strName;   //名字
    char m_cSex;        //性别
    double m_dWeight;   //体重
    void run();         //奔跑
    void sleep();       //睡觉
};  //注意后面的分号不能丢

这样一来,我们所需要的都齐了,可是我们如何去定义这一只只活泼可爱的小猪呢。突然,天空一声巨响,一道闪电从天而降,西边的山崖裂开了一道巨缝,一只肥头大耳的小猪蹦了出来,好,那么我们就来(强行)实例化这只新伙伴吧。
首先我们先给他取一个响亮的名字,就叫猪刚烈吧,谁让你是上帝呢o(∩_∩)o

Pig pig;
pig.m_strName = "zhugangile";

这样猪刚烈就诞生了,但是我们还要赋给他体重性别什么的啊,你可能会机智的这么写:

pig.m_cSex = 'M';
pig.m_dWeight = 250.00;

这么写在语法上是可以的,但是不符合我们面向对象的封装性,你想啊,当我们想知道人家的体重的时候需要询问人家吧,可不能直接打量出来的。所以我们需要使用相应的方法(接口)来获得相应的数据,同时使用访问限定符private将必要的数据成员封装起来,就像这样:

class Pig
{
public:
    void run();         //奔跑
    void sleep();       //睡觉
    void setName(string name);       //设定姓名
    void setWeight();   //设定体重
    void setSex();      //设定性别
    double getWeight(); //获取体重
    char getSex();      //获取性别
private:
    string m_strName;   //名字
    char m_cSex;        //性别
    double m_dWeight;   //体重
};  //注意后面的分号不能丢

注意我们使用了privat之后就不能在类外直接访问成员了啊!

既然都已经定义好了,我们来使用一下这些方法吧。

    pig.setName("zhuganglie");
    pig.setWeight(250.00);
    pig.setSex('M');
    cout << "Weight:" << pig.getWeight() << endl;
    cout << "Sex:" << pig.getSex() << endl;
    pig.run();
    pig.sleep();

源程序代码:

#include <iostream>

using namespace std;

class Pig
{
public:
    void run();         //奔跑
    void sleep();       //睡觉
    void setName(string name);       //设定性别
    void setWeight(double weight);   //设定体重
    void setSex(char sex);           //设定性别
    double getWeight(); //获取体重
    char getSex();      //获取性别
private:
    string m_strName;   //名字
    char m_cSex;        //性别
    double m_dWeight;   //体重
};  //注意后面的分号不能丢

int main(void)
{
    Pig pig;     //在栈上实例化一个对象
    pig.setName("zhuganglie");
    pig.setWeight(250.00);
    pig.setSex('M');
    cout << "Weight:" << pig.getWeight() << endl;
    cout << "Sex:" << pig.getSex() << endl;
    pig.run();
    pig.sleep();

    return 0;
}

void Pig::run()
{
    cout << "I can run!" << endl;
}

void Pig::sleep()
{
    cout << "I can sleep!" << endl;
}

void Pig::setWeight(double weight)
{
    m_dWeight = weight;
}

void Pig::setSex(char sex)
{
    m_cSex = sex;
}

double Pig::getWeight()
{
    return m_dWeight;
}

char Pig::getSex()
{
    return m_cSex;
}

void Pig::setName(string name)
{
    m_strName = name;
}

最后说一下C++中的命名问题,我比较常用的是类名首字母大写,比如:Person;方法(函数)名首字母小写后面的单词首字母大写,比如getName(),(也有使用get_name()之类的。。);变量名字的话,由于C++变量的作用域不同,对于全局、普通变量均使用小写字母,比如name、sex,对于数据成员变量我习惯使用的是数据成员标记m(member)下划线、数据类型、名字,比如m_strName。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值