请问你们在设计这种类时,一般是怎么做的,怎么使类的封装性好一点呢?
10 个解决方案
#1
要讲封装的话,当然是private或者protected的成员变量
你那种方法就是图个方便
你那种方法就是图个方便
#2
再复习一下OO吧.
#3
CPtrArray作为一个容器类,你肯定是要实现某个功能,把这个功能封装成一个类,由这个功能类来维护这个CPtrArray数组.
#4
肯定不能直接用,最懒也要通过函数来对其间接引用,提供最基本的封装,比如
CPtrArray& CMyClass::GetItems(void){
return m_PtrArray;
}
调用
myClass.GetItems()->GetAt(i);
//....
CPtrArray& CMyClass::GetItems(void){
return m_PtrArray;
}
调用
myClass.GetItems()->GetAt(i);
//....
#5
TO:mynamelj(隐姓埋名,从此绝迹在互联网之上)
CPtrArray作为一个容器类,你肯定是要实现某个功能,把这个功能封装成一个类,由这个功能类来维护这个CPtrArray数组.
CPtrArray中管理的是指向某个结构体的指针,我主要是对这个CPtrArray对象进行GetAt、SetAt、Add、RemoveAt、InsertAt、GetSize这些操作,来完成相应数据的读取,添加,更新操作
其实最主要的是我要在类中跟踪CPtrArray对象的“读”和“写”两种状态
原来想读的时候返回一个CPtrArray对象的常量指针或引用,这样虽然不能直接对CPtrArray对象进行InsertAt、RemoveAt等“写”操作,但通过GetAt获得相应的指针后,就能对所指向结构体的内容进行更改了!!!怎么办?
写到好说,封装两个函数完成插入和更新即可
还有,我不可能把所有CPtrArray类所实现的操作函数都在类中做一个“外包”函数吧,哪样这个类的接口也太。。。因为我这个类中很有几个这个类似的容器对象
CPtrArray作为一个容器类,你肯定是要实现某个功能,把这个功能封装成一个类,由这个功能类来维护这个CPtrArray数组.
CPtrArray中管理的是指向某个结构体的指针,我主要是对这个CPtrArray对象进行GetAt、SetAt、Add、RemoveAt、InsertAt、GetSize这些操作,来完成相应数据的读取,添加,更新操作
其实最主要的是我要在类中跟踪CPtrArray对象的“读”和“写”两种状态
原来想读的时候返回一个CPtrArray对象的常量指针或引用,这样虽然不能直接对CPtrArray对象进行InsertAt、RemoveAt等“写”操作,但通过GetAt获得相应的指针后,就能对所指向结构体的内容进行更改了!!!怎么办?
写到好说,封装两个函数完成插入和更新即可
还有,我不可能把所有CPtrArray类所实现的操作函数都在类中做一个“外包”函数吧,哪样这个类的接口也太。。。因为我这个类中很有几个这个类似的容器对象
#6
TO:SoLike(思危)
肯定不能直接用,最懒也要通过函数来对其间接引用,提供最基本的封装
哪是以前的代码,大部份是别人写的,后来也只的将就用了。
现在软件要进行彻底的改版,我也认为哪样不好!所以才想好好封装一下,考虑了好久,也没好一点的思路,所以才请教各位
肯定不能直接用,最懒也要通过函数来对其间接引用,提供最基本的封装
哪是以前的代码,大部份是别人写的,后来也只的将就用了。
现在软件要进行彻底的改版,我也认为哪样不好!所以才想好好封装一下,考虑了好久,也没好一点的思路,所以才请教各位
#7
应该进行封装
把CPtrArray暴露在外面,现在是方便了,但是升级维护就麻烦了
如果是多线程,怎么保障安全
至少:
AddXxx...通常是有序的插入
DelXxx...可能不能直接delete对象,应为可能还有引用者
GetXxx...返回对象的可用指针,如果成员较多,二分查找是应该提供的
这三个方法是应该提供的
把CPtrArray暴露在外面,现在是方便了,但是升级维护就麻烦了
如果是多线程,怎么保障安全
至少:
AddXxx...通常是有序的插入
DelXxx...可能不能直接delete对象,应为可能还有引用者
GetXxx...返回对象的可用指针,如果成员较多,二分查找是应该提供的
这三个方法是应该提供的
#8
把CPtrArray封装一下, 比如提供
Add
Del
Get
Set
这样一系列函数
否则把CPtrArray直接暴露给外部使用, 相当于把类内部的实现细节(数据存储结构)暴露出去了, 将来一旦有需求要换用其他数据结构, 那就有得你改了
这样做, 以后只需要重新实现一个数据封装类, 外部就不需要改了
Add
Del
Get
Set
这样一系列函数
否则把CPtrArray直接暴露给外部使用, 相当于把类内部的实现细节(数据存储结构)暴露出去了, 将来一旦有需求要换用其他数据结构, 那就有得你改了
这样做, 以后只需要重新实现一个数据封装类, 外部就不需要改了
#9
重构一个别人的程序很麻烦啊,先把思路吃透,然后修改。
工作量有时候很大,不必重写轻松多少。
工作量有时候很大,不必重写轻松多少。
#10
顶起!
#1
要讲封装的话,当然是private或者protected的成员变量
你那种方法就是图个方便
你那种方法就是图个方便
#2
再复习一下OO吧.
#3
CPtrArray作为一个容器类,你肯定是要实现某个功能,把这个功能封装成一个类,由这个功能类来维护这个CPtrArray数组.
#4
肯定不能直接用,最懒也要通过函数来对其间接引用,提供最基本的封装,比如
CPtrArray& CMyClass::GetItems(void){
return m_PtrArray;
}
调用
myClass.GetItems()->GetAt(i);
//....
CPtrArray& CMyClass::GetItems(void){
return m_PtrArray;
}
调用
myClass.GetItems()->GetAt(i);
//....
#5
TO:mynamelj(隐姓埋名,从此绝迹在互联网之上)
CPtrArray作为一个容器类,你肯定是要实现某个功能,把这个功能封装成一个类,由这个功能类来维护这个CPtrArray数组.
CPtrArray中管理的是指向某个结构体的指针,我主要是对这个CPtrArray对象进行GetAt、SetAt、Add、RemoveAt、InsertAt、GetSize这些操作,来完成相应数据的读取,添加,更新操作
其实最主要的是我要在类中跟踪CPtrArray对象的“读”和“写”两种状态
原来想读的时候返回一个CPtrArray对象的常量指针或引用,这样虽然不能直接对CPtrArray对象进行InsertAt、RemoveAt等“写”操作,但通过GetAt获得相应的指针后,就能对所指向结构体的内容进行更改了!!!怎么办?
写到好说,封装两个函数完成插入和更新即可
还有,我不可能把所有CPtrArray类所实现的操作函数都在类中做一个“外包”函数吧,哪样这个类的接口也太。。。因为我这个类中很有几个这个类似的容器对象
CPtrArray作为一个容器类,你肯定是要实现某个功能,把这个功能封装成一个类,由这个功能类来维护这个CPtrArray数组.
CPtrArray中管理的是指向某个结构体的指针,我主要是对这个CPtrArray对象进行GetAt、SetAt、Add、RemoveAt、InsertAt、GetSize这些操作,来完成相应数据的读取,添加,更新操作
其实最主要的是我要在类中跟踪CPtrArray对象的“读”和“写”两种状态
原来想读的时候返回一个CPtrArray对象的常量指针或引用,这样虽然不能直接对CPtrArray对象进行InsertAt、RemoveAt等“写”操作,但通过GetAt获得相应的指针后,就能对所指向结构体的内容进行更改了!!!怎么办?
写到好说,封装两个函数完成插入和更新即可
还有,我不可能把所有CPtrArray类所实现的操作函数都在类中做一个“外包”函数吧,哪样这个类的接口也太。。。因为我这个类中很有几个这个类似的容器对象
#6
TO:SoLike(思危)
肯定不能直接用,最懒也要通过函数来对其间接引用,提供最基本的封装
哪是以前的代码,大部份是别人写的,后来也只的将就用了。
现在软件要进行彻底的改版,我也认为哪样不好!所以才想好好封装一下,考虑了好久,也没好一点的思路,所以才请教各位
肯定不能直接用,最懒也要通过函数来对其间接引用,提供最基本的封装
哪是以前的代码,大部份是别人写的,后来也只的将就用了。
现在软件要进行彻底的改版,我也认为哪样不好!所以才想好好封装一下,考虑了好久,也没好一点的思路,所以才请教各位
#7
应该进行封装
把CPtrArray暴露在外面,现在是方便了,但是升级维护就麻烦了
如果是多线程,怎么保障安全
至少:
AddXxx...通常是有序的插入
DelXxx...可能不能直接delete对象,应为可能还有引用者
GetXxx...返回对象的可用指针,如果成员较多,二分查找是应该提供的
这三个方法是应该提供的
把CPtrArray暴露在外面,现在是方便了,但是升级维护就麻烦了
如果是多线程,怎么保障安全
至少:
AddXxx...通常是有序的插入
DelXxx...可能不能直接delete对象,应为可能还有引用者
GetXxx...返回对象的可用指针,如果成员较多,二分查找是应该提供的
这三个方法是应该提供的
#8
把CPtrArray封装一下, 比如提供
Add
Del
Get
Set
这样一系列函数
否则把CPtrArray直接暴露给外部使用, 相当于把类内部的实现细节(数据存储结构)暴露出去了, 将来一旦有需求要换用其他数据结构, 那就有得你改了
这样做, 以后只需要重新实现一个数据封装类, 外部就不需要改了
Add
Del
Get
Set
这样一系列函数
否则把CPtrArray直接暴露给外部使用, 相当于把类内部的实现细节(数据存储结构)暴露出去了, 将来一旦有需求要换用其他数据结构, 那就有得你改了
这样做, 以后只需要重新实现一个数据封装类, 外部就不需要改了
#9
重构一个别人的程序很麻烦啊,先把思路吃透,然后修改。
工作量有时候很大,不必重写轻松多少。
工作量有时候很大,不必重写轻松多少。
#10
顶起!