java程序设计与j2ee中间件技术/软件开发技术(I)-实验三-接口、开闭原则和异常

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: java程序设计与j2ee中间件技术/软件开发技术(I)-实验三-接口、开闭原则和异常

题目1

1 题目说明

按要求编写一个Java应用程序程序:

(1)定义一个接口CanFly,描述会飞的方法public void fly();

(2)分别定义类飞机和鸟,实现CanFly接口。

(3)定义一个测试类,测试飞机和鸟,在main方法中创建飞机对象和鸟对象

2 实验设计

3 运行界面截图与说明

题目1运行结果:正确地创建了鸟和飞机对象,鸟对象调用fly()方法输出了“我是鸟!”,飞机对象调用fly()方法输出了“我是飞机!”

4 代码

Bird.java

public class Bird implements CanFly{
  public void fly() {
    System.out.println("我是鸟!");
  }
}

CanFly.java

public interface CanFly {
  public void fly();
}

Main.java

public class Main {
  public static void main(String[] args) {
    Bird bird=new Bird();
    Plane plane=new Plane();
    bird.fly();
    plane.fly();
  }
}

Plane.java

public class Plane implements CanFly{
  public void fly() {
    System.out.println("我是飞机!");
  }
  public Plane() {
  }
}

题目2

1 题目说明

面向接口编程

利用面对接口的编程实现动态的创建对象,符合开-闭原则,也就是增加了新的需求,核心类不变

创建接口:水果树

创建类:苹果树、橘子树、园丁

在主类中,根据输入的水果类型,输出不同的结果,体现多态。例如输入“苹果”,创建苹果树对象,输出“种了一棵苹果树”。

2 实验设计

题目2工程结构:FruitTree是一个接口,有getTreeName()方法获取当前水果树的名字。AppleTree类苹果树,有空构造函数,且实现了getTreeName()方法。OrangeTree类指飞机,也同样有构造函数,另外实现了getTreeName()方法。Gardener类是园丁,能调用PlantTree(FruitTree)种树,用到了接口回调和多态的技术。Main类有main函数进行测试,创建园丁,并让园丁种树。

3 运行界面截图与说明

输入“苹果树”,园丁正确地种了一棵苹果树。输入“橘子树”,园丁也能正确地种一棵橘子树。

4 代码

AppleTree.java

public class AppleTree implements FruitTree{
  public AppleTree() {
  }
  public String getTreeName() {
    return "苹果树";
  }
}

FruitTree.java

public interface FruitTree {
  public String getTreeName();
}

Gardener.java

public class Gardener {
  public void PlantTree(FruitTree tree) {
    System.out.println("种了一棵"+tree.getTreeName());
  }
};

Main.java

import java.util.Scanner;
public class Main {
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    Gardener gardener=new Gardener();
    System.out.println("请输入水果树类型");
    Scanner sc=new Scanner(System.in);
    String TreeName=sc.next();
    sc.close();
  //  System.out.println(TreeName);
    FruitTree fruittree;
    if (TreeName.equals(new String("苹果树"))) {
      fruittree=new AppleTree();
      gardener.PlantTree(fruittree);
    }
    if (TreeName.equals(new String("橘子树"))) {
    //else {
      fruittree=new OrangeTree();
      gardener.PlantTree(fruittree);
    }
  }
}

OrangeTree.java

public class OrangeTree implements FruitTree{
  public OrangeTree() {
  }
  public String getTreeName() {
    return "橘子树";
  }
}

题目3

1 题目说明

编写一个异常类,用于捕获类的异常。编写一个类,用于录入成绩数据,如果成绩不是0-100的整数,抛出一个异常。

2 实验设计

题目3工程结构:

ScoreException是异常类,这个异常类被抛出是因为用户输入的数字不是整数或者范围超出了0~100。

ScoreScanner是用于录入成绩的类,其ScanScore()方法会抛出异常ScoreException。

Main类包含main函数,用于测试。

3 运行界面截图与说明

题目3运行结果:根据提示,输入成绩。如果输入0~100范围内的数,则提示输入正确,程序正确地运行结束。

如果输入的不是整数,则抛出异常。该异常被catch住处理后,程序同样运行结束,并打印异常原因。

同样的,如果输入的数超出范围,则也会抛出异常。该异常被catch住处理后,程序同样运行结束,并打印异常原因。可以看出,输入的数超出范围的异常和输入不是整数的异常并不都是由同一行代码抛出。

4 代码

Main.java

public class Main {
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    ScoreScanner scorescanner=new ScoreScanner();
    try {
      System.out.println("请输入成绩:");
      scorescanner.ScanScore();
      System.out.println("输入正确");
    }
    catch(ScoreException e) {
      System.out.println("输入错误!输入的可能不是整数,也可能超出范围!");
      e.printStackTrace();
    }
    finally {
      System.out.println("程序运行结束!");
    }
  }
}

ScoreException.java

@SuppressWarnings("serial")
public class ScoreException extends Exception{
  public ScoreException() {
  }
}

ScoreScanner.java

import java.util.Scanner;
public class ScoreScanner {
  public void ScanScore() throws ScoreException {
    Scanner sc=new Scanner(System.in);
    if (sc.hasNextInt()){
      int num=sc.nextInt();
      sc.close();
      if (num<0||num>100)
        throw new ScoreException();
    }
    else {
      sc.close();
      throw new ScoreException();
    }
  }
}


目录
相关文章
|
4月前
|
资源调度 安全 Java
Java 大数据在智能教育在线实验室设备管理与实验资源优化配置中的应用实践
本文探讨Java大数据技术在智能教育在线实验室设备管理与资源优化中的应用。通过统一接入异构设备、构建四层实时处理管道及安全防护双体系,显著提升设备利用率与实验效率。某“双一流”高校实践显示,设备利用率从41%升至89%,等待时间缩短78%。该方案降低管理成本,为教育数字化转型提供技术支持。
103 1
|
4月前
|
消息中间件 机器学习/深度学习 Java
java 最新技术驱动的智能教育在线实验室设备管理与实验资源优化实操指南
这是一份基于最新技术的智能教育在线实验室设备管理与实验资源优化的实操指南,涵盖系统搭建、核心功能实现及优化策略。采用Flink实时处理、Kafka消息队列、Elasticsearch搜索分析和Redis缓存等技术栈,结合强化学习动态优化资源调度。指南详细描述了开发环境准备、基础组件部署、数据采集与处理、模型训练、API服务集成及性能调优步骤,支持高并发设备接入与低延迟处理,满足教育机构数字化转型需求。代码已提供下载链接,助力快速构建智能化实验室管理系统。
138 44
|
12月前
|
Java 测试技术 开发者
💡Java 零基础:彻底掌握 for 循环,打造高效程序设计
【10月更文挑战第15天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
338 63
|
12月前
|
算法 搜索推荐 Java
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
这篇文章介绍了如何使用Java后端技术,结合Graphics2D和Echarts等工具,生成包含个性化信息和图表的海报,并提供了详细的代码实现和GitHub项目链接。
693 0
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
|
消息中间件 Java Kafka
【Azure 事件中心】在微软云中国区 (Mooncake) 上实验以Apache Kafka协议方式发送/接受Event Hubs消息 (Java版)
【Azure 事件中心】在微软云中国区 (Mooncake) 上实验以Apache Kafka协议方式发送/接受Event Hubs消息 (Java版)
295 1
|
数据采集 人工智能 监控
【Azure 应用程序见解】Application Insights Java Agent 3.1.0的使用实验,通过修改单个URL的采样率来减少请求及依赖项的数据采集
【Azure 应用程序见解】Application Insights Java Agent 3.1.0的使用实验,通过修改单个URL的采样率来减少请求及依赖项的数据采集
146 0
|
存储 小程序 前端开发
java毕设项目|宿舍管理系统小程序设计与实现
java毕设项目|宿舍管理系统小程序设计与实现
123 1
|
监控 Java API
Java 程序设计 第八章 线程
Java 程序设计 第八章 线程
|
消息中间件 Java 中间件
Java中的消息中间件与异步通信实现
Java中的消息中间件与异步通信实现
|
算法 Java 编译器
第十五届蓝桥杯Java软件开发大学B组自我经验小结
第十五届蓝桥杯Java软件开发大学B组自我经验小结
203 0

热门文章

最新文章