avatar
新手问个OOD的问题# JobHunting - 待字闺中
c*0
1
CareerCup 上的题, Design the data structure for an online book reader
system, sample solution 如下:
class User {
User_id;
User_details;
Account_type;
Search_Library();
Read_book();
Renew_Membership();
AddUser();
Get();
Set();
};
class Book {
Book_id;
Book_details;
AddBook();
Update();
Delete();
Get();
Set();
};
class OnlineReaderSystem() {
Book B;
User U;
ListenRequest();
Search();
Display();
};
我不理解的地方:
1.为什么User 可以addUser(),Renew_MemberShip(), Book 可以AddBook(), Update(),
Delete()? 这些method是否需要administrator class来实现
2. 如果需要administrator class, 是否private data member应该包含set of Book
和 User?
3. User class 里面的Read_Book() method应该实现什么功能?这个方法为什么不放在
OnlineReaderSystem里面?
4. User是否需要存一个data member 放他自己library里面的书?这里Search_library
()是search 他自己的library还是全部的library?
还有一个general 的问题, 如果我需要一个object A, 还有一个collection of object
A, 是否需要建两个class?比方说book class 和 books class.
谢谢高手指点
avatar
h*d
2
不是高手,我的理解是这样
addUser, Renew_Membership等这些都是User的functionalities,当然需要在User里面
有定义,但function具体怎么实现肯定还需要靠那个onlinesystem
Book class同理
不需要administrator class,这个onlinesystem就相当于那个class。或者可以叫
control class
那个User的search_libary 明显是要去call onlinesystem的search function,
search 整个libary (因为search_libary是User必须要有的functionality,所以在
User里定义,实现是靠onlinesystem的search() function)
最后那个问题,不需要的,哪个class需要collection of books可以在class fields里
定义呀
同求高手见解。。

1.为什么User 可以addUser(),Renew_MemberShip(), Book 可以AddBook(), Update(),
Delete()? 这些method是否需要administrator class来实现
2. 如果需要administrator class, 是否private data member应该包含set of Book
和 User?
3. User class 里面的Read_Book() method应该实现什么功能?这个方法为什么不放在
OnlineReaderSystem里面?
4. User是否需要存一个data member 放他自己library里面的书?这里Search_library
()是search 他自己的library还是全部的library?
还有一个general 的问题, 如果我需要一个object A, 还有一个collection of object
A, 是否需要建两个class?比方说book class 和 books class.

【在 c*******0 的大作中提到】
: CareerCup 上的题, Design the data structure for an online book reader
: system, sample solution 如下:
: class User {
: User_id;
: User_details;
: Account_type;
: Search_Library();
: Read_book();
: Renew_Membership();
: AddUser();

avatar
c*0
3
谢谢楼上的回答。这样OnlineReaderSystem()里面是否需要collection of Book 和
User, 而不是只有一个Book B 和 User U?
另外,楼上说“addUser, Renew_Membership等这些都是User的functionalities,当然
需要在User里面有定义,但function具体怎么实现肯定还需要靠那onlinesystem“
我的理解是,addUser是往collection of User里面加一个object,因为Collection of
User是在OnlineReaderSystem里,所以addUser应该在那里实现。可是为什么需要在
User里面定义。难道一个User可以把自己加进collection?
avatar
s*n
4
答案又不是标准,甚至可能是错的。
avatar
h*d
5
不是一个User可以把自己加进collection,是别人调用User的函数
User u = new User();
u.addUser();
上面两行不是User的"行为",是control class的调用
建议你多看看OO的书,你貌似还停留在C的procedure programming思维

of

【在 c*******0 的大作中提到】
: 谢谢楼上的回答。这样OnlineReaderSystem()里面是否需要collection of Book 和
: User, 而不是只有一个Book B 和 User U?
: 另外,楼上说“addUser, Renew_Membership等这些都是User的functionalities,当然
: 需要在User里面有定义,但function具体怎么实现肯定还需要靠那onlinesystem“
: 我的理解是,addUser是往collection of User里面加一个object,因为Collection of
: User是在OnlineReaderSystem里,所以addUser应该在那里实现。可是为什么需要在
: User里面定义。难道一个User可以把自己加进collection?

avatar
c*0
6
那addUser()应该怎么定义?能不能写个sample implementation?
另外,楼上能推荐一本OO的书吗?后天要面试了,时间比较紧,最好是能有几个c++的
例子帮助理解的。谢谢啦。
avatar
d*y
7
sometimes collection class helps. so adduser can be done in collection class.

【在 c*******0 的大作中提到】
: 那addUser()应该怎么定义?能不能写个sample implementation?
: 另外,楼上能推荐一本OO的书吗?后天要面试了,时间比较紧,最好是能有几个c++的
: 例子帮助理解的。谢谢啦。

avatar
z*y
8
顶一个 那位童鞋给介绍本好的OO design的书籍?
写了很多code之后发现这方面也非常需要提高
avatar
c*0
9
自己顶一下
avatar
r*n
10
我觉得你的想法是对的,不过跟书上的解答方向不大一样。
你想的是user, book只是两个model的class, 只包含各自属性的attribute。然后再建
立一个类似于整体系统的interface,包含user, book的vector之类的集合,提供给用
户以search之类的function。
书上的解答,我理解为book, user两个类某种程度把model和modelDAO的概念混合在一
起了,你把user和book的add, delete, update想象成对应后台的table的CRUD,那么这
2个类就是各自的DAO类。这个onlineReaderSystem相当于一个Controller的概念,用来
调用modelDAO的各种function达到用户的request,至于view可以对应user, book各自一
个,当然这里就没那么详细的讨论了。你按照一个常见Web系统的MVC架构想,就容易理
解了。
希望还有人谈谈自己的想法。

of

【在 c*******0 的大作中提到】
: 谢谢楼上的回答。这样OnlineReaderSystem()里面是否需要collection of Book 和
: User, 而不是只有一个Book B 和 User U?
: 另外,楼上说“addUser, Renew_Membership等这些都是User的functionalities,当然
: 需要在User里面有定义,但function具体怎么实现肯定还需要靠那onlinesystem“
: 我的理解是,addUser是往collection of User里面加一个object,因为Collection of
: User是在OnlineReaderSystem里,所以addUser应该在那里实现。可是为什么需要在
: User里面定义。难道一个User可以把自己加进collection?

avatar
c*0
11
谢谢楼上的回答。这样想就明白多了。
avatar
f*t
12
我最近也在学习。
我觉得还是用一个administrator class好些。
这个class有collection of User和Collection of Book。
用户可以去read book,也可以有一个data member,记录它借的书/读的书。
欢迎大家提供意见。
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。