Some topics on designing C++ class

来源:互联网 发布:linux ctrl alt 编辑:程序博客网 时间:2024/05/21 14:02

 Considering some topics when designing classes:

(1) hiding code implement details.  We don't need any details from public member of this class.

(2) the public interface/member should give user more information. So, the name of public interface/member should be fine.

(3)the most important is that present a consistent level of ADTs in the class. For example: we have a simple class CEmployee which deals with the infromation of employee. So, the public interface/member GetName(), GetAddress(), IsMarried() maybe fine, but the IsZipAddressValid(Address address) break the consistent of this class.  The ADT of this CEmployee is employee and the interface to deal with employee.   When we add or modify public interface/member, be careful and don't change the class consistent.

(4)care about the inheritance. Inheritance is only for "Is a "relationships. For example: Class CColumn : public std::vector<int> is not probable. CColumn can contain a std::vector<int> member.

(5) move unrelative information to another class.  The unrelative information maybe another ADT which different from this class.

(6)work with real world entities rather than with low-level implementation. We work with CEmployeeList rather than the details of std::vector<int>.

(7)class may has high cohesion and have less relationships with other class.

 

The ways to design good class. Good classes have good encapsulation.

(1) Minimize accessibility of classes and members. 

(2)avoid frient class.

(3)wirte member as protect/private attribute.

(4)don't make any private implementation detalis in public interface/member

etc.