Java模拟小汽车模块化生产和为什么引入接口

编程入门 行业动态 更新时间:2024-10-07 23:22:02

Java模拟<a href=https://www.elefans.com/category/jswz/34/1735589.html style=小汽车模块化生产和为什么引入接口"/>

Java模拟小汽车模块化生产和为什么引入接口

  1. 小汽车工厂按照模块化方式生产汽车,低配汽车仅仅具有基本功能,舒适度低,中配汽车在低配基础上提供了满足部分个性化需求的功能,例如蓝牙等,而高配在中配的基础上增加了GPS定位和车联网等功能。
    定义小汽车类Car,要求如下:(1)成员变量包括型号,速度;(2)定义一个空构造方法,一个能够初始化所有成员变量的构造方法;(3)必要的setter和getter方法;(4)功能方法包括:重写toString()方法返回有意义的汽车信息。
    定义如下接口:(1)蓝牙接口Bluetooth具有启动关闭蓝牙功能;(2) GPS接口提供GPS定位功能;(3)车联网IOV接口提供车联网功能。
    定义中配汽车MiddleCar实现蓝牙接口,高配汽车LuxuryCar实现蓝牙、GPS和IOV接口。
    定义测试类,完成如下:(1)创建低配汽车对象,并输出该汽车的基本信息;(2)创建中配汽车对象,输出基本信息,并调用蓝牙功能;(3)创建高配汽车对象,利用GPS进行定位,建立与其它汽车的的IOV连接。
  2. 实验步骤
    3.1 模拟小汽车模块化生产
    【解题思路】:
    采用适配器模式,该模式涉及三个角色:
    (1) 源角色:需要被增减功能的类或者接口,本实验中的Car类;
    (2) 目标角色:需要得到的接口,本实验中的Bluetooth、GPS和IOV接口;
    (3) 适配器角色:在源角色的基础上实现了目标角色得到新的类,本实验中的MiddleCar和LuxuryCar类。
package 测试;
import java.awt.Point;
import java.util.Random;class Car {//1. 定义成员变量private String brand;private double speed;//2. 定义构造方法public Car() {}public Car(String brand, double speed) {this.brand = brand;this.speed = speed;}//3. 必要的setter和getter方法public double getSpeed() {return this.speed;}public String getBrand() {return this.brand;}//4. 功能方法public String toString() {StringBuilder sb=new StringBuilder();sb.append("品牌:").append(this.brand);sb.append(",速度:").append(this.speed);return sb.toString();}
}//定义蓝牙接口interface Bluetooth {public void  startBluetooth();//启动蓝牙public void closeBluetooth();//关闭蓝牙
}
//定义GPS接口interface GPS {public Point getLocation();//获得位置
}
//定义IOV接口interface IOV {public void getConnetion(Car car);//与其它汽车建立IOV关系
}//定义中配汽车class MiddleCar extends Car implements Bluetooth{//1. 定义成员变量private boolean bluetoothState=false;//蓝牙状态//2. 定义构造方法public MiddleCar() {	}public MiddleCar(String brand, double speed) {super(brand, speed);}//3. 定义setter和getter方法public boolean getBluetoothState() {return this.bluetoothState;}//4. 定义功能方法@Overridepublic void startBluetooth() {//启动蓝牙this.bluetoothState=true;}@Overridepublic void  closeBluetooth() {//关闭蓝牙this.bluetoothState=false;}public String toString() {StringBuilder sb=new StringBuilder();sb.append(super.toString());sb.append(",蓝牙状态:").append(this.bluetoothState);return sb.toString();}
}
//定义高配汽车class LuxuryCar extends MiddleCar implements GPS,IOV{//1. 定义成员变量	private Point location;//位置//2. 定义构造方法public LuxuryCar() {super();}public LuxuryCar(String brand, double speed) {super(brand, speed);}//3. 定义setter和getter方法//4. 定义功能方法@Override//instanceof 是 Java 的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。public void getConnetion(Car car) {if(car instanceof IOV) {//如果该汽车是IOV的子类实例,表明具有IOV功能System.out.println(this.getBrand()+"建立与"+car.getBrand()+"的连接!");	}else {System.out.println(car.getBrand()+"没有物联网接口!");System.out.println(this.getBrand()+"不能建立与"+car.getBrand()+"的连接!");	}}@Overridepublic  Point getLocation() {Point p=new Point();double x=new Random().nextInt(50);double y=new Random().nextInt(50);//setLocation(double x, double y)将此点的位置设为指定的双精度坐标。p.setLocation(this.getSpeed()+x, this.getSpeed()+y);return p;}	public String toString() {StringBuilder sb=new StringBuilder();sb.append(super.toString());//	getX()   以 double 精度返回此 Point2D 的 X 坐标。y也是这样sb.append(",位置:").append(this.getLocation().getX());sb.append(","+this.getLocation().getY());return sb.toString();}
}
//定义测试类
public class test {public static void main(String[] args) {System.out.println("------- 测试低配汽车  -------------");Car gen=new Car("红旗L5",60);//不用写to.string(),效果是相同的.当你传入的对象 “obj” 不为空 null,返回 该对象的 toString()的值System.out.println(gen);System.out.println("------- 测试中配汽车  -------------");MiddleCar mc=new MiddleCar("红旗L5",80);mc.closeBluetooth();System.out.println(mc);mc.startBluetooth();System.out.println(mc);System.out.println("------- 测试高配汽车  -------------");LuxuryCar lc1=new LuxuryCar("红旗H5",120);lc1.startBluetooth();System.out.println(lc1);lc1.getConnetion(mc);//红旗H5与红旗L5不能建立连接LuxuryCar lc2=new LuxuryCar("宝马X5",100);lc1.getConnetion(lc2);//红旗H5与宝马X5能建立连接}
}

关于Java为什么使用到接口:

一个类只能继承一个父类,但是可以继承N个接口。
java之所以引入接口,就是为了弥补不能多继承的缺点,指明相关或者不相关类的多个对象的共同行为,跟抽象类很相似,可以说接口是更加抽象的抽象类。

  1. 接口不能被实例化。
  2. 接口中所有方法不能有主体。
  3. 一个类可以实现多个接口。
  4. 接口可以有变量,但一定是public static final 修饰,
  5. 接口中的方法只能是public修饰。
  6. 一个接口不能继承其他类,但是可以继承别的接口。

更多推荐

Java模拟小汽车模块化生产和为什么引入接口

本文发布于:2024-02-28 10:11:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1769207.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:小汽车   接口   Java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!