zoukankan      html  css  js  c++  java
  • Day 13 JavaObject03作业

    作业:

    1. 为某研究所编写一个通用程序,用来计算每一种交通工具运行 1000公里所需的时间.已知每种交通工具的参数都是3个整数常量A、B、C的表达式。

    现有两种工具:Car 和Plane,
    其中Car 的速度运算公式为:A*B/C,
    Plane 的速度运算公式为 :A+B+C。

    要求在未来如果增加第3种交通工具(如Ship)的时候,可以做到复用已有代码。
    Ship的速度运算公式为 :A+B/C。

    要求自己设计该系统,并测试。

    2.
    教练和运动员案例
    乒乓球运动员和篮球运动员。
    乒乓球教练和篮球教练。
    为了出国交流,跟乒乓球相关的人员都需要学习英语。
    请用所学知识:
    分析,这个案例中有哪些抽象类,哪些接口,哪些具体类

    乒乓球用运动员

    属性 name age salary learnEnglish()
    行为 eat() sleep() train() match()

    篮球运动员

    属性 name age salary
    行为 eat() sleep() train() match()

    乒乓球教练:

    属性 nama age salary bonus

    行为 eat(),sleep(), teach(),learnEnglish()

    篮球教练:

    属性  nama age salary bonus
    行为  eat(),sleep(), teach()

    参考答案:

    1.

      1 public interface TimeCalculator {
      2     /*
      3      * 该方法的作用是 计算某种交通工具,移动指定举例所花的时间
      4      */
      5     double calculateTime(int distance);
      6 }
      7 
      8 /**
      9  *
     10  * 该类抽象所有,类型交通工具的共性,3个参数a, b, c, 同时,所有交通工具都需要计算所需的时间,该计算方法我放在了TimeCalculator接口中
     11  */
     12 public abstract class Vehicle implements TimeCalculator {
     13 
     14     /*
     15      * 不管哪种交通工具都需要这些参数来计算自己的速度
     16      */
     17     private int a;
     18     private int b;
     19     private int c;
     20 
     21     public Vehicle(int a, int b, int c) {
     22         this.a = a;
     23         this.b = b;
     24         this.c = c;
     25     }
     26 
     27     /*
     28      * 获取某交通工具的速度的方法,因为每种交通工具速度的计算方式不一样 留给子类去实现就好了
     29      */
     30     public abstract double getSpeed();
     31 
     32     /*
     33      * 计算某种交通工具移动指定距离,锁需要的时间,该方法 我专门放在一个接口中声明,也可以不使用接口
     34      * 
     35      * 因为只要知道了速度,和距离时间是按照相同的方式计算, 所以这里直接实现了计算时间的方法
     36      */
     37     @Override
     38     public double calculateTime(int distance) {
     39         return distance / getSpeed();
     40     }
     41 
     42     public int getA() {
     43         return a;
     44     }
     45 
     46     public void setA(int a) {
     47         this.a = a;
     48     }
     49 
     50     public int getB() {
     51         return b;
     52     }
     53 
     54     public void setB(int b) {
     55         this.b = b;
     56     }
     57 
     58     public int getC() {
     59         return c;
     60     }
     61 
     62     public void setC(int c) {
     63         this.c = c;
     64     }
     65 }
     66 
     67 public class Car extends Vehicle {
     68 
     69     public Car(int a, int b, int c) {
     70         super(a, b, c);
     71     }
     72 
     73     @Override
     74     public double getSpeed() {
     75         return getA() + getB() + getC();
     76     }
     77 }
     78 
     79 public class Plane extends Vehicle {
     80     public Plane(int a, int b, int c) {
     81         super(a, b, c);
     82     }
     83 
     84     @Override
     85     public double getSpeed() {
     86         return 1.0 * getA() * getB() / getC();
     87     }
     88 }
     89 
     90 public class Ship extends Vehicle {
     91 
     92     public Ship(int a, int b, int c) {
     93         super(a, b, c);
     94     }
     95 
     96     @Override
     97     public double getSpeed() {
     98         return 1.0 * getA() + getB() / getC();
     99     }
    100 }
    101 
    102 public class Test {
    103 
    104     public static void main(String[] args) {
    105 
    106         TimeCalculator calculator = new Car(10, 20, 2);
    107         System.out.println(calculator.calculateTime(1000));
    108 
    109         calculator = new Plane(10, 20, 2);
    110         System.out.println(calculator.calculateTime(1000));
    111 
    112         calculator = new Ship(10, 20, 2);
    113         System.out.println(calculator.calculateTime(1000));
    114     }
    115 }

    2.

      1 /**
      2  *
      3  * Human中定义所有运动员和教练员都具有的属性 name age salary 行为 eat(), sleep()
      4  */
      5 public class Human {
      6 
      7     private String name;
      8     private int age;
      9     private int salary;
     10 
     11     public Human() {
     12     }
     13 
     14     public Human(String name, int age, int salary) {
     15         this.name = name;
     16         this.age = age;
     17         this.salary = salary;
     18     }
     19 
     20     public void eat() {
     21         System.out.println(name + "吃饭");
     22     }
     23 
     24     public void sleep() {
     25         System.out.println(name + "睡觉");
     26     }
     27 
     28     public String getName() {
     29         return name;
     30     }
     31 
     32     public void setName(String name) {
     33         this.name = name;
     34     }
     35 
     36     public int getAge() {
     37         return age;
     38     }
     39 
     40     public void setAge(int age) {
     41         this.age = age;
     42     }
     43 
     44     public int getSalary() {
     45         return salary;
     46     }
     47 
     48     public void setSalary(int salary) {
     49         this.salary = salary;
     50     }
     51 }
     52 
     53 /**
     54  *
     55  * 定义运动员都具有的行为:train(), match() 虽然所有运动员都有这样的行为,但是不同的运动员,训练和比赛的内容都不相同,
     56  * 所有Athlete类定义为抽象类
     57  *
     58  */
     59 public abstract class Athlete extends Human {
     60 
     61     public abstract void train();
     62 
     63     public abstract void match();
     64 }
     65 
     66 /**
     67  *
     68  * 定义教练都具有的行为:teach(),以及属性bonus 虽然所有教练都有这样的行为,但是不同的教练,教的内容都不相同, 所有Coach类定义为抽象类
     69  */
     70 public abstract class Coach extends Human {
     71 
     72     private int bonus;
     73 
     74     public abstract void teach();
     75 
     76     public int getBonus() {
     77         return bonus;
     78     }
     79 
     80     public void setBonus(int bonus) {
     81         this.bonus = bonus;
     82     }
     83 }
     84 
     85 public class TabletennisAthlete extends Athlete implements SpecialSkill {
     86 
     87     @Override
     88     public void train() {
     89         System.out.println(getName() + " train table tennis");
     90     }
     91 
     92     @Override
     93     public void match() {
     94         System.out.println(getName() + "match table tennis");
     95     }
     96 
     97     @Override
     98     public void leaningEnglish() {
     99         System.out.println("athlete " + getName() + " learning english");
    100     }
    101 }
    102 
    103 public class TabletennisCoach extends Coach implements SpecialSkill {
    104 
    105     @Override
    106     public void teach() {
    107         System.out.println(getName() + "teach table tennis");
    108     }
    109 
    110     @Override
    111     public void leaningEnglish() {
    112         System.out.println("coach " + getName() + " learning english");
    113     }
    114 }
    115 
    116 public class FootballAthlete extends Athlete {
    117 
    118     @Override
    119     public void train() {
    120         System.out.println(getName() + " train basketball");
    121     }
    122 
    123     @Override
    124     public void match() {
    125         System.out.println(getName() + "match basketball");
    126     }
    127 }
    128 
    129 public class FootballCoach extends Coach {
    130 
    131     @Override
    132     public void teach() {
    133         System.out.println(getName() + "teach basketball");
    134     }
    135 }
  • 相关阅读:
    Windows2012中安装PHP-5.6.20+Apache httpd2.4.18+Composer+Laravel+MySQL5.7
    CentOS7安装使用MySQL
    使用passenger在Centos7部署Puma+Nginx+Ruby on Rails
    DOS和UNIX文本文件之间相互转换的方法
    CentOS7安装vim7.4
    Python多版本共存之pyenv
    我的Shell + VIM配置
    CentOS7安装Python3.5
    CentOS7系统下搭建Jenkins环境
    Windows系统下搭建Jenkins环境
  • 原文地址:https://www.cnblogs.com/dust2017/p/12791523.html
Copyright © 2011-2022 走看看