一.域和方法
一个软件对象是一个相关变量和函数的集合。在对象的上下文中,一个变量被叫做一个值域。一个函数被叫做方法。一个对象包含相关的数据(值域)和相关的动作行为(方法)。
二.定义一个类
在定义对象之前要先定义类(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
创建后命名就可以了。