1.国家宝藏本·富兰克林·盖茨(尼古拉斯·凯奇饰)是一个喜爱考古的冒险家。从小就梦想要找到国家宝藏,二十年来这个秘密一直萦绕在他的心头,现在他决定完成这一梦想。假设我们知道国...

1.国家宝藏

本·富兰克林·盖茨(尼古拉斯·凯奇饰)是一个喜爱考古的冒险家。从小就梦想要找到国家宝藏,二十年来这个秘密一直萦绕在他的心头,现在他决定完成这一梦想。假设我们知道国家宝藏在哪里,并且想设计一个系统,如果尼古拉斯碰触国家宝藏中的每箱黄金,系统会自动通知宝藏的守护神。

系统中应该有一个抽象的宝藏类(Treature),宝藏类维护着一个聚集,用于对守护神的跟踪,当宝藏被更动时,通知这些守护神,这个聚集可以用一个向量(Vector)作为宝藏类的Obs属性来实现。该类提供一系列的保护神管理方法,可以增加(addObserver())和删除(deleteObserver())宝藏保护神,以及当宝藏状态被更动时,通知(notifyObservers()

)守护神。当然,宝藏类还要有一些辅助方法,比如探测宝藏状态是否改变的方法(hasChanged()),标记宝藏状态已更动的方法(setChanged())和复位状态变化标志(clearChanged()),以及返回宝藏守护神数目的方法(countObserver())。

具体的宝藏如黄金(Gold)也应是一个类,且是宝藏类的子类,维护着自己的状态(State),这可以用String型变量来实现。当然还有获得状态(getState())和改变状态(setState())的辅助方法,并且当重新设定的状态与原状态不同时,会通知看护该箱黄金的所有守护神。

你还可发挥想象力定义其他的具体宝藏类,比如钻石(Diamond)类等等。

守护神(Eudemon)应是个抽象类或接口,为各种具体的守护神定义一个接口,在得到宝藏的通知时采取行动。这个接口中只包含一个方法update(),用于宝藏状态改变时,具体的保护神所应采取的行动。

具体的守护神比如老虎(Tiger)就是一个实现了抽象守护神接口中update()方法的具体守护神。你还可发挥想象力定义其他的具体守护神类,比如狮子(Lion)类等等。

最后,尼古拉斯·凯奇(Cage)也是一个类,且是具体类,他将凭借智慧和勇敢,更动(touchTreature())这些国家宝藏的状态,这可要惊动宝藏的守护神呦......

要求:请根据上面的剧本陈述,设计一个国家宝藏的守护系统,并用Java语言实现你的设计方案

展开

面向对象java试题_经典面向对象试题,用Java做,要详细点的!先谢过了相关推荐

  1. stm32经典笔试题_经典面试题及解析

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 基础部分考察 1.用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (6 ...

  2. BAT Java面试笔试33题:JavaList、Java Map等经典面试题!答案汇总!

    JavaList面试题汇总 1.List集合:ArrayList.LinkedList.Vector等. 2.Vector是List接口下线程安全的集合. 3.List是有序的. 4.ArrayLis ...

  3. java面试题jvm_经典面试题|讲一讲JVM的组成

    经典面试题|讲一讲JVM的组成 发布时间:2019-04-10 09:01, 浏览次数:1456 , 标签: JVM JVM(Java 虚拟机)算是面试必问的问题的了,而但凡问 JVM 一定会问的第一 ...

  4. java后端研发经典面试题总结,为公司招兵买马

    垃圾回收算法 1.标记-清除算法 标记-清除算法是最基本的算法,和他的名字一样,分为两个步骤,一个步骤是标记需要回收的对象.在标记完成后统一回收被标记的对象.这个算法两个问题.一个是效率问题,标记和清 ...

  5. java后端研发经典面试题总结

    垃圾回收算法 1.标记-清除算法 标记-清除算法是最基本的算法,和他的名字一样,分为两个步骤,一个步骤是标记需要回收的对象.在标记完成后统一回收被标记的对象.这个算法两个问题.一个是效率问题,标记和清 ...

  6. 面向对象设计原则_聊聊面向对象的6大设计原则

    程序员都知道编程有 3 大类:面向过程.面向对象.面向函数.面向对象是被讨论的最多的,个人认为,这是因为 Java 之类的编程语言有强大的用户基础,本质还是因为比较符合人的直觉. 说到面向对象,大家可 ...

  7. jquery级试题_jQuery经典面试题及答案精选

    jQuery是一款非常流行的Javascript框架,如果你想要从事Web前端开发这个岗位,那么jQuery是你必须掌握而且能够熟练应用的一门技术.本文整理了一些关于jQuery的经典面试题及答案,分 ...

  8. java书籍_非科班,自学java需要把软件工程的课程全部学习完吗?

    问题一:非科班是否能自学Java.问题二:自学Java是否需要把软件工程课程全部学完?问题三:如何自学Java? 解决问题一:非科班是否能自学Java.不知道你是否有这个担心疑虑,从事Java技术开发 ...

  9. 有控制雷电武器的java游戏_雷电飞机射击游戏 JAVA

    一.程序概述 1.开发环境 开发程序的工具Eclipse是著名的跨平台的自由集成开发环境.一个开放源代码的.基于Java的课扩展开发平台.就其本身而言,它只是一个框架和一组服务,用与通过插件组件构建开 ...

  10. 双表查询java代码_什么是JDBC?Java数据库连接性简介

    JDBC(Java数据库连接性)是Java API,用于管理与数据库的连接,发出查询和命令以及处理从数据库获得的结果集.JDBC在1997年作为JDK 1.1的一部分发布,是为Java持久层开发的首批 ...

最新文章

  1. java的annotation_Java Annotation认知(包括框架图、详细介绍、示例说明)
  2. vb使用字符串分隔字符串_为什么要使用字符串
  3. 简单排序--冒泡排序
  4. * 构建一个list集合存储5个学生对象, 过滤年龄小于18的,存入一个新的map集合
  5. Android RecyclerView使用详解(一)
  6. 释放低代码小宇宙,微软 Power Platform 震撼来袭!
  7. 数据库树形结构,EasyUI Tree 树
  8. sql 筛选唯一值_多列数据获取唯一值?你再肉眼筛选的时候,我已经下班了
  9. VB6.0 组织json对象并生成json字符串
  10. 硬盘属于计算机的主存吗,.硬盘装在主机箱内,因此硬盘属于主存对吗
  11. IOS流媒体播放器V1.1_rtsp、rmtp、m3u8、mms、mmsh
  12. 有道云笔记本 html,有道云笔记怎么保存网页 有道云笔记保存路径在哪
  13. 面部识别科普(刷脸支付)
  14. 法国“毁容”女教师请求安乐死
  15. linux检查内存插槽,Linux查看内存大小和插槽
  16. A BERT Baseline for the Natural Questions
  17. 网络虚拟化NSX学习笔记
  18. C语言错误信息报告函数strerror、perror的使用
  19. 随想录(sil、hil、mil测试)
  20. 国务院新规发布:首次明确电击治网瘾犯法

热门文章

  1. C# DataTable 按数字排序问题
  2. 7.上传自己的代码到 composer
  3. 6.关于 MySQL
  4. 41. Element getElementsByTagName() 方法
  5. jquery使用规则
  6. Windows系统命令整理-Win10
  7. Cglib动态代理实现原理
  8. 面向对象编程——类和实例(二)
  9. 该来的还是要来,数据挖掘
  10. Appium測試APP 時,所截出來的圖是全黑的問題