我是靠谱客的博主 轻松麦片,最近开发中收集的这篇文章主要介绍Java编程题之家电思路总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

    • 一.编程要求
    • 二.程序分析
      • 1.接口类定义
      • 2. 电视类的定义:
      • 3.其余家电类定义:
        • 风扇类:
        • 空调类:
        • 用户类:
        • Demo类测试:
    • 三.总结
      • 1.接口实现
      • 2.方法的覆盖
      • 3.功能实现

一.编程要求

韩国某家电公司为本公司所有电器设计了一个通用的遥控器,遥控器能发送“on,off,up,down…”等信号给电器,所有电器均能接受该遥控器上的信号,并完成相应的操作。
  现有一用户朝着电视按“开”,电视就开了,按“上”,电视音量就调大了…之后,用户朝着风扇按“开”,风扇就开了,按“上”,风扇转速就调大了…
编写:
  家电接口(Appliance,方法:recive)、
  电视类(Tv,属性:音量 volume,重写 recive)、
  风扇类(Fan,属性:速度 speed,重写 recive)、
  空调类(AirCond,属性:温度 tempe,重写 recive)、
  用户类(User,属性:家电,方法:朝向 toward(Appliance app)、按 press(String key))、
  Demo类,实现上述用户操作过程。

二.程序分析

1.接口类定义

    • 家电接口作为一个接口,内部只能为常量和一些抽象的(即未被实现的)方法,根据题目要求,该接口中需要定义一个抽象方法
    public abstract void recive(String key);
    

2. 电视类的定义:

  • 类名

    public class Tv implements Appliance
    
  • 属性:

    private int volume;//音量
    private boolean status;//状态
    
    public int getVolume() {
    	return volume;
    }
    
    public boolean isStatus() {
    	return status;
    }
    
  • 方法:

    @Override
    public void recive(String key) {
    	// TODO 自动生成的方法存根
    	if(key.equals("on")) {
    		if(status!=false)
    			System.out.println("电视当前为开启状态,请勿重复操作!");
    		else {
    			System.out.println("电视已开启!");
    			status = true;
    		}
    	}		
    	else if(key.equals("off")){
    		if(status!=true)
    			System.out.println("电视当前为关闭状态,请勿重复操作!");
    		else {
    			System.out.println("电视已关闭!");
    			status = false;
    		}
    	}
    	else if(key.equals("up")) {
    		if(status!=true)//对电视状态进行判断,若为关闭,则无法进行操作
    			System.out.println("电视为关闭状态,无法操作!");
    		else {
    			if(this.volume==100)
    				System.out.println("电视音量已最大!");
    			else {
    				this.volume+=10;
    				System.out.println("当前音量为: "+this.volume);
    			}
    		}
    	}
    	else if(key.equals("down")) {
    		if(status!=true)
    			System.out.println("电视为关闭状态,无法操作!");
    		else {
    			if(this.volume==0)
    				System.out.println("电视音量已最小!");
    			else {
    				this.volume-=10;
    				System.out.println("当前音量为: "+this.volume);
    			}
    		}
    	}
    }
    

3.其余家电类定义:

  • 电视类相似,直接给出代码:
风扇类:
  • public class Fan implements Appliance {
    
    	private int speed;	
    	private boolean status;
    
    
    	public int getSpeed() {
    		return speed;
    	}
    
    	public boolean isStatus() {
    		return status;
    	}
    
    	@Override
    	public void recive(String key) {
    		// TODO 自动生成的方法存根
    		if(key.equals("on")) {
    			if(status!=false)
    				System.out.println("风扇当前为开启状态,请勿重复操作!");
    			else {
    				System.out.println("风扇已开启!");
    				status = true;
    			}
    		}		
    		else if(key.equals("off")){
    			if(status!=true)
    				System.out.println("风扇当前为关闭状态,请勿重复操作!");
    			else {
    				System.out.println("风扇已关闭!");
    				status = false;
    			}
    		}
    		else if(key.equals("up")) {
    			if(status!=true)
    				System.out.println("风扇为关闭状态,无法操作!");
    			else {
    				if(this.speed==100)
    					System.out.println("风扇转速已最大!");
    				else {
    					this.speed+=10;
    					System.out.println("当前转速为: "+this.speed);
    				}
    			}
    		}
    		else if(key.equals("down")) {
    			if(status!=true)
    				System.out.println("风扇为关闭状态,无法操作!");
    			else {
    				if(this.speed==0)
    					System.out.println("风扇转速已最小!");
    				else {
    					this.speed-=10;
    					System.out.println("当前转速为: "+this.speed);
    				}
    			}
    		}
    	}
    }
    
空调类:
  • public class AirCond implements Appliance {
    
    	private int tempe = 16;
    	private boolean status;
    	
    	public int getTempe() {
    		return tempe;
    	}
    
    	public boolean isStatus() {
    		return status;
    	}
    
    	@Override
    	public void recive(String key) {
    		// TODO 自动生成的方法存根
    		if(key.equals("on")) {
    			if(status!=false)
    				System.out.println("空调当前为开启状态,请勿重复操作!");
    			else {
    				System.out.println("空调已开启!");
    				status = true;
    			}
    		}		
    		else if(key.equals("off")){
    			if(status!=true)
    				System.out.println("空调当前为关闭状态,请勿重复操作!");
    			else {
    				System.out.println("空调已关闭!");
    				status = false;
    			}
    		}
    		else if(key.equals("up")) {
    			if(status!=true)
    				System.out.println("空调为关闭状态,无法操作!");
    			else {
    				if(this.tempe==30)
    					System.out.println("空调温度已最大!");
    				else {
    					this.tempe+=1;
    					System.out.println("当前温度为: "+this.tempe);
    				}
    			}
    		}
    		else if(key.equals("down")) {
    			if(status!=true)
    				System.out.println("空调为关闭状态,无法操作!");
    			else {
    				if(this.tempe==16)
    					System.out.println("空调温度已最小!");
    				else {
    					this.tempe-=1;
    					System.out.println("当前温度为: "+this.tempe);
    				}
    			}
    		}
    	}
    
    }
    
用户类:
  • public class User{
    	
    	private Appliance app;
    	
    	public Appliance getApp() {
    		return app;
    	}
    
    	public void toward(Appliance app) {
    		this.app = app;
    	}
    
    	public void press(String key) {
    		this.app.recive(key);
    	}
    }
    
Demo类测试:
  • import java.util.Scanner;
    
    public class Demo {
    	
    	static Tv tv = new Tv();
    	static Fan fan = new Fan();
    	static AirCond airCond = new AirCond();
    	
    	public static void eleSelecMenu() {
    		System.out.println("======================"+"n"+
    						   "*******家电选择菜单*******"+"n"+
    				           "======================"+"n"+
    						   "1.电视t2.风扇t3.空调"+"n"+
    				           "请输入你的选择:");
    	}
    	
    	public static void funSelecMenu() {
    		System.out.println( "======================"+"n"+
    				   			"*******按键选择菜单*******"+"n"+
    				   			"======================"+"n"+
    				   			"1.ont2.offn"+
    				   			"3.upt4.down"+"n"+
    				   			"5.返回上一级菜单"+"n"+
    		           			"请输入你的选择:");
    	}
    	
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		User xy = new User();
    		String[] function = {"","on","off","up","down"};
    		while(true) {
    			int app,fun;
    			eleSelecMenu();
    			app = sc.nextInt();
    			switch(app) {
    			case 1:
    				xy.toward(tv);
    				while(true) {
    					funSelecMenu();
    					fun = sc.nextInt();
    					if(fun!=5)
    						xy.press(function[fun]);
    					else
    						break;
    				}
    				System.out.println("当前电视状态:"+(tv.isStatus()!=true?"关闭 ":"开启 ")+"音量为:"+tv.getVolume());
    				break;
    			case 2:
    				xy.toward(fan);
    				while(true) {
    					funSelecMenu();
    					fun = sc.nextInt();
    					if(fun!=5)
    						xy.press(function[fun]);
    					else
    						break;
    				}
    				System.out.println("当前风扇状态:"+(fan.isStatus()!=true?"关闭 ":"开启 ")+"转速为:"+fan.getSpeed());
    				break;
    			case 3:
    				xy.toward(airCond);
    				while(true) {
    					funSelecMenu();
    					fun = sc.nextInt();
    					if(fun!=5)
    						xy.press(function[fun]);
    					else
    						break;
    				}
    				System.out.println("当前空调状态:"+(airCond.isStatus()!=true?"关闭 ":"开启 ")+"温度音量为:"+airCond.getTempe());
    				break;
    			}
    		}
    	}
    }
    

三.总结

1.接口实现

  • 接口需要子类去实现,类似于继承关系
  • 接口可以类似于父类一样作为引用变量,来指向自己方法所实现的子类对象
  • 运用接口可以实现比多继承更强大的功能(统一规范)

2.方法的覆盖

  • 用于子类对父类方法的覆盖,实现方式为:方法与父类相同区别于重载
  • 子类对接口的实现,类似于覆盖(体现了多态性)

3.功能实现

  • 电器的开关,利用一个状态变量status来确定,并给出相应的条件判断
  • Demo 类中对对象的协调,体现了结构化设计
  • 界面的友好性,是程序的一大特点

最后

以上就是轻松麦片为你收集整理的Java编程题之家电思路总结的全部内容,希望文章能够帮你解决Java编程题之家电思路总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部