1. 通过Idea创建一个名为Homework09的模块, 在com.hualan包里创建一个ClassTest类, 在类的main方法中测试下面编写的类(创建对象, 访问属性, 访问方法):
(1) 定义一个猫类(Cat), 包含颜色(color), 姓名(name)属性, 猫具有吃饭(eat), 睡觉(sleep),抓老鼠(catchMouse)的功能.方法中只需要做输出即可.例如: eat功能 输出"xxx正在吃鱼", xxx是猫的name
(2) 定义一个火车票类(Ticket), 包含出发站(startStation), 到达站(stopStation), 出发时间(startTime), 身份证号(id), 票价(price), 座位号(seat), 车次(trainNumber)属性, 火车票类包含一个打印火车票信息的方法printTicketInfo.
(3) 定义一个点类(Point), 包含属性 x 和 y. 点类包含如下方法: 打印点的坐标信息的方法 printPointInfo; 计算当前点和另外一个点的距离的方法distanceTodistanceTo方法包含一个Point类型的参数, 返回一个double类型的距离.即 public double distanceTo(Point p)distanceTo方法看似只有一个Point,没有办法计算距离,实际上this也是一个Point。计算this和p之间的距离开方使用 Math.sqrt(xxx), 其中xxx是要开方的数, 本方法返回一个double类型的结果
(4) 定义一个圆类Circle, 包含圆心center(Point类型), 半径r, 包含如下方法: 计算圆的周长的方法perimeter, 计算圆的面积的方法area, 一个点Point是否在圆内部public boolean containsPoint(Point p); 当前圆(this)是否和另外一个圆相交, public boolean isIntersect(Circle c); 相交返回true, 不相交返回false圆心center使用上一题定义好的Point类作为类型判断圆是否相交的思路是: 圆心之间的距离 是否小于 半径之和。上一题中的Point类已经有计算当前点和另外一个点的距离的方法distanceTo,两个圆心就是我们的两个点二。
拓展作业(选做)
定义一个矩形类(Rectangle), 包含一个起始点(矩形左上角的点)startPoint, 宽(width), 高(height)属性. 矩形类具有如下方法: 计算面积的方法area, 计算周长的方法perimeter, 获取矩形中心点的方法center(此方法的返回值类型是Point), 打印矩形信息的方法printRectangleInfo, 矩形是否是正方形的方法isSquare, 如果是正方形返回true, 如果不是返回false.startPoint的类型是Point坐标系在左上角
package com.hualan;
public class Cat {
private String color;
private String name;
public Cat(String color, String name) {
this.color = color;
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void eat(){
System.out.println(name+"正在吃鱼");
}
public void sleep(){
System.out.println(name+"正在睡觉");
}
public void catchMouse(){
System.out.println(name+"正在抓老鼠");
}
}
package com.hualan;
public class Ticket {
private String startStation;
private String stopStation;
private String startTime;
private String id;
private double price;
private int seat;
private String trainNumber;
public Ticket(String startStation, String stopStation, String startTime, String id, double price, int seat, String trainNumber) {
this.startStation = startStation;
this.stopStation = stopStation;
this.startTime = startTime;
this.id = id;
this.price = price;
this.seat = seat;
this.trainNumber = trainNumber;
}
public String getStartStation() {
return startStation;
}
public void setStartStation(String startStation) {
this.startStation = startStation;
}
public String getStopStation() {
return stopStation;
}
public void setStopStation(String stopStation) {
this.stopStation = stopStation;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getSeat() {
return seat;
}
public void setSeat(int seat) {
this.seat = seat;
}
public String getTrainNumber() {
return trainNumber;
}
public void setTrainNumber(String trainNumber) {
this.trainNumber = trainNumber;
}
public void printTicketInfo(){
System.out.println("火车票信息如下:");
System.out.println("出发站:"+startStation+"\n" +"到达站:"+stopStation+"\n " +"出发时间:"+startTime+"\n " +"身份证号:"+id+"\n " +"票价:"+price+"\n "+"座位号:"+seat+"\n " +"车次:"+trainNumber);
}
}
package com.hualan;
public class Point {
private double x;
private double y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
public double getX() {
return x;
}
public void setX(double x) {
this.x = x;
}
public double getY() {
return y;
}
public void setY(double y) {
this.y = y;
}
public double distanceTo(Point p){
return Math.sqrt((this.x-p.getX())*(this.x-p.getX())+(this.y-p.getY())*(this.y-p.getY()));
}
}
package com.hualan;
public class Circle {
private Point center;
private double r;
public Circle(Point center, double r) {
this.center = center;
this.r = r;
}
public Point getCenter() {
return center;
}
public void setCenter(Point center) {
this.center = center;
}
public double getR() {
return r;
}
public void setR(double r) {
this.r = r;
}
public double permeter(){
return 2*3.14*this.r;
}
public double area(){
return 3.14*this.r*this.r;
}
public boolean containsPoint(Point p){
double distance= center.distanceTo(p);
return distance<=r;
}
public boolean isIntersect(Circle circle2){
double distance= center.distanceTo(circle2.center);
double s=this.r+ circle2.r;
return distance<s;
}
}
package com.Test;
import com.hualan.*;
public class Test {
public static void main(String[] args) {
//定义一个猫类(Cat), 包含颜色(color), 姓名(name)属性, 猫具有吃饭(eat), 睡觉(sleep),抓老鼠(catchMouse)的功能.
Cat cat=new Cat("黑色","蒜蒜");
System.out.println(cat.getName()+"是猫的名字"+"\n"+"猫的颜色"+cat.getColor());
cat.eat() ;
cat.sleep();
cat.catchMouse();
System.out.println();
//定义一个火车票类(Ticket), 包含出发站(startStation), 到达站(stopStation), 出发时间(startTime), 身份证号(id), 票价(price), 座位号(seat), 车次(trainNumber)属性, 火车票类包含一个打印火车票信息的方法printTicketInfo
Ticket ticket=new Ticket("南京","上海","8:00","41132220020721",135.0,18,"z165");
ticket.printTicketInfo();
System.out.println();
//) 定义一个点类(Point), 包含属性 x 和 y. 点类包含如下方法: 打印点的坐标信息的方法 printPointInfo; 计算当前点和另外一个点的距离的方法distanceTo
Point p1=new Point(5.0,10.0);
Point p2=new Point(10.0,20.0);
/*double d=Math.sqrt((p2.getX()- p1.getX())*(p2.getX()- p1.getX())+ (p2.getY()- p1.getY())*(p2.getY()- p1.getY()));
System.out.println("两点之间的距离为"+d);*/
double s= p2.distanceTo(p1);
System.out.println("两点之间的距离为"+s);
System.out.println();
// 定义一个圆类Circle, 包含圆心center(Point类型), 半径r, 包含如下方法: 计算圆的周长的方法perimeter, 计算圆的面积的方法area, 一个点Point是否在圆内部public boolean containsPoint(Point p); 当前圆(this)是否和另外一个圆相交, public boolean isIntersect(Circle c); 相交返回true, 不相交返回false
/*Circle circle=new Circle(0,1);*/
Point center1=new Point(0,0);
Circle circle1=new Circle(center1,1.0);
System.out.println("circle1的周长和面积分别为:"+circle1.permeter()+" "+circle1.area());
Point p=new Point(0,2);
System.out.println("点Point是否在圆内:"+circle1.containsPoint(p));
Point center2=new Point(0,1);
Circle circle2=new Circle(center1,1.0);
System.out.println("两个圆是否相交:"+circle1.isIntersect(circle2));
System.out.println();
//定义一个矩形类(Rectangle), 包含一个起始点(矩形左上角的点)startPoint, 宽(width), 高(height)属性. 矩形类具有如下方法: 计算面积的方法area, 计算周长的方法perimeter, 获取矩形中心点的方法center(此方法的返回值类型是Point), 打印矩形信息的方法printRectangleInfo, 矩形是否是正方形的方法isSquare, 如果是正方形返回true, 如果不是返回false.
Point startpoint=new Point(0,0);
Rectangle rectangle=new Rectangle(startpoint,1,2);
/*System.out.println("矩形的面积为:"+rectangle.area());
System.out.println("矩形的周长为:"+rectangle.perimeter());
System.out.println("矩形中心点为:("+ (startpoint.getX()+ rectangle.getWidth()/2)+","+(startpoint.getY()+ rectangle.getHeight()/2)+")");
System.out.println("矩形是否为正方形:"+rectangle.isSquare());
System.out.println();*/
rectangle.printRectangleInfo();
}
}