一个“消息类”设计过程中的疑虑?(想面向对象设计一个类,却不够坚定,望赐教)

yqlws 2007-12-24 12:46:15
本人简介:了解C++已经多年,做过写小项目,都是在别人写好的框架下实现功能,未曾独自做过整个项目,顾有很多面向对象设计上的顾及和疑虑,望赐教(呵,屁话太多了)
问题:最近在写PHP程序(也许不该发到此处,但又设计面向对象问题,觉得还是在这问比较好),要实现一个“消息发送”的功能模块,也就是CSDN里发送消息差不多。我一接到这样的问题,第一感觉,习惯性的要设计个类。设计类吧,好,
草草写个伪码,大家明白就好,
Class Message
{
string sender;//发送者
string receiver;//接收者
string content;//内容
Date sendtime;//发送时间


bool SendMessage(db)
{
//存到数据库相应的表中
}
//其他成员函数略
}
我的问题是:只是简单的要写一条短信,设置发送者、接收者然后存到数据库里,创建一个类实例,都挺好理解的。
如果情况是:1.用户打开收信箱(假设有N条消息),遍历收件箱,我是否要创建N个Message实例,然后都指向它们?
2.如果不用类,去实现删除相应的消息,我可能知道指定消息id,写一个delete的sql语句就可以删除了。用了类我是否需要在消息里创建deleteMessage()函数然后去删除,如果这样我同样要在遍历消息时,创建每一条短信的message实例。

对于面向对象理解不够深刻,这条路子想走,却走不太鉴定,望赐教,若表述不清楚,请留言! 谢谢
...全文
116 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
icansaymyabc 2008-06-05
  • 打赏
  • 举报
回复
尽管在数据库之上实现一个“消息类”属于画蛇添足,但是搂主的探索精神值得赞扬!
meiZiNick 2008-05-01
  • 打赏
  • 举报
回复
支持搂主,收藏
rularys 2008-04-24
  • 打赏
  • 举报
回复
如果这个Message只涉及信息的存储格式,那么把它设计成一个结构好了,然后设计收信箱类,这个类可以管理
(比如添加、查找、删除等)Message 格式的消息;可以为每个用户维护一个收信箱的实例

只是简单的建议
newrain021011 2008-04-24
  • 打赏
  • 举报
回复
1.用户打开收信箱(假设有N条消息),遍历收件箱,我是否要创建N个Message实例,然后都指向它们?
可以设计一个与Message类相同接口的类MessageProxy,然后创建MessageProxy类的实例,MessageProxy类什么也不做,只是一个Proxy。只有等到要用的时候,再去遍历,创建N多个实例,迟缓创建。

2、sql语言不是很清楚,无法帮助你完成第二个问题。
CQZE 2008-04-05
  • 打赏
  • 举报
回复
struct msg{};

class box{};

所有的操作都在box中完成。msg就是数据
0黄瓜0 2007-12-25
  • 打赏
  • 举报
回复
2.如果不用类,去实现删除相应的消息,我可能知道指定消息id,写一个delete的sql语句就可以删除了。用了类我是否需要在消息里创建deleteMessage()函数然后去删除,如果这样我同样要在遍历消息时,创建每一条短信的message实例
=====================
删除时不用创建每个消息的实例. 跟不用类时的做法差不多,根据需要按消息id或按发送者或发送时间等条件构造sql语句,然后执行sql语句就行.
yutaooo 2007-12-25
  • 打赏
  • 举报
回复

我觉得,可以设计出一组类,而不是一个类,协同起来完成你的功能。只谈Message感觉上几个接口函数不在同一个层次上,职责也不明确。

比如说,消息的集合是否用个容器类来做。发送,接受是否用个通信类什么的。
llaaddoo 2007-12-24
  • 打赏
  • 举报
回复
class messagemanage
{
sendmessage(user,...)
}
这样好些~~呵呵!
llaaddoo 2007-12-24
  • 打赏
  • 举报
回复
class user
{
sendmessage();
}
如果message包含比较复杂的操作~~
可以把message做一个类~~
封装一些操作~~
很简单的话~~个人觉得没有必要~~
Wolf0403 2007-12-24
  • 打赏
  • 举报
回复
我觉得这样就可以.

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧