> 文档中心 > 8-1-2 类和对象的定义与使用

8-1-2 类和对象的定义与使用

第1关:选择题
任务描述
本关任务:选择题。

相关知识
为了完成本关任务,你需要掌握:1. 类和对象的定义与使用

类的定义
类包括类头和类体两部分,类体内包括类的数据成员和方法成员两个部分。
数据成员用于描述类的属性,方法成员用于描述类的行为。
class Circle{
double radius;
double area;
public void setRadius(double r)
{
radius = r;
area = 3.14radiusradius;
}
public double getArea()
{
return area;
}
}

对象的定义和使用
类是抽象的,是一种自定义的数据类型。对象是类的一个实例或者称之为变量。
对象的定义包括两个部分:声明对象和创建对象。
通过对象名调用类的方法。
public class Test {
public static void main(String[] args) {
Circle c1,c2; //声明对象
c1 = new Circle(); //创建对象
c2 = new Circle();
c1.setRadius(2);
c2.setRadius(3);
System.out.printf(“c1的半径%.2f面积%.2f\n”,2.0,c1.getArea()); //通过对象名调用类的方法
System.out.printf(“c2的半径%.2f面积%.2f”,3.0,c2.getArea());
}
}
本例中,对象c1和c2是Circle类的两个对象,它存放的是用new创建的两个Circle类的对象的引用。 每个对象都拥有2个数据成员和2个方法成员。

开始你的任务吧,祝你成功!
在这里插入图片描述
在这里插入图片描述
第2关:通讯录中的朋友信息类
任务描述
本关任务:定义通讯录中的朋友信息类,包括姓名、电话、单位、年龄、备注,能实现朋友信息的设置、显示。 并在主程序类中调用朋友信息类的相关方法,实现定义一个朋友对象,输入该友的信息、显示该朋友的信息。
【拓展:完成本任务后,请在开发环境中增加一个类的方法input(),实现输入一个朋友信息。并在主程序类中调用。】

相关知识
为了完成本关任务,你需要掌握:1. 类的定义,2.对象的定义和使用。

定义成绩类: 学号、姓名、成绩
//定义成绩类 Score.java
public class Score {
//数据成员
String number;
String name;
float score;
//方法成员
//设置成绩
void set(String new_number,String new_name, float new_score)
{
number=new String(new_number);
name=new String(new_name);
score=new_score;
}
//显示成绩
void display()
{
System.out.printf( “number:%s name:%s score:%f\n”, number,name,score);
}
}
//调用成绩类的测试类 ScoreTest.java
public class ScoreTest {
public static void main(String[] args)
{
Score s1,s2; //声明两个对象s1,s2
s1=new Score(); //创建对象s1
s1.set(“180805223”,“wang wei”,87); //调用对象s1的方法set给对象s1赋值
s1.display(); //调用对象s1的方法display显示对象s1的值
//创建对象s2,并调用s2的方法实现对s2的赋值和显示
s2=new Score(); //
s2.set(“180805230”, “liu ming”, 76);
s2.display();
}
}
运行结果:
number:180805223 name:wang wei score:87.000000
number:180805230 name:liu ming score:76.000000

类的结构
[修饰符] class 类名{
数据成员
方法成员
}

一般每个类作为一个文件,方便使用。

编程要求
根据提示,在右侧编辑器补充代码。

测试说明
平台会对你编写的代码进行测试:

测试输入: ;
预期输出:
name:王丽艳 tel:13245876655 workUnit:山东交通学院信电学院 age:21 note:计算机19
name:逄瀚 tel:15678908899 workUnit:机动车检测中心 age:34 note:经理

提示:
1.字符串String是类,因此字符串变量的赋值不能直接使用“=”,而需要用String s2 = new String(s1);
2.程序包含两个源文件,请单击编辑环境左上角的三角符号打开每个文件。

在这里插入图片描述

/*朋友信息类,请在下面的【】处补充代码*/public class Friends {   //数据成员:姓名、电话、单位、年龄、备注String name,tel,workUnit,note;int age;//方法成员//设置朋友信息void set(String name,String tel,String workUnit,int age,String note){ this.name=new String(name);this.tel=new String(tel);this.workUnit=new String(workUnit);     this.age= age;this.note=new String(note);}//显示信息void display(){System.out.printf( "name:%s tel:%s workUnit:%s age:%d note:%s\n", name,tel,workUnit,age,note);}}
/*主程序类,请在下面的【】处补充代码*/public class TestFriends {public static void main(String[] args) {     //声明两个Friends类的对象f1,f2Friends f1;      //创建对象f1   f1=new Friends();     //通过f1调用方法f1.set("王丽艳", "13245876655",  "山东交通学院信电学院",21 ,"计算机19");   //调用对象f1的方法set给对象s1赋值f1.display();    // 调用对象f1的方法display显示对象f1的值//创建对象f2,并调用f2的方法实现对f2的赋值和显示Friends f2=new Friends();f2.set("逄瀚","15678908899","机动车检测中心",  34 ,"经理"); f2.display();   }}

第3关:复数
任务描述
本关任务:定义复数类Complex,实现两个复数的“加、减、乘、除”运算。复数包括实部和虚部两个成员。请参照下面的代码补全程序。

相关知识
为了完成本关任务,你需要掌握:1. 类和对象的定义和使用,2. 复数的运算规则

类和对象的定义和使用
类的定义:
[修饰符] class 类名{
数据成员
方法成员
}
//复数类的定义
public class Complex {
//数据成员
double real;
double imag;
//以下是方法成员
// 设置复数
void set(double r, double i)
{
real = r;
imag = i;
}
// 显示复数
void display( )
{
System.out.printf(“%.2f + %.2fi\n”, real, imag);
}
// 两个复数相加
Complex add(Complex c2)
{
Complex c3 = new Complex();
c3.real = this.real + c2.real;
c3.imag = this.imag + c2.imag;
return c3;
}
}
对象的定义和使用:
对象的声明、创建
在类外,通过对象调用方法。
比如, 以下主程序类中调用Complex类的方法实现了对两个复数的加法运算:
public class TestComplex {
public static void main(String[] args) {
//声明3个对象,
Complex c1,c2,c3;
//创建2个对象
c1=new Complex();
c2=new Complex();
//设置c1,c2的值
c1.set(5,6);
c2.set(3,2);
//调用add()方法计算两个复数的和,存入c3
c3=c1.add(c2);
//调用c3的方法display()显示c3的值
c3.display( );
}
}
运行结果:
8.00+8.00i

复数的运算规则
设有两个复数 a+bi 、 c+di
加:(a+bi)+(c+di)=(a+c) + (b+d)i
减:(a+bi)-(c+di)=(a-c) + (b-d)i
乘:(a+bi)*(c+di)=(ac-bd)+(bc+ad)i
除:复数的商:分子分母同时乘以分母的共轭复数
(a+bi)/(c+di) =((a+ bi)(c- di))/((c+ di)(c- di))
=(ac+bd)/(c2+d2)+ ((bc-ad)/(c2+d2))i

编程要求
根据提示,在右侧编辑器补充代码 。

测试说明
平台会对你编写的代码进行测试:
设两个复数分别是:8+10i 4+6i
测试输入: `;
预期输出:
12.00 + 16.00i
4.00 + 4.00i
-28.00 + 88.00i
1.77 + -0.15i

开始你的任务吧,祝你成功!

//复数类的定义,请在下面的【】处填写代码public class Complex {   //数据成员: 实部、虚部,都是double类型double r,i;  //以下是方法成员  // 设置复数void set(double r, double i) {this.r=r;this.i=i;}void display( ) // 显示复数,格式为 a + bi{System.out.printf("%.2f + %.2fi\n", r,i);}Complex add(Complex c2) // 两个复数相加{Complex c3 = new Complex(); c3.r = this.r+  c2.r; c3.i = this.i + c2.i; return c3;}Complex sub(Complex c2) // 两个复数相减{Complex c4 = new Complex(); c4.r = this.r - c2.r; c4.i = this.i - c2.i; return c4;}//复数的乘积 (a+bi)*(c+di)=(ac-bd)+(bc+ad)iComplex mul(Complex c2)  {Complex c5 = new Complex(); c5.r = this.r*c2.r-this.i*c2.i; c5.i = this.r*c2.i+this.i*c2.r; return c5;}/*复数的商:分子分母同时乘以分母的共轭复数(a+bi)/(c+di)=((a+ bi)(c- di))/((c+ di)(c- di))=(ac+bd)/(c^2+d^2)+ ((bc-ad)/(c^2+d^2))i*/Complex div(Complex c2)  {Complex c6 = new Complex(); c6.r = (this.r*c2.r+this.i*c2.i)/(c2.i*c2.i+c2.r*c2.r); c6.i =(this.i*c2.r-this.r*c2.i)/(c2.i*c2.i+c2.r*c2.r); return c6;}}
//调用复数类,请在下面的【】处填写代码public class TestComplex {public static void main(String[] args) {//声明6个Complex类的对象c1~c6,其中前两个表示要运算的两个复数,后4个表示加减乘除的结果Complex c1,c2,c3,c4,c5,c6;  //创建2个对象c1和c2c1=new Complex();   c2=new Complex(); //设置c1,c2的值,分别为  8+10i 、4+6ic1.set(8,10);c2.set(4,6) ;//调用add()方法计算两个复数的和,存入c3c3=c1.add(c2);//调用c3的方法display()显示c3的值c3.display();//调用减法,计算c1-c2,结果存入c4,显示c4的值c4=c1.sub(c2);c4.display();//调用乘法,计算c1*c2,结果存入c5,显示c5的值c5=c1.mul(c2);c5.display();//调用除法c6=c1.div(c2);c6.display();}}

许愿下载