Processing有关对象的内容理解

发布于:2024-08-10 ⋅ 阅读:(115) ⋅ 点赞:(0)

一.域和方法

       一个软件对象是一个相关变量和函数的集合。在对象的上下文中,一个变量被叫做一个值域。一个函数被叫做方法。一个对象包含相关的数据(值域)和相关的动作行为(方法)。

二.定义一个类

       在定义对象之前要先定义类(class),类是一个对象的说明。用建筑做类比,类(class)就像是房子的蓝图,对象是房子本身。每一栋由蓝图建设的房子都有变化。因为蓝图只是说明,并不是房子建筑结构。比如说这个房子颜色可以是紫色,也可以是蓝色。对象也是一样,类(class)定义了数据和行为,但每一个类(蓝图)定义的对象(房子)都有变化(比如颜色)。这些由不同的值来设置。每一个对象都是一个类的实例,每一个实例都有独立设置的值域和方法。

       设置值域要选择清晰的名字,定义好每一个数据类型。一个类中的至于可以是任何数据类型,一个类也可以包括例如图像、浮点型、字符串型等多种值。要记住定义一个类的目的是将相关的数据元素整合在一起。因此要选择清晰的名字并且定义返回值(如果有的话),方法用于改变值域的值以及执行由值域中值控制的动作。

       编写类的步骤如下:

       1.创建一个块;

       2.添加值域;

       3.创建一个构造函数来为值域指派值;

       4.添加方法。

三.创建对象

3.1创建一个对象

       定义类后就可以定义对象了。定义对象步骤如下:

       1.声明对象变量;

       2.用关键词new创建(初始化)对象。

       案例代码如下

JitterBug bug;//声明对象
void setup(){
  size(480,120);
  //创建对象并传入参数
  bug=new JitterBug(width/2,height/2,20);
}
void draw(){
  bug.move();
  bug.display();
}
class JitterBug{
  float x;
  float y;
  int diameter;
  float speed=2.5;
  JitterBug(float tempX,float tempY,int tempDiameter){
    x=tempX;
    y=tempY;
    diameter=tempDiameter;
  }
  void move(){
    x+=random(-speed,speed);
    y+=random(-speed,speed);
  }
  void display(){
   ellipse(x,y,diameter,diameter);
  }
}

       保存并运行如图1

      

                       图1

       每一个类都是一种数据类型,每一个对象都是变量。我们像用基本的数据结构boolean、int、float声明一个变量那样来声明一个对象变量。声明对象就是写一个数据类型跟着一个变量命。

       例如:JitterBug bug;

       第二步是用关键词new初始化这个对象。它为对象在内存中开辟空间并创建值域。构造函数的名字写在new关键词的右边,如果有参数就向构造函数中传入参数。

       例如:JitterBug bug=new JitterBug(200.0,350.0,30);

       括号中的三个数字是传入JitterBug类中构造函数的值。这些参数的值和数据类型必须与构造参数中设置的对应一致。

3.2创建多个对象

       案例代码如下:

JitterBug jit;
JitterBug bug;//声明对象
void setup(){
  size(480,120);
  jit=new JitterBug(width*0.33,height/2,50);
  //创建对象并传入参数
  bug=new JitterBug(width*0.66,height/2,10);
}
void draw(){
  jit.move();
  jit.display();
  bug.move();
  bug.display();
}
class JitterBug{
  float x;
  float y;
  int diameter;
  float speed=2.5;
  JitterBug(float tempX,float tempY,int tempDiameter){
    x=tempX;
    y=tempY;
    diameter=tempDiameter;
  }
  void move(){
    x+=random(-speed,speed);
    y+=random(-speed,speed);
  }
  void display(){
   ellipse(x,y,diameter,diameter);
  }
}

       保存并运行如图2

                                     图2

       在3.1案例draw()函数中,句号(点)被用来使用对象的方法。点操作符用来连接对象名跟它的值域和方法。在3.2案例中,jit.move()函数指向对象jit对应的move()方法,bug.move()函数指向对象bug对应的move()方法。

四.标签

       标签允许我们扩大自己的代码,让它有多个文件。这使得很长的代码更容易被编辑并且在通常意义上更好被控制。一个新的标签通常用于创建存储一个类,这让使用类的工作环境更模块化,代码也更容易查询。

                                         图3

        创建后命名就可以了。