Assignment 题目
本页目录· 14 条
这一页有部分内容暂时无法显示,其余内容完整。
引言
本次作业截止时间为 第 12 周周五(5 月 30 日周五)晚上 11:55,占本单元期末总评的 35%。逾期提交将受到严格扣分。
此作业为个人作业,必须独立完成。若代码中引用了他人内容,必须注明来源。请务必阅读本文件中关于抄袭的说明。
编写程序时请特别注意:
- 必须在 Ed 平台提供的工作区内编写程序,禁止从其他地方复制并粘贴大段代码。
- 必须为所有来自其他来源的代码注明出处。
- Java 源代码必须遵循 FIT9131 Java 编码规范。
- 本程序仅需文本界面。 界面清晰、导航明确、错误信息友好的程序将获得更高分。
- 本评估中禁止使用生成式人工智能(AI)生成任何材料或内容。
如有疑问,请在应用课(Applied Class)向导师咨询。切勿在未咨询的情况下自行假设程序需求。
完成本作业将帮助你达成以下 FIT9131 学习成果:
- 按标准面向对象原则设计并实现 Java 程序
- 对 Java 应用进行调试并展示调试流程
- 制定高效且有效的程序测试策略
- 按特定编程标准对代码进行文档化
- 识别并应用封装、抽象、多态等面向对象概念
- 解释并应用可维护性、可读性、模块化等软件工程原则
任务说明
你将编写一个程序,用以评估在澳大利亚农场使用羊驼保护羊群的可行性。先给出背景,再说明程序所需功能。
背景
羊是澳大利亚的重要畜牧业之一,使澳大利亚成为全球主要的羊毛与羊肉生产国。羊场遍布澳大利亚南部(新南威尔士 NSW、维多利亚 VIC、南澳 SA、西澳 WA),从密集的牧场到辽阔的放牧区不等。
捕食者(如狐狸、野狗、野猪、楔尾鹰)给羊场带来巨大损失,不同州捕食压力各异。近年来,一种日益流行的做法是使用羊驼作为护卫。羊驼领地意识强,与羊群融合良好,其存在即可吓退捕食者;羊驼警觉且会挡在捕食者与羊之间。实践表明,羊驼能显著减少幼羊死亡,降低羊群压力并促进生长及羊毛产量。一般一只羊驼可保护约 100 只羊,但推荐两只羊驼搭档护群效果最佳。
然而,羊驼购买/租赁和饲养成本高:食物、兽医、剪毛等都需投入。农民希望了解使用羊驼护卫是否经济可行。
Alpaca Sheep Guards 程序
程序将针对三种保护级别进行模拟,每种各运行 10 次:
- 无羊驼保护
- 单只羊驼保护
- 双羊驼(成对)保护
每次模拟计算一次总成本(捕食损失价值 + 羊驼养护费用)。十次结束后,报告该保护级别的最低、最高及平均总成本。
三个保护级别全部结束后,比较结果,帮助农民选择最经济的方案。
程序启动流程
- 显示欢迎信息。
- 从文件 predators.txt 读取各州捕食者危险因子。文件包含四行,每行表示一个州,内容格式:
- 为每个州创建一个对象,包含:
- 州名
- 捕食者集合(及其危险因子)
- 提示用户输入:
- 农场名称(至少 6 个字符)
- 所在州(NSW / VIC / SA / WA)
- 羊群情况
- 成年羊数量
- 羔羊数量
注意:成羊数 + 羔羊数
此处有一段内容暂不支持显示。
每次模拟的具体步骤
- 计算捕食死亡
- 无保护:按文件中危险因子作为概率,判断每只羊是否被每类捕食者杀死。
- 羔羊死亡概率为成羊的两倍。
- 单羊驼:上述概率 减半。
- 双羊驼:上述概率 降至四分之一。
- 羊驼死亡概率:为对应羊死亡概率的 百分之一,极低。
- 死亡则状态变为 dead,并记录捕食者类型。
- 计算损失价值
- 计算羊驼雇佣与养护费用
- 雇佣费:$500/年(无论羊驼存活与否)
- 养护费:$400–$600 之间均匀随机
- 若羊驼死亡,养护费 减半(雇佣费照收)。
- 计算总成本
每个模拟结束后显示
- 平均总成本
- 最低总成本
- 最高总成本
- 各类动物平均死亡数
- 各捕食者平均致死数
三种保护级别全部完成后显示
- 推荐保护级别:平均总成本最低者
- 最具威胁捕食者:在推荐级别下平均杀死动物数最多的捕食者
- 未造成任何死亡的捕食者(若有)
并将摘要写入文件 alpacaSheepGuardViability.txt:
- 农场名称
- 成羊数量
- 羔羊数量
- 推荐保护级别及其成本
- 预测该级别下的动物损失数
- 最具威胁捕食者
程序与类设计
第 9 周应用课将讨论设计。务必参加。要点:
- 程序需体现 FIT9131 涵盖的面向对象与通用编程概念。
- 仔细选择类、字段、方法及其交互;使用 数组和 ArrayList 存储数据。
- 与导师讨论设计,并记录任何额外假设。
- 你需要在面试中解释设计及所用数据结构。
- 在构造器与设置方法中实行有效性检查,不得使对象进入非法状态。
- 必须处理非法输入,给出错误提示,防止程序崩溃。
- 适当使用异常处理。
评分标准
评分通过面试进行,分配如下:
| 比例 | 内容 |
|---|---|
| 10% | 第 10–11 周 Ed 工作区进度• 第 10 周:Farm 类 & 测试计划(5%)• 第 11 周:类图草稿 + FileIO 类 + 一个 客户端类(5%) |
| 10% | Farm 类测试策略(构造器、toString/显示方法、一个 getter & setter;参数化构造器及 get/set 各做 1 次正、1 次负测试) |
| 10% | 类图、代码质量与面向对象设计质量(符合编码规范、JavaDoc、类/字段/方法设计、状态验证) |
| 10% | 程序功能符合需求 |
| 60% | 面试口头评估 |
不强制使用继承/多态,但合理运用可提高拿到 HD 的机会。
重要提醒
- 必须在 Ed 平台工作区编码,且注明所有引用代码来源。
- 未遵守提交规范将扣分。逾期每天扣 5%(周末也算)。
- 所有代码 必须能编译;否则记 “N”。
口头评估(Interview)
提交后需参加面试,内容包括:
- 解释代码与设计
- 即席修改代码
- 讨论设计决策与备选方案
未参加面试者本作业直接不及格。
面试时间将于第 12 周应用课安排,面试于下一周进行。
提交要求
- 截止时间:5 月 30 日(周五)晚 11:55
- 主类文件 AlpacaSheepGuard.java(含 main())
- 类图(PDF)
- Farm 类测试策略(PDF)
- 在 Ed 平台上传全部代码、类图、测试策略 & 签署的 作业封面(PDF)
- 截止前可多次提交;截止后点击提交即视为迟交并扣分。
抄袭与串通
所有代码将进行相似度检测,与历年或同届作品重合将进一步调查。若确认抄袭/串通,处罚可能包括:
- 作业零分
- 学院级纪律处分
请务必独立编程、避免复制粘贴,遵守 Monash 相关政策。