一、实验目的:
掌握Java类的结构、类的定义、方法和属性的定义以及对象的实现;
掌握类及其成员修饰符的使用;掌握构造函数的使用;方法的参数传递和返回值的用法;
掌握类变量与实例变量,以及类方法与实例方法的区别。
二、实验内容:
1. 定义一个学生类(Student),属性有private的名字(name), public的年龄(age),专业(specialty)和封装name属性的方法:setName(),getName(),getspecialty()编写Application,创建一个学生对象,设置name和age属性值,然后调用一个方法(此方法将对象作为参数传递,在方法中打印出学生的名字name和年龄age)。(学生类仅包含静态成员变量和方法。)
2. 定义一个类Point,代表一个点,public属性有x和y,方法有显示点坐标 show(),构造函数有两个参数分别给x,y赋值,在main方法中构造两个对象,再创建一方法(getMiddle)为取两个点构成线段的中点的坐标,参数为2个点对象,调用此方法后得到一个新的点,编写Application,显示该对象的坐标值。
3. 定义一个复数(z=x+iy)类Complex,包含:
两个属性:实部x和虚部y
默认构造函数 Complex(),设置x=0,y=0
构造函数:Complex(int i,int j)
显示复数的方法:showComp()将其显示为如: 5+8i或5-8i 的形式。
求两个复数的和的方法:(参数是两个复数类对象,返回值是复数类对象)public Complex addComp(Complex C1,Complex C2)
求两个复数的差的方法:(参数是两个复数类对象,返回值是复数类对象)public Complex subComp(Complex C1,Complex C2)
求两个复数的乘积的方法:(参数是两个复数类对象,返回值是复数类对象,新复数实部=两复数实部乘积-两复数虚部乘积,新复数虚部=两复数实部与虚部交叉乘积之和,)public Complex multiComp(Complex C1,Complex C2)
比较两个复数是否相等的方法(参数是两个复数类对象,返回值是boolean类型)public boolean equalComp(Complex C1,Complex C2)
在Application中测试该类的方法,实部x和虚部y可由main方法参数提供输入。
三、实验要求:
1. 正确地定义类、方法和属性;
2. 学会方法的参数传递和返回值的用法;
3. 熟练使用类及其成员修饰符
4.使用构造函数创建类的对象;
5. 类变量与实例变量,以及类方法与实例方法的使用
6.程序应包括各个被调用方法的执行结果的显示。
7.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提示,并给出解决办法。(附源代码、运行结果、和实验的心得体会)。
四、实验步骤:
1.(第1题)定义一个学生类(Student)及它的属性和方法;定义主类和main(),在main()方法中创建学生对象,并通过对象调用它的方法setName(),getName(),输出学生的名字name和年龄age。
2. (第2题) 定义类Point及它的属性、方法和构造函数,定义主类和main(),在main()方法中创建两个坐标对象,,并通过对象调用getMiddle方法后得到一个新的点坐标,调用show()显示该对象的坐标值。
3. (第3题)定义一个复数(z=x+iy)类Complex,及它的属性、方法和构造函数;定义主类和main()方法,在main()方法中创建两个复数类Complex对象,并通过复数类对象调用它们的属性和方法,输出方法执行结果。
五、自做实验
1. 构造一个类来描述屏幕上的一个点,该类的构成包括点的x和y两个坐标,以及一些对点进行的操作,包括:取得点的坐标值,对点的坐标进行赋值,编写应用程序生成该类的对象并对其进行操作。
2. 编写实现:有一个三角形类Triangle,成员变量有底边x和另一条边y,和两边的夹角a(0<a<180),a为静态成员,成员方法有两个:求面积s(无参数)和修改角度(参数为角度)。
3. 编写实现: 构造函数为 Triangle(int xx,int yy,int aa) 参数分别为x,y,a赋值 在main方法中构造两个对象,求出其面积,然后使用修改角度的方法,修改两边的夹角,再求出面积值。(提示:求高的方法 h=y*Math.sin(a) )
注意:构造方法用于对成员变量初始化,无参数的构造方法将成员变量初始化为0值。
程序代码:
1,
public class Student {
private static String name;
public static int age;
public static String specially;
public Student(String name,int age)
{
Student.name=name;
Student.age=age;
}
public static void setName(String name)
{
Student.name=name;
}
public static String getName()
{
return name;
}
public static String getSpecially()
{
return specially;
}
public static void print(Student stu)
{
System.out.print("学生的姓名:"+Student.getName()+"\n"+"学生的年龄:"+Student.age);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Student stu=new Student("李明",20);
Student.print(stu);
}
}
2,
public class Point {
int x;
int y;
public Point(int x,int y)
{
this.x=x;
this.y=y;
}
public void show()
{
System.out.println("("+x+","+y+")");
}
public void getMiddle(Point p1,Point p2)
{
x=(p1.x+p2.x)/2;
y=(p1.y+p2.y)/2;
System.out.println("("+x+","+y+")");
}
public static void main(String args[])
{
Point pt1=new Point(2,3);
Point pt2=new Point(6,9);
pt1.show();
pt2.show();
pt1.getMiddle(pt1,pt2);
}
}
3,
import javax.swing.JOptionPane;
public class Complex {
int x;
int y;
public Complex()
{
this.x=0;
this.y=0;
}
public Complex(int x,int y)
{
this.x=x;
this.y=y;
}
public void showComp()
{
System.out.println("显示复数:"+this.x+"+"+this.y+"i"+".");
}
public Complex addComp(Complex c1,Complex c2)
{
Complex cx1 =new Complex();
cx1.x=c1.x+c2.x;
cx1.y=c1.y+c2.y;
return cx1;
}
public Complex subComp(Complex c1,Complex c2)
{
Complex cx2 =new Complex();
cx2.x=c1.x-c2.x;
cx2.y=c1.y-c2.y;
return cx2;
}
public Complex multiComp(Complex c1,Complex c2)
{
Complex cx3=new Complex();
cx3.x=c1.x*c2.x-c1.y*c2.y;
cx3.y=c1.x*c2.y+c2.x*c1.y;
return cx3;
}
public boolean equalComp(Complex c1,Complex c2)
{
if(c1.x==c2.x&&c1.y==c2.y)
{
System.out.println("两个复数相等!");
return true;
}
else
{
System.out.println("两个复数不相等!");
return false;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String Nc1;
String Nc2;
String Nc3;
String Nc4;
int c1,c2,c3,c4;
Nc1=JOptionPane.showInputDialog("请输入第一个复数的实部:");
c1=Integer.parseInt(Nc1);
Nc2=JOptionPane.showInputDialog("请输入第一个复数的虚部:");
c2=Integer.parseInt(Nc2);
Nc3=JOptionPane.showInputDialog("请输入第一个复数的实部:");
c3=Integer.parseInt(Nc3);
Nc4=JOptionPane.showInputDialog("请输入第一个复数的虚部:");
c4=Integer.parseInt(Nc4);
Complex cm1=new Complex(c1,c2);
Complex cm2=new Complex(c3,c4);
cm1.showComp();
cm2.showComp();
cm1.addComp(cm1, cm2).showComp();
cm1.subComp(cm1, cm2).showComp();
cm1.multiComp(cm1, cm2).showComp();
cm1.equalComp(cm1,cm2);
}
}
五。
public class TriangleTest {
public static void main(String[] args) {
Triangle t1=new Triangle(3,4,90);
t1.print();
Triangle t2=new Triangle(5,6,90);
t2.print();
t2.reapetA(30);
t2.print();
}
}
class Point
{
int x;
int y;
public Point(int x,int y)
{
this.x=x;
this.y=y;
}
public int getX()
{
return x;
}
public int getY()
{
return y;
}
}
class Triangle extends Point
{
static int aa;
double PI=3.1415926;
public Triangle(int xx,int yy,int aa)
{
super(xx,yy);
Triangle.aa=aa;
}
public float area()
{
return (float) ((x*y*Math.sin(PI*aa/180))/2);
}
public int reapetA(int a)
{
Triangle.aa=a;
return Triangle.aa;
}
public void print()
{
System.out.println("三角形的面积:"+area());
}
}
掌握Java类的结构、类的定义、方法和属性的定义以及对象的实现;
掌握类及其成员修饰符的使用;掌握构造函数的使用;方法的参数传递和返回值的用法;
掌握类变量与实例变量,以及类方法与实例方法的区别。
二、实验内容:
1. 定义一个学生类(Student),属性有private的名字(name), public的年龄(age),专业(specialty)和封装name属性的方法:setName(),getName(),getspecialty()编写Application,创建一个学生对象,设置name和age属性值,然后调用一个方法(此方法将对象作为参数传递,在方法中打印出学生的名字name和年龄age)。(学生类仅包含静态成员变量和方法。)
2. 定义一个类Point,代表一个点,public属性有x和y,方法有显示点坐标 show(),构造函数有两个参数分别给x,y赋值,在main方法中构造两个对象,再创建一方法(getMiddle)为取两个点构成线段的中点的坐标,参数为2个点对象,调用此方法后得到一个新的点,编写Application,显示该对象的坐标值。
3. 定义一个复数(z=x+iy)类Complex,包含:
两个属性:实部x和虚部y
默认构造函数 Complex(),设置x=0,y=0
构造函数:Complex(int i,int j)
显示复数的方法:showComp()将其显示为如: 5+8i或5-8i 的形式。
求两个复数的和的方法:(参数是两个复数类对象,返回值是复数类对象)public Complex addComp(Complex C1,Complex C2)
求两个复数的差的方法:(参数是两个复数类对象,返回值是复数类对象)public Complex subComp(Complex C1,Complex C2)
求两个复数的乘积的方法:(参数是两个复数类对象,返回值是复数类对象,新复数实部=两复数实部乘积-两复数虚部乘积,新复数虚部=两复数实部与虚部交叉乘积之和,)public Complex multiComp(Complex C1,Complex C2)
比较两个复数是否相等的方法(参数是两个复数类对象,返回值是boolean类型)public boolean equalComp(Complex C1,Complex C2)
在Application中测试该类的方法,实部x和虚部y可由main方法参数提供输入。
三、实验要求:
1. 正确地定义类、方法和属性;
2. 学会方法的参数传递和返回值的用法;
3. 熟练使用类及其成员修饰符
4.使用构造函数创建类的对象;
5. 类变量与实例变量,以及类方法与实例方法的使用
6.程序应包括各个被调用方法的执行结果的显示。
7.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提示,并给出解决办法。(附源代码、运行结果、和实验的心得体会)。
四、实验步骤:
1.(第1题)定义一个学生类(Student)及它的属性和方法;定义主类和main(),在main()方法中创建学生对象,并通过对象调用它的方法setName(),getName(),输出学生的名字name和年龄age。
2. (第2题) 定义类Point及它的属性、方法和构造函数,定义主类和main(),在main()方法中创建两个坐标对象,,并通过对象调用getMiddle方法后得到一个新的点坐标,调用show()显示该对象的坐标值。
3. (第3题)定义一个复数(z=x+iy)类Complex,及它的属性、方法和构造函数;定义主类和main()方法,在main()方法中创建两个复数类Complex对象,并通过复数类对象调用它们的属性和方法,输出方法执行结果。
五、自做实验
1. 构造一个类来描述屏幕上的一个点,该类的构成包括点的x和y两个坐标,以及一些对点进行的操作,包括:取得点的坐标值,对点的坐标进行赋值,编写应用程序生成该类的对象并对其进行操作。
2. 编写实现:有一个三角形类Triangle,成员变量有底边x和另一条边y,和两边的夹角a(0<a<180),a为静态成员,成员方法有两个:求面积s(无参数)和修改角度(参数为角度)。
3. 编写实现: 构造函数为 Triangle(int xx,int yy,int aa) 参数分别为x,y,a赋值 在main方法中构造两个对象,求出其面积,然后使用修改角度的方法,修改两边的夹角,再求出面积值。(提示:求高的方法 h=y*Math.sin(a) )
注意:构造方法用于对成员变量初始化,无参数的构造方法将成员变量初始化为0值。
程序代码:
1,
public class Student {
private static String name;
public static int age;
public static String specially;
public Student(String name,int age)
{
Student.name=name;
Student.age=age;
}
public static void setName(String name)
{
Student.name=name;
}
public static String getName()
{
return name;
}
public static String getSpecially()
{
return specially;
}
public static void print(Student stu)
{
System.out.print("学生的姓名:"+Student.getName()+"\n"+"学生的年龄:"+Student.age);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Student stu=new Student("李明",20);
Student.print(stu);
}
}
2,
public class Point {
int x;
int y;
public Point(int x,int y)
{
this.x=x;
this.y=y;
}
public void show()
{
System.out.println("("+x+","+y+")");
}
public void getMiddle(Point p1,Point p2)
{
x=(p1.x+p2.x)/2;
y=(p1.y+p2.y)/2;
System.out.println("("+x+","+y+")");
}
public static void main(String args[])
{
Point pt1=new Point(2,3);
Point pt2=new Point(6,9);
pt1.show();
pt2.show();
pt1.getMiddle(pt1,pt2);
}
}
3,
import javax.swing.JOptionPane;
public class Complex {
int x;
int y;
public Complex()
{
this.x=0;
this.y=0;
}
public Complex(int x,int y)
{
this.x=x;
this.y=y;
}
public void showComp()
{
System.out.println("显示复数:"+this.x+"+"+this.y+"i"+".");
}
public Complex addComp(Complex c1,Complex c2)
{
Complex cx1 =new Complex();
cx1.x=c1.x+c2.x;
cx1.y=c1.y+c2.y;
return cx1;
}
public Complex subComp(Complex c1,Complex c2)
{
Complex cx2 =new Complex();
cx2.x=c1.x-c2.x;
cx2.y=c1.y-c2.y;
return cx2;
}
public Complex multiComp(Complex c1,Complex c2)
{
Complex cx3=new Complex();
cx3.x=c1.x*c2.x-c1.y*c2.y;
cx3.y=c1.x*c2.y+c2.x*c1.y;
return cx3;
}
public boolean equalComp(Complex c1,Complex c2)
{
if(c1.x==c2.x&&c1.y==c2.y)
{
System.out.println("两个复数相等!");
return true;
}
else
{
System.out.println("两个复数不相等!");
return false;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String Nc1;
String Nc2;
String Nc3;
String Nc4;
int c1,c2,c3,c4;
Nc1=JOptionPane.showInputDialog("请输入第一个复数的实部:");
c1=Integer.parseInt(Nc1);
Nc2=JOptionPane.showInputDialog("请输入第一个复数的虚部:");
c2=Integer.parseInt(Nc2);
Nc3=JOptionPane.showInputDialog("请输入第一个复数的实部:");
c3=Integer.parseInt(Nc3);
Nc4=JOptionPane.showInputDialog("请输入第一个复数的虚部:");
c4=Integer.parseInt(Nc4);
Complex cm1=new Complex(c1,c2);
Complex cm2=new Complex(c3,c4);
cm1.showComp();
cm2.showComp();
cm1.addComp(cm1, cm2).showComp();
cm1.subComp(cm1, cm2).showComp();
cm1.multiComp(cm1, cm2).showComp();
cm1.equalComp(cm1,cm2);
}
}
五。
public class TriangleTest {
public static void main(String[] args) {
Triangle t1=new Triangle(3,4,90);
t1.print();
Triangle t2=new Triangle(5,6,90);
t2.print();
t2.reapetA(30);
t2.print();
}
}
class Point
{
int x;
int y;
public Point(int x,int y)
{
this.x=x;
this.y=y;
}
public int getX()
{
return x;
}
public int getY()
{
return y;
}
}
class Triangle extends Point
{
static int aa;
double PI=3.1415926;
public Triangle(int xx,int yy,int aa)
{
super(xx,yy);
Triangle.aa=aa;
}
public float area()
{
return (float) ((x*y*Math.sin(PI*aa/180))/2);
}
public int reapetA(int a)
{
Triangle.aa=a;
return Triangle.aa;
}
public void print()
{
System.out.println("三角形的面积:"+area());
}
}