区块链:Solidity面向对象编程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wtdask/article/details/81944349

面向过程编程

C语言是面向过程的编程语言。(但是C语言同样也可以进行面向对象编程,假如你的功底很深的话)

按照预设的顺序一步一步的去执行的过程,就是面向过程编程

例如:我想听音乐

  1. 打开电脑
  2. 打开音乐播放器
  3. 搜索歌曲
  4. 播放歌曲
  5. 暂停
  6. 下一首
  7. 音量调节
  8. 关闭音乐播放器
  9. 关闭电脑

面向对象编程

语言很多,包括:C++,Java,iOS, C#….

随着开发年限的增涨,对面向对象的思想也不会不断加深

如上面的例子:就包含2个对象,电脑和音乐播放器

  • 电脑:属性-> 大小,颜色,价格,音乐播放器(电脑安装的软件都可以被称为电脑的属性)
  • 电脑:方法/行为:开机,关机,安装播放器,卸载播放器

  • 音乐播放器:属性->皮肤,大小(11M),价格(¥10)
  • 音乐播放器:行为/方法->启动播放器,关闭播放器,搜索歌曲,播放歌曲,暂停播放,下一首播放,音量调节

面向对象实现上面的程序

  1. {电脑 开机}
  2. {音乐播放器 启动}
  3. {音乐播放器 搜索}
  4. {音乐播放器 播放}
  5. {音乐播放器 调节音量}
  6. {音乐播放器 暂停}
  7. {音乐播放器 下一首}
  8. {音乐播放器 关闭}
  9. {电脑 关机}

对象仅仅提供接口(方法),来供外界使用。启动,搜索,播放,调节音量,暂停,下一首,关闭都属于音乐播放器提供给外界的接口。

类和对象

对象 对象
苹果电脑 小明的电脑 奥巴马的电脑
明星 刘亦菲 周星驰
武功秘籍 降龙十八掌 九阴真经

我们可以把类理解为一张设计图,对象就是根据这张设计图设计出来的实体。

从编程的角度理解:

int a;
int b;

int 可以理解为类,a,b可以理解为对象

Counter counter = new Counter();

Counter 可以理解为类,counter可以理解为对象

总结
类:类是一个抽象的概念,它将一堆相似的东西共同的属性和行为抽象出来,所有抽象出来的属性和行为组成一个类。可以通过类去实例化N多个对象

对象:对象是一个具体的东西,有具体的属性值和方法行为。

如何通过Solidity实现一个类(合约)

通过Atom编写智能合约,也可以通过https://remix.ethereum.org.

pragma solidity ^0.4.4;
/*
 pragma:版本声明
 solidity:开发语言
 0.0.1:当前合约的版本,0.0代表主版本,.1代表修复BUG的升级版
 ^:向上兼容 0.0.1 ~0.0.9可以对我们当前的代码进行编译
*/

contract Person {
  uint _height; //身高
  uint _age; //年龄
  address _owner; //代表合约的拥有者

  //方法名和合约名相同时就属于构造函数,在创建对象时,构造函数会自动最先被调用
  function Person() {
    _height = 180;
    _age = 29;
    _owner = msg.sender;
  }

  function owner() constant returns (address) {
    return (_owner);
  }
  // set方法,修改height属性
  function setHeight(uint height) {
    _height = height;
  }

  //读取_height constant代表方法只读
  function height() constant returns (uint) {
    return _height;
  }

  function setAge(uint age) {
    _age = age;
  }

  function age() constant returns (uint) {
    return _age;
  }

  function kill() constant{
    if (_owner == msg.sender){
      //析构函数
        selfdestruct(_owner);
    }
  }

}

这里写图片描述

每一次创建新的合约,合约地址都是不一样的。

猜你喜欢

转载自blog.csdn.net/wtdask/article/details/81944349