关于面向对象的简单问题

whn1119 2010-03-19 03:13:57
初学面向对象 很多地方不是很理解

比如有三个类

Teacher:教授很多门Module
Module:包含多个Course(比如 实验课 习题课 等等)
Course

现在有一个操作 Teacher想在某一个Module里面增加一个Course, 假设这个操作为 AddCourse

那这个 AddCourse 的操作应该作为哪一个类的方法呢?还是这三个类都有这个方法?

希望多多指教 越详细越好 谢谢~!!!
...全文
105 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
whn1119 2010-03-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 dracularking 的回复:]

老师有所教课程属性,表明他任教有哪些课,可用集合表示
老师还可以添加课程,结果是增加了课程属性元素,就有addCourse方法
[/Quote]

谢谢 我更加清晰了!
Ark032425 2010-03-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xiesisi3 的回复:]
那么你首先得想清楚,AddCourse是一种能力,这种能力应该谁来具有呢?

是不是每个Teacher都可以加属于自己的Course?
但具体到每个不同的Teacher肯定是不同的Course,那么就可以把Teacher设计成接口或是抽象类,它有一个方法就是AddCourse.同样Course也是一样,因为可以具体到每一个Course,所以也可以设计成接口或抽象类。
[/Quote]
比较灵活的,可以有多种设计
whn1119 2010-03-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xiesisi3 的回复:]

那么你首先得想清楚,AddCourse是一种能力,这种能力应该谁来具有呢?

是不是每个Teacher都可以加属于自己的Course?
但具体到每个不同的Teacher肯定是不同的Course,那么就可以把Teacher设计成接口或是抽象类,它有一个方法就是AddCourse.同样Course也是一样,因为可以具体到每一个Course,所以也可以设计成接口或抽象类。
[/Quote]

我明白了,是我自己没弄清楚类和对象的概念。

非常感谢!
dracularking 2010-03-19
  • 打赏
  • 举报
回复
老师有所教课程属性,表明他任教有哪些课,可用集合表示
老师还可以添加课程,结果是增加了课程属性元素,就有addCourse方法
ifrancis 2010-03-19
  • 打赏
  • 举报
回复
典型的面向对象认识问题 楼主加油啊 java里面万事万物皆对象 你可以是个对象 我也是个对象 我们之间的距离也是个对象 你对我这个回帖的看法也可以是对象
TillPerfect 2010-03-19
  • 打赏
  • 举报
回复
面向对象,理解为面向实际生活场景来思考问题。面向对象是前辈们摸索多年总结出来的设计思想,就是想让编程尽可能的简单易懂些。退后一步,不要凑在代码跟前去想怎么“面向对象”,要从一个设计的高度来看待问题。额。。。这个要慢慢体会,可能我描述的不够好。。。
xiesisi3 2010-03-19
  • 打赏
  • 举报
回复
其实面向对象,就是把事物想成一个一个的类,然后类方法就是那个事物能做什么,属性就是那个事物是什么样的。
poFate 2010-03-19
  • 打赏
  • 举报
回复
这个用观察者模式较好。。。
xiesisi3 2010-03-19
  • 打赏
  • 举报
回复
那么你首先得想清楚,AddCourse是一种能力,这种能力应该谁来具有呢?

是不是每个Teacher都可以加属于自己的Course?
但具体到每个不同的Teacher肯定是不同的Course,那么就可以把Teacher设计成接口或是抽象类,它有一个方法就是AddCourse.同样Course也是一样,因为可以具体到每一个Course,所以也可以设计成接口或抽象类。
poFate 2010-03-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 whn1119 的回复:]

引用 2 楼 xiesisi3 的回复:

Module:包含多个Course(比如 实验课 习题课 等等)
既然都是这样了,说明Module这个类就是专门用来盛装Course的,当然无论是增加Course还是减少都应该是Module这个类来做


可如果没有这个Module类 只有Teacher类和Course类的话 AddCourse这个方法应该放在哪儿呢?

谢谢!
[/Quote]
如果这样那就应该放在Teacher里面,但是Teache里面必须有module字段
即使这样module也必须有一个addCourse()形式的方法
如果有多个module的话 就不好办了
whn1119 2010-03-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xiesisi3 的回复:]

Module:包含多个Course(比如 实验课 习题课 等等)
既然都是这样了,说明Module这个类就是专门用来盛装Course的,当然无论是增加Course还是减少都应该是Module这个类来做
[/Quote]

可如果没有这个Module类 只有Teacher类和Course类的话 AddCourse这个方法应该放在哪儿呢?

谢谢!
xiesisi3 2010-03-19
  • 打赏
  • 举报
回复
Module:包含多个Course(比如 实验课 习题课 等等)
既然都是这样了,说明Module这个类就是专门用来盛装Course的,当然无论是增加Course还是减少都应该是Module这个类来做
  • 打赏
  • 举报
回复
当然是Module里有AddCourse()方法

public void AddCourse(){
//-TODO......
}

62,624

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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