实验目的:
1.掌握 Java 语言中类的定义、对象的创建、对象引用方法。
2.初步了解面向对象设计方法。
第一题:
设计一个自动铅笔类 AutoPencil,有 1 个属性 boolean penPoint(笔尖是否伸出),有
4 个函数:
(1)构造函数 AotoPencil(),将 penPoint 置为 false
(2)按压操作函数 void knock(),将 penPoint 置反
(3)获取笔尖状态函数 boollean getPenPoint()
(4)main 函数
创建对象并对实例对象进行按压操作,显示笔尖的状态。
源程序:
java
public class test {
private boolean penPoint;
public test() {
penPoint=false;
}
public void knock() {
penPoint=!penPoint;
}
public Boolean getPenPoint() {
return penPoint;
}
public static void main(String[] args) {
test atPen=new test();
System.out.println("笔尖状态:"+atPen.getPenPoint());
atPen.knock();
System.out.println("笔尖状态:"+atPen.getPenPoint());
}
}
第二题:
设计一个汽车类 Car,有 2 个属性车主 owner 和油量 oil,有 7 个函数:
(1)构造函数 Car(String owner,double oil)
(2)构造函数 Car(String owner),油量置为 0
(3)加油操作函数 void addOil(double oil)
(4)行驶操作函数 void drive(int distance)
假设每 100 公里的耗油量为定值(自己设置),根据行驶的公里数更新油量。
(5)获得车主信息函数 String getOwner()
(6)获得油量函数 double getOil()
(7)main 函数
创建对象并对实例对象进行加油、行驶操作,显示车主、油量。
源程序:
java
import java.util.Scanner;
public class car {
private String owner;
private double oil;
public car(String owner,double oil){
this.owner=owner;
this.oil=oil;
}
public car(String owner){
this.owner=owner;
oil=0;
}
public void addOil(double oil) {
this.oil=this.oil+oil;
}
public void drive(int distance) {
oil=oil-10*distance;
}
public String getOwner() {
return owner;
}
public double getOil() {
return oil;
}
public static void main(String[] args) {
car ok=new car("李木",10);
car in=new car("陈锦云");
System.out.println(ok.getOwner());
System.out.println(ok.getOil());
System.out.println(in.getOwner());
System.out.println(in.getOil());
in.addOil(80);
System.out.println(in.getOwner()+"加油后有:"+in.getOil());
in.drive(3);
System.out.println(in.getOwner()+"行驶后有:"+in.getOil());
}
}
第三题:
编写 Java 程序模拟简单的计算器。 定义名为 Number 的类,其中有两个私有的整型
数据成员 x 和 y。有 5 个函数:
(1)构造函数 Number(int x,int y)
(2)加法运算函数 int addition( )
(3)减法运算函数 int subtration( )
(4)乘法运算函数 int multiplication( )
(5)除法运算函数 int division( )
另外编写一个测试类,对 Number 类进行测试。
源程序:
java
class Number{
private int x,y;
Number(int x,int y){
this.x=x;
this.y=y;
}
public int addition(int x,int y) {
return x+y;
}
public int subtration(int x,int y) {
return x-y;
}
public int multiplication(int x,int y) {
return x*y;
}
public int division(int x,int y) {
return x/y;
}
}
public class test {
public static void main(String[] args) {
Number A=new Number(6,3);
System.out.println("相加结果为:"+A.addition(6,3));
System.out.println("相减结果为:"+A.subtration(6,3));
System.out.println("相乘结果为:"+A.multiplication(6,3));
System.out.println("相除结果为:"+A.division(6,3));
}
}
第四题:
定义长方形类 Rectangle,含:
(1)属性
Int width;
Int height;
(2)方法
Rectangle():宽、高默认值为 1;
Rectangle(int val):宽、高均为参数值;
Rectangle(int width,int height):
Int getSquare():计算面积;
int getPerimeter():计算周长;
另外编写测试类进行测试。
源程序:
java
class Rectangle{
int width;
int height;
Rectangle(){
width=1;
height=1;
}
Rectangle(int val){
width=val;
height=val;
}
Double getSquare() {
return (double) (width*height);
}
Double getPerimeter() {
return (double)(2*width+2*height);
}
}
public class test {
public static void main(String[] args) {
Rectangle A=new Rectangle(16);
System.out.println("面积为:"+A.getSquare());
System.out.println("周长为:"+A.getPerimeter());
}
}
第五题:
定义一个时间类 MyTime,有三个属性 hour,minute,second。为 MyTime 类定义构
造方法,以便创建对象时初始化成员变量。除了构造函数外,还要创建以下方法:
(1)nextSecond( ):时间经过 1 秒
(2)nextMinute( ):时间经过 1 分
(3)nextHour( ):时间经过 1 小时
(4)prevSecond( ):前 1 秒
(5)prevMinute( ):前 1 分
(6)prevHour( ):前一小时
(7)display( ):以 HH:MM:SS 格式显示时间
另外编写测试类,进行测试
源程序:
java
class mytime{
private int hour,minute,second;
mytime(int x,int y,int z){
hour=x;
minute=y;
second=z;
}
public void nextSecond(){
if(second!=0) {
second=second+1;
}else {
minute=0;
if(hour!=23) {
hour=hour+1;
}else {
hour=0;
}
}
}
public void nextMinute(){
if(minute!=0) {
minute=minute+1;
}else {
minute=0;
if(hour!=23) {
hour=hour+1;
}else {
hour=0;
}
}
}
public void nextHour() {
if(hour!=23) {
hour+=1;
}
else {
hour=0;
}
}
public void preSecond() {
if(second!=0) {
second-=1;
}
else
{
second=59;
if(minute!=0) {
minute-=1;
}
else
{
minute=59;
}if(hour!=0) {
hour-=1;
}
else {
hour=23;
}
}
}
public void prevMinute() {
if(minute!=0) {
minute-=1;
}
else
{
minute=59;
if(hour!=0) {
hour-=1;
}
else {
hour=23;
}
}
}
public void prevHour() {
if(hour!=0) {
hour-=1;
}
else {
hour=23;
}
}
public void display(){
System.out.println(hour+":"+minute+":"+second);
}
}
public class test {
public static void main(String[] args) {
mytime a=new mytime(16,8,26);
a.prevMinute();
a.display();
a.nextSecond();
a.display();
}
}
第六题:
编写程序使用复数类 Complex 验证两个复数 2+2i 和 3+3i 相加产生一个新的复数
5+5i 。复数类 Complex 满足如下要求:
(1)属性
Int realPart :复数的实部;
int imaginPart:复数的虚部;
(2)方法
Complex( ) : 构造方法,将复数的实部和虚部都置 0;
Complex( int r , int i ) :
Complex complexAdd (Complex a) : 将当前复数对象与形参复数对象相加,所得的结
果仍是一个复数值,返回给此方法的调用者。
String toString( ) : 把当前复数对象的实部、虚部组合成 a+bi 的字符串形式,其中
a 和 b 分别为实部和虚部的数据。
另外编写一个测试类 Test,对 Complex 类进行测试。
源程序:
java
class Complex{
int realPart;
int imaginPart;
Complex(){
realPart=0;
imaginPart=0;
}
Complex(int r,int i){
realPart=r;
imaginPart=i;
}
Complex complexAdd(Complex a) {
realPart=realPart+a.realPart;
imaginPart=imaginPart+a.imaginPart;
return a;
}
public String toString() {
return realPart+"+"+imaginPart+"i";
}
}
public class test {
public static void main(String[] args) {
Complex A=new Complex(3,2);
Complex B=new Complex(8,6);
A.complexAdd(B);
System.out.println("结果为:"+A.toString());
}
}