设计一个Stock类和DividendStock类 - 编写了一个表示拥有股票情况的Stock类,这里给出了一个简化版,去掉了对参数的合法性的检查等细节:

简介: 设计一个Stock类和DividendStock类 - 编写了一个表示拥有股票情况的Stock类,这里给出了一个简化版,去掉了对参数的合法性的检查等细节:

设计一个Stock类和DividendStock类

  • 编写了一个表示拥有股票情况的Stock类,这里给出了一个简化版,去掉了对参数的合法性的检查等细节:
  • 现在,需要创建一个可以发放分红的股票。红利的多少和持有股票的数量成正比。不是所有的股票都会分红。所以不能直接在Stock类上直接增加这个功能。而是应该在Stock类的基础上,继承一个DividendStock类。并在这个子类中增加分红的属性和行为。
  • (1).一个用于记录分红的字段dividents
  • (2).重写父类的getProfit方法(在父类的getProfit方法的基础上还要加上分红的)
    父类的getProfit+股票的总的分红(也就是字段dividents的值)
  • (3). 增加计算分红的方法,方法中的参数表示每股的红利,可以理解为成员变量dividents赋值: 股票的总的分红=每股的红利*总股数
    public void payDividend(double amountPerShare)
  • 编写一个测试程序,创建一个名为”Oracle”的分红股票,先后以单价32元购买200股,以单价40元购买350股。每股分红2.8元。这支股票的当前价格是每股50元。

以下代码仅供参考

以下代码仅供参考

以下代码仅供参考

/**
 *作者:魏宝航
 *2020年11月22日,下午15:40
 */
public class test {
    public static void main(String[] args) {
            DividendStock oracle = new DividendStock("Oracle");
            oracle.purchase(200,32);
            oracle.purchase(350,40);
            oracle.payDividend(2.8);
            System.out.println(oracle.toString());
            System.out.println(oracle.getProfit(50));
    }
}
class Stock {
    private String symbol;
    private int totalShares;
    private double totalCost;
        public Stock(){
        }
    // Initializes a new Stock with no shares purchased.
    public Stock(String theSymbol) {
        symbol = theSymbol;
        totalShares = 0;
        totalCost = 0.0;
    }
    // Returns the total shares purchased of this stock.
    public int getTotalShares() {
        return totalShares;
    }
    // Returns the total profit or loss earned on this stock.
    public double getProfit(double currentPrice) {
        double marketValue = totalShares * currentPrice;
        return marketValue - totalCost;
    }
    // Records purchase of the given shares at the given price.
    public void purchase(int shares, double pricePerShare) {
        totalShares += shares;
        totalCost += shares * pricePerShare;
    }
    @Override
    public String toString() {
        return "Stock [symbol=" + symbol + ", totalShares=" + totalShares + ", totalCost=" + totalCost + "]";
    }
//getter和setter方法自己补充
        public void setTotalCost(double totalCost) {
                this.totalCost = totalCost;
        }
        public void setTotalShares(int totalShares) {
                this.totalShares = totalShares;
        }
        public void setSymbol(String symbol) {
                this.symbol = symbol;
        }
        public double getTotalCost() {
                return totalCost;
        }
        public String getSymbol() {
                return symbol;
        }
}
class DividendStock extends Stock{
        double dividents;
        public DividendStock(String symbol){
                super(symbol);
        }
        @Override
        public double getProfit(double currentPrice) {
                return super.getProfit(currentPrice)+dividents;
        }
        public void payDividend(double amountPerShare){
                dividents=super.getTotalShares()*amountPerShare;
        }
        @Override
        public String toString() {
                return "Stock [symbol=" + super.getSymbol() + ", totalShares=" + super.getTotalShares() + ", totalCost=" + super.getTotalCost() +", dividents="+dividents+ "]";
        }
}


目录
相关文章
|
8月前
|
Java
【Java每日一题】— —第二十一题:编程把现实生活的手机事物映射成一个标准类Phone,并定义一个测试类PhoneDemo测试Phone类的功能
【Java每日一题】— —第二十一题:编程把现实生活的手机事物映射成一个标准类Phone,并定义一个测试类PhoneDemo测试Phone类的功能
分页列表数据不出来,初始化页面数据不出来的原因,Create中传一个参数1,解决bug的方法,学习敲代码的时候仔细与原项目比对,从上比到下
分页列表数据不出来,初始化页面数据不出来的原因,Create中传一个参数1,解决bug的方法,学习敲代码的时候仔细与原项目比对,从上比到下
|
6月前
|
Java 数据库连接 应用服务中间件
表单数据返回不到,HTTP状态 404 - 未找未找到,解决方法,针对这个问题,写一篇文章,理一下思路,仔细与原项目比对,犯错的原因是Mapper层的select查询表单数据写错,注意打开的路径对不对
表单数据返回不到,HTTP状态 404 - 未找未找到,解决方法,针对这个问题,写一篇文章,理一下思路,仔细与原项目比对,犯错的原因是Mapper层的select查询表单数据写错,注意打开的路径对不对
|
8月前
|
C++
C++:类的补充知识
C++:类的补充知识
45 0
|
XML 前端开发 安全
【全网最全】JSR303参数校验与全局异常处理(从理论到实践别用if判断参数了)
【全网最全】JSR303参数校验与全局异常处理(从理论到实践别用if判断参数了)
172 0
【全网最全】JSR303参数校验与全局异常处理(从理论到实践别用if判断参数了)
|
消息中间件 RocketMQ 开发者
下单接口定义和编码步骤分析|学习笔记
快速学习下单接口定义和编码步骤分析
193 0
下单接口定义和编码步骤分析|学习笔记
|
Python
Python 学生信息管理系统------文章中源码100%真实有效-----如何将类、初始化属性、模块、循环判断、静态方法等一系列知识点结合起来做一个项目
Python 学生信息管理系统------文章中源码100%真实有效-----如何将类、初始化属性、模块、循环判断、静态方法等一系列知识点结合起来做一个项目
153 0
Python 学生信息管理系统------文章中源码100%真实有效-----如何将类、初始化属性、模块、循环判断、静态方法等一系列知识点结合起来做一个项目
【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 Category 分类注入方法 )
【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 Category 分类注入方法 )
153 0
【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 Category 分类注入方法 )
|
缓存 API
如何写出高质量的代码 data 组件 函数 注释 命名 变量的次数
如何写出高质量的代码 data 组件 函数 注释 命名 变量的次数
【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 Category 分类进行方法注入的优缺点 )
【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 Category 分类进行方法注入的优缺点 )
160 0