Ardunino——面向对象语言学习篇2——创建类对象(抽象)

学习自:太极创客。
实践是检验真理的唯一标准,通过arduino进行实践学习C++或许是一个不错的选择。

目标:

  实现LED灯闪烁五次。

创建类对象:

  创建一个类:LED
    行为:①打开LED、②关闭LED
    属性:①LED引脚编号

抽象(抽象出类的成员):

  对LED进行归纳抽象,提取其中的共性,得到以下抽象描述:

数据抽象(共同属性/数据成员):

   int ledPin; //LED引脚编号

功能抽象(共同行为/函数成员):

  ①void on() //打开LED;
  ②void off() //关闭LED;

硬件搭建

在这里插入图片描述

代码实现:

class Led {
  public:
    void on();  //打开LED
    void off(); //关闭LED
    int ledPin = 3;//初始化引脚编号为3(要与硬件搭建一致)
};//注意这边要有分号结束

void Led::on() {    //对ledPin输出高电平
  digitalWrite(ledPin, HIGH);
}

void Led::off() {  //对ledPin输出低电平
  digitalWrite(ledPin, LOW);
}

void setup() {  
  Led myLed;    //定义Led类对象myLed
  pinMode(myLed.ledPin,OUTPUT); //设置为OUTPUT
  for (int i = 0; i < 5; i++) {//LED灯闪烁5次
    myLed.on();
    delay(500);
    myLed.off();
    delay(500);
  }
}
void loop() {
}

实验现象

  实现引脚编号为3的LED闪烁5次。

代码详解

  ① 类的定义。

    class:即类class Led{ }表示创建Led类,其中函数成员和数据成员描述了抽象的结果。“{”和“}”限定了类的边界。";"表示类创建结束。

           class  类名称
            {
				public:
					外部接口(公有成员);
				protected:
					保护型成员;
				private:
					私有成员;
			};
如:
			class Led {
			    public:
    				void on(); 
   					void off(); 
   					int ledPin = 3;
			};
  ②类成员的访问控制

    对类成员访问权限的控制,是通过设置成员的访问控制属性实现的。关于访问控制权限的关键字有:public(公有类型)、protected(保护类型)private(私有类型),用来指定类的成员(数据成员&函数成员)访问权限
    public:即公有的 ,定义了类的外部接口,后面声明类的公有成员,在类外只能访问类的公有成员
    private:即私有的,后面声明类的私有成员。若私有成员紧接类名称,则关键字private可省略。只能被本类成员函数访问,来自类外部的任何访问都是非法的,完全隐蔽类中,保护数据安全性。(后面会对该程序进行变化来说明这个问题
    PS:一般数据成员都应该声明为私有成员,这样内部数据不会对该类以外部分造成影响。

  ③成员函数的实现

    void Led::on() 、void Led::off() :即成员函数的具体实现,写在类定义之外
  成员函数的原型声明写在类体中,说明函数的参数表返回值类型,如:void off();
  与普通函数不同是,实现成员函数时要指明类的名称,如: myLed.on();、myLed.off();
  成员函数实现的具体形式:

            返回值类型  类名::函数成员名(参数表)
            {
				函数体
			}
如:
			void Led::off()
			 {  
				  digitalWrite(ledPin, LOW);
			 }
  ④对象

    类是一种抽象机制,描述一类事物的共同属性,类的对象就是该类的某一特定实体(实例),如:整个公司的雇员看作一个类,那么每个雇员就是该类的特定实体即对象。
    声明对象的具体形式:

            类名  对象名;
如:
			Led myLed;

    PS:对象所占据的内存空间只是用于存放数据成员,函数成员不在每一个对象中存储副本,每个函数的代码在内存中只占据一份空间。

  ⑤数据成员的调用

    访问数据成员的一般形式是:

            对象名.数据成员名
如:
			myLed.ledPin
  ⑥成员函数的调用

    调用成员函数与调用普通函数的差异在于需要使用“.”操作符指出调用所针对的对象(目的对象)。
    调用函数成员的一般形式是:

            对象名.函数成员名(参数表)
如:
			myLed.on();

    PS:在类的外部只能访问到类的公有成员;在类的成员函数中,可以访问到类的全部成员。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值