C++PrimerPlus:第十三章类和继承:ABC理念

C++PrimerPlus:第十三章类和继承:ABC理念

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第十三章类和继承:ABC理念


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

ABC理念


引入上篇文章的头文件

//acctabc.h -- bank account classes
#ifndef ACCTABC_H_
#define ACCTABC_H_
#include <iostream>
#include <string>

// Abstract base class
class AcctABC
{
private:
    std::string fullName;
    long acctNum;
    double balance;
protected:
    struct Formatting
    {
        std::ios_base::fmtflags flag;
        std::streamsize pr;
    };
    const std::string& FullName() const { return fullName; }
    long AcctNum() const { return acctNum; }
    Formatting SetFormat() const;
    void Restore(Formatting& f) const;
public:
    AcctABC(const std::string& s = "Nullbody", long an = -1,
        double bal = 0.0);
    void Deposit(double amt);
    virtual void Withdraw(double amt) = 0;//pure virtual function
    double Balance() const { return balance; }
    virtual void ViewAcct() const = 0;//pure virtual function
    virtual~AcctABC() {}
};
// Brass Account Class
// Normal account
class Brass : public AcctABC
{
public:
    Brass(const std::string& s = "Nullbody", long an = -1,
        double bal = 0.0) :AcctABC(s, an, bal) {};
    virtual void Withdraw(double amt);
    virtual void ViewAcct() const;
    virtual ~Brass() {};
};
// BrassPlus Account Class
class BrassPlus : public AcctABC
{
private:
    double maxLoan;
    double rate;
    double owesBank;
public:
    BrassPlus(const std::string& s = "Nullbody", long an = -1, 
        double bal = 0.0,double ml = 500, double r = 0.10);
    BrassPlus(const Brass& ba, double ml = 500, 
        double r = 0.10);
    virtual void ViewAcct() const;
    virtual void Withdraw(double amt);
    void ResetMax(double m) { maxLoan = m; }
    void ResetRate(double r) { rate = r; }
    void ResetOwes() { owesBank = 0; }
};
#endif  

提示:以下是本篇文章正文内容,下面案例可供参考

一、ABC理念

ABC理念
1,在处理继承的问题上,RatedPlayer 示例使用的方法比较随意,而ABC方法比它更具系统性、更规范。设计 ABC之前,首先应开发一个模型–指出编程问题所需的类以及它们之间相互关系。一种学院派思想认为,如果要设计类继承层次,则只能将那些不会被用作基类的类设计为具体的类。这种方法的设计更清晰,复杂程度更低。

2,可以将ABC看作是一种必须实施的接口。ABC要求具体派生类覆盖其纯虚函数–迫使派生类遵循ABC设置的接口规则。这种模型在基于组件的编程模式中很常见,在这种情况下,使用ABC使得组件设计人员能够制定“接口约定”,这样确保了从 ABC派生的所有组件都至少支持ABC指定的功能。


总结:

1,对ABC的的设计方法。需要多练习


  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值