做所谓项目遇到的问题,顺便问下这种思路问题吧,类里属性有类,或者说引用类型的属性里面又有引用类型怎么理解?

MikeDDT009 2017-03-30 10:12:12
最近看到对象,感觉就一下开始纠结了,特别引用类型里面包含了引用类型,虽然就类来说,也就是当成是一个新的数据类型来理解,和基本类型的差别也就是内存里的所占大小刚开始不确实,需要用new来进行分配。但是在最近学到了封装吧,封装的思想反正目前来说我大都是属性都基本是封装成private。
最近做所谓的项目吧,我打算试试做游戏什么的,也就单纯的文字游戏吧,打算在里面用上类吧。整体制作大概是:

学习进度大概也就到封装,还没学完。

下面层都是包,然后包里除了model层基本都是一个类

1、ui层:包,这里C个类只完成输入输出)
2、service层:也是一个包,也许会多个类,服务层,基本数据的处理都靠它完成
3、database层:模拟数据库吧,里面就只有静态的属性,基本数据都丢这里
4、model层:自定义数据类型,也就是整个程序除了基本类型要传递的数据;

顺便问下这个方式是什么方式,有无一个名称什么的来称呼?
并且老是感觉基础怪怪的,于是最近晚上还是啃书看看,虽然感觉越看自己越感觉自己不知道的太多,感觉啥都忘了,果断是会把简单问题复杂化,自己纠结。

回到正题:
编译工具是eclipse。

整个程序流程基本是ui层找service层要数据,service在数据库提取,或者其它,并且用方法返回UI需要的数据或者信息。
所有数据都是从“数据库”来调取,中间经过service层的方法来运算,最后返回一个返回类型(大都有)

我本来打算做个角色类,角色类里面有如下:
//属性,(全部都是private)什么HP,等级打算暂时不考虑吧,所以才说是文字
名字(String类型)
武器(自定义类型,武器类,只有名字(String类型),单独定义出来只是问了可能以后添加其它属性)
背包(武器类型的数组,暂定长度,或者说个数是10吧)
//方法没有,只有自动生成的get和set,toString个人感觉应该是这里有升级或者死亡什么的方法?而不可能靠完全靠service层的方法来做,那样的话感觉太冗余了,不利于查找错误?全用service层的方法做,感觉不是很符合类?所以这里导致感觉自己对类一无所知了


然后在说说"数据库"那块吧,就定义个static的人物类数组,怪物类数组访问public,方便在service层只需要import后就可以直接通过类名来直接访问数据,而不用新建对象。

还有怪物类吧:
主要也就是个名字,和掉落,掉落也是武器类的数组,方法的话还是感觉怪怪,同样是service层这里。

最终大概游戏过程其实是希望随机生成场景,随机生成怪物,理论利用随机数实现选择,在ui层调用方法什么的吧。但是在实际做的时候,感觉思路不清晰了,对类里包类在去调取,类的属性private又是类类型(引用类型)的数组了。一个类牵扯一个类,完全迷糊了。完全不会调用了,特别绕过去绕过来的,甚至类里的类数组,先类里get了类里的数组名,然后set样,总之感觉晕了。

最大的问题在于对类完全糊涂了?然后以前看到说类里类,举个例子,一个人有6只狗。一个人(人类)有6个狗(狗类数组),这样应该是对的等等。。。。。

最后PS:说的不是很清晰和条理,我思路不是很清晰吧,感觉老是糊涂这样,希望各位能看明白

还有两个小问题:
1.null关键字与引用,在书里看到说null是特殊的对象?然后数组引用判断是否指向对象,经常看到的条件是,引用 == null 或者
引用 != null 。虽然这样理解着是判断是否有指向,但是我疑惑得到地方在于,null是特殊对象的话,那么它也是对象,怎么能用==来比较判断,毕竟在对象之间引用使用==表示的是是否引用同一个对象。null是对象的话为什么是用==而不是equals()-目前看到对象具体内容判断比较是否相等是用这个。
2是关于Thread.sleep(20000);这个代码的问题,我看到可以暂停程序就使用这个,但是直接打上没用,然后我又查1.6API中文版,自己导入了java.lang.*包,还是不行,然后我又发现这是静态方法,理论类名.方法名应该是能直接使用的,但是还是报错,后来看别人的加上什么try还有其它才能实现,是什么情况?
...全文
169 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhujinqiang 2017-03-31
  • 打赏
  • 举报
回复
引用 1 楼 yuxiangaaaaa 的回复:
== nul是判断对象是否为空,如果两个都是null了,就不用在意是不是引用了,引用的地址和对象的值都是null。 Thread.sleep(20000);这里可能会抛出异常的,所以要try...catch 处理一下 或者throw Exception
MikeDDT009 2017-03-31
  • 打赏
  • 举报
回复
引用 2 楼 dotnetstudio 的回复:
你问的那个层次应该是四层架构,从底往上依次是db, model, service , ui
就是这个架构自己用总感觉怪怪的,比如UI层会有条件语句,也用来创建引用类型的数据,实际使用我感觉略难理解,一个是引用类型的调用,比如我在UI层也可以初始化话个引用类型,但是又老是回去想service层才该处理这些。。。。还有就是直接UI层声明一个引用类型,然后我通过service直接把db层的同数据类型的一个"变量"的值交给它不就可以直接UI层操作了,那service又有啥用
MikeDDT009 2017-03-31
  • 打赏
  • 举报
回复
引用 1 楼 yuxiangaaaaa 的回复:
== nul是判断对象是否为空,如果两个都是null了,就不用在意是不是引用了,引用的地址和对象的值都是null。 Thread.sleep(20000);这里可能会抛出异常的,所以要try...catch 处理一下 或者throw Exception
原理如此,虽然知道是这样,不知道为什么老是会去感觉怪怪的,简直就像java编程思想上面某章导言说不同意这语言就无法交流了。
KeepSayingNo 2017-03-31
  • 打赏
  • 举报
回复
你问的那个层次应该是四层架构,从底往上依次是db, model, service , ui
自由自在_Yu 2017-03-31
  • 打赏
  • 举报
回复
== nul是判断对象是否为空,如果两个都是null了,就不用在意是不是引用了,引用的地址和对象的值都是null。 Thread.sleep(20000);这里可能会抛出异常的,所以要try...catch 处理一下 或者throw Exception
李德胜1995 2017-03-31
  • 打赏
  • 举报
回复
引用 3 楼 zhujinqiang 的回复:
[quote=引用 1 楼 yuxiangaaaaa 的回复:] == nul是判断对象是否为空,如果两个都是null了,就不用在意是不是引用了,引用的地址和对象的值都是null。 Thread.sleep(20000);这里可能会抛出异常的,所以要try...catch 处理一下 或者throw Exception
[/quote]

62,614

社区成员

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

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