什么是正确的封装语法?

时间:2017-02-17 04:24:54

标签: c++ encapsulation

我有发布和库两个类和发布类。如何操作(作为封装)类型,媒体和target_age,如果我希望它们是单独的类。它不属于另一个班级。 该类型有更多的类型(小说,非小说,自助,表演)以及媒体和年龄。我已经完成了我的研究,我为serchin提供了正确的语法。

class Publication {    
  private:
    string title;
    string authore;
    string copyright;
    Genre genre;
    Media media;
    Age target_age;
    string isbn;
    bool checked_out;
    string patron_name;
    string patron_phone;

  public:
    void check_out(string patron_name, string patron_phone ){}
    void check_in(){}
    bool is_checked_out(){}
    string to_string(){}
};

1 个答案:

答案 0 :(得分:1)

封装的最佳方法是保持一切私密。为可能从外部读取的东西创建常量getter,并初始化构造函数中的所有内容。毕竟,像作者/标题/等等。不应该为真实书籍的实例改变吗?请看下面的代码段:

class Publication {    
  private:
    string _title;
    string _author;
    Genre _genre;

  public:
    void check_out(string patron_name, string patron_phone );
    void check_in();
    bool is_checked_out() const;

    string to_string() const;
    string get_title() const { return _title; }
    string get_author() const { return _author; }
    const Genre& get_genre() const { return _genre; }


    Publication(string author, string title, Genre genre) : _author(auth), _title(title), _genre(genre)
    { }
};