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

本篇博客介绍了如何在Java中定义朋友信息类,包括姓名、电话等属性,以及设置和显示操作。随后,详细讲解了如何实现复数类的加、减、乘、除运算,结合实例演示了类的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第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,f2
		Friends 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)i
	Complex 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和c2
		c1=new Complex();   
		c2=new Complex();
		 //设置c1,c2的值,分别为  8+10i 、4+6i
		c1.set(8,10);
		c2.set(4,6) ;
		//调用add()方法计算两个复数的和,存入c3
		c3=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();
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值