• 认真地记录技术中遇到的坑!

浅谈类设计

程序开发语言 Moxun 5个月前 (05-28) 172次浏览 0个评论

类是面向对象的根本。
利用数据结构的视角来探讨如何设计一个类。

类是某些具有共同特征的实体(对象)的一个抽象。这些实体可能是真实可感的客观实体(例如,人、桌子、椅子等等真实存在的实体),也可能是抽象实体,例如数据库。设计类时,实际上是一个由对象到类的逆推过程。

类设计的第一个关键问题是数据成员的选择(属性),在这个过程中,我们要先考虑对象的共性,对这些共性赋予不同的值时,我们可以刻画出不同的对象,那么这些共性就是类的数据成员。例如,你要描述一个人,你可能需要这个人的年龄、姓名、种族、国籍、身高、体重、出生年月等。那么你要设计一个Human类一种可能的属性设计方案如下:

#include <string>
class Human
    {
    private:
    std::string m_strName;
    unsigned int m_uiAge{0};
    std::string m_strNation;
    std::string m_strNationality;
    unsigned int m_uiStature{0};
    unsigned int m_uiWeight{0};
    std::string m_strBirthday;
}

要描述一个数据库,可能只需要一个数据库连接(connection)就够了,但是,现代数据库本身其实是一个网络应用,它是分为客户端和服务端两部分的,那么问题在于,数据库连接断开了怎么去恢复呢?这样,就不得不保存下数据库的用户名、密码、网络服务名了,这样我们描述数据库这个类完整的属性集合是{数据库连接,用户名、密码、连接词}。

那么清楚了类的属性后,接下来就是方法的设计,方法的本质就是函数,就算是析构函数和构造函数也不过是稍微特殊一点的函数而已。从程序设计的角度来说,方法就是类能在它的属性上进行的一系列运算(广义的运算);从由具体对象到类的抽象过程来说,方法就是这一类事物的动态的一个行为特征的编程体现。从第一个角度来说,数据库的基本操作。增删改查都要在数据库连接上进行,而打开一个数据库连接则需要数据库连接词、用户名、密码三个信息。从第二个角度来说,人有吃喝拉撒睡等动态行为特征,这些动态特征可能会依赖属性(数据成员)也有可能不会依赖它们,还有可能会反过来改变它们,例如,吃会导致体重和身高增加,跑会有可能让它们减少。


转载请注明出处 浅谈类设计
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址