什么是正确的封装语法

What is the proper encapsulation syntax?

本文关键字:封装 语法 什么      更新时间:2023-10-16

我有出版物和图书馆两个类,在出版类中。如果我希望它们是单独的类,如何操纵(作为封装)类型,媒体和target_age。这不是另一个课程中的课。该类型具有更多类型(虚构,非小说,自助,表现)以及媒体和年龄。我已经完成了我的研究,我为此提供了适当的语法。

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(){}
};

封装的最佳方法是使所有内容保持私密。为可能从外部读取的内容创建常量的getters,并初始化构造函数中的所有内容。毕竟,诸如作者/title/等之类的东西。不应该改变真实书的实例吗?看看以下片段:

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)
    { }
};