如何设计类与类之间的关系:
比如
A类(人类)<-(玩法)-> B类(扑克),
A类(人类)<-(操作)-> C类(汽车),
A类(人类)<-(使用)-> D类(椅子)
像这种同一个类与其他不同类之间又有关联,怎么设计呢?
如何设计类与类之间的关系:
比如
A类(人类)<-(玩法)-> B类(扑克),
A类(人类)<-(操作)-> C类(汽车),
A类(人类)<-(使用)-> D类(椅子)
像这种同一个类与其他不同类之间又有关联,怎么设计呢?
定义一个接口
java
public interface Use { public void useBy(Person p); }
为BCD定义一个父类,实现接口Use
java
public class Item implements Use { @Override public void useBy(Person p) { //do something } }
BCD类继承类Item,并覆盖useBy方法(或者重载?比如扑克有多人玩)
面向对象学的不好,抛砖引玉了~
从你的例子来看,关联只是在A类对其他类有“行为”的时候发生?还是我没理解好?
若如你提问的那样,一个“类”对“另一类”实施某“行为”的关联就是以下这样解释
人类.玩(扑克) or 人类.玩(游戏机)
人类.驾驶(汽车) or 人类.驾驶(飞机)
人类.坐(椅子) or 人类.捡起(椅子)
其实这里把 人类 抽象成实施者
,实施者
有行为
可操作对象。
再来就是对象,我们有 扑克、游戏机、汽车、飞机、椅子 这么多个,但是实施者
的行为
并不是都可以操作全部对象,如:人类.驾驶(扑克)
。所以行为
需要限制操作对象,而对象也需要分类。
扑克、游戏机 继承 娱乐用品
汽车、飞机 继承 交通工具
椅子、娱乐用品、交通工具 继承 物件
人类 只能 玩 娱乐用品
人类 只能 驾驶 交通工具
人类 只能 坐 椅子
人类 只能 捡起 物件
-w-)/我理解就这么简单,如果题主能补充多的问题可能更好。
其实分类,主要还是要看你准备抽象到什么地步。
举个例子,问题说道了"玩法","操作","使用",他们都可以抽象成“方法”,只不过是不同的应用而已
"扑克","汽车","椅子",这些都是需要用到的东西,把它们抽象成“物件”
下面为了方便理解我用的名字基本都是中文,其实学OO的概念,不要把它学死,下边的使用只是一种方式,从不同的角度去看去抽象,能写出各种各样的东西。
比如说:下边我把怎么使用这个东西的方法写在了“人类”里,但你想想,也许应该是“人类”拿到了这样东西就会用了而不是我告诉“人类”怎么用,又或者说这个东西它能这样用,而不是人类只会这么用。
理解的是OO的概念,帮助你将来去更有效更便利的写code就可以了。