课时143:综合实战:宠物商店

简介: 宠物商店系统通过定义宠物接口(`Pet`),实现了宠物的上架、下架和查询功能。具体流程如下:1. **定义宠物标准**:通过接口 `Pet` 定义宠物的基本属性,如名字和颜色。2. **宠物商店类**:`Petshop` 类使用链表保存多个宠物信息,提供添加、删除和关键字查询功能。3. **实现具体宠物类**:如 `Cat` 和 `Dog` 类实现 `Pet` 接口,定义具体的宠物属性和行为。4. **操作演示**:通过 `JavaDemo` 类演示如何开店、添加宠物并进行查询。总结:该系统以接口为标准,确保所有符合标准的对象可以灵活管理,体现了面向接口编程的优势。

课时143:综合实战:宠物商店

1.1宠物商店具体流程


假设有一个宠物商店里面可以出售各种宠物,要求可以实现宠物的上架处理下架处理也可以根据关键字查询出宠物的信息。


例子:王静没钱了,养只林强行吗?当然不行,因为林强不是宠物,亦或者能养但是不能在商店里买卖。


例子2:一般拿到小狗会说“小狗你叫什么名字”小狗则回应“汪汪”“小狗你什么颜色的”小狗回应“我是黄色的”。由此可见,在整个流程不关注东西怎么来的,而关注它是什么。宠物商店能放狗、猫、鱼,如果这些都能放进宠物商店,为什么林强不能放进去,因为林强是人不符合宠物标准。


所以宠物商店里面严格来讲是有一个宠物标准:接口( Interface ),而狗、猫、鱼都是符合宠物标准,才能在商店里出售。宠物商店与宠物标准有直接的联系,而宠物标准有多种实现的类型。中间为了描述“多”的概念,需要设计专门保存数据的链表。


对于能保存多种信息而言就是链表的操作形式,宠物商品可以有多个宠物种类就是链表实现子类,这样可以实现一对多的关系。这便是动态对象数组。

image.png

(1)定义出宠物的标准

interface Pet { // 定义宠物标准
public String getName () ;  // 获得名字
publie String getColor () ;  // 获得颜色
}

(2)宠物商店以宠物的标准为主

class Petshop  {  // 宠物商店
private ILink<pet>allPets=new LinkImpl<Pet> () ; // 保存多个宠物信息
public void add (Pet pet)  {  //追加宠物,商品上架
this.allPets.add(pet) ;{ //集合中保存对象
}
public void delete(Pet pet)  {
this.allPets.remove(pet) ;
}
public ILink<Pet> search(String keyword){
ILink<pet>searchResult = new LinkImpl<Pet> () ; //保存查询结果
Object result [ ]= this.allPets.toArray () ;  //获取全部数据
If (result ! = null) {
for (object obj : result)  {
If(pet.getName().contains(keyword) II 
pet.getColor().contains(keyWord)  {
searchResult.add(pet) ;  // 保存查询结果
               }
           }
      }
      return searchResult ;
}
}

(3)根据宠物的标准来定义宠物信息

定义宠物猫:

class Cat implements Pet { //实现宠物标准
private String name ;
private String color;
public Cat(string name,String color) {
this.name = name ;
this.color =color ;
  }
public String getName () {
Return this.name ;
  }
public String getColor ()
return this.color ;
  }
public boolean equals (Object obj ) {
if (obj ==null) {
Return False ;
      }
      If (!(obj instanceof Cat ) )  {
return false ;
      } 
if (this = = obj) {
return true ;
      }
Cat cat= (Cat) obj ;
Return this.name.equals (cat.name) && this.color.equals(cat.name) ; this.color.equals(cat.color);
   }
public String toString () {
return"【宠物猫】名字:"+this.name +"、颜色:"+ this. Color ;
   }
}
public class JavaDemo {

定义宠物狗:

class Dog implements Pet { //实现宠物标准
private String name ;
private String color;
public Dog (string name,String color) {
this.name = name ;
this.color =color ;
  }
public String getName () {
Return this.name ;
  }
public String getColor ()
return this.color ;
  }
public boolean equals (Object obj ) {
if (obj ==null) {
Return False ;
      }
      If (!(obj instanceof Cat ) )  {
return false ;
      } 
if (this = = obj) {
return true ;
      }
Dog dog= (Dog) obj ;
Return this.name.equals (dog.name) && this.color.equals(dog.name) ; this.color.equals(dog.color);
   }
public String toString () {
return"【宠物狗】名字:"+this.name +"、颜色:"+ this. Color ;
   }
}
public class JavaDemo {

(4)实现宠物商店的操作

public class JavaDemo {
public static void main(String args [] )  {
Petshop shop = new PetShop ()  ;// 开店
shop.add(new Dog("黄斑狗","绿色") ) ;
shop.add(new Cat("小强猫","深绿色") ) ;
shop.add(new Cat("黄猫","深色") ) ;
shop.add(new Dog("黄狗""黄色") ) ;
shop.add(new Dog("斑点狗""灰色") ) ;
Object result [] = shop.search("黄").toArray() ;
for (object obj :result) {
System.out.println(obj) ;
}
}
}

代码执行结果:

  image.png

(5)总结

通过这样的程序代码发现接口对于标准的意义,整个代码重要的过程都在接口上,所有的程序开发都是以接口为标准进行的,这样再进行后期程序处理的时候就可以非常的灵活,只要符合标准的对象都可以保存。

相关文章
|
1月前
|
缓存 安全 C++
C盘爆满电脑卡?3个简单技巧+1个便捷工具,小白也能轻松清理
电脑使用久了,C盘常因系统文件、软件安装和临时缓存堆积而空间不足,导致运行卡顿甚至蓝屏。本文教你识别C盘“隐形垃圾”,并提供3个手动清理技巧和1个实用工具(CCleaner),轻松释放空间,提升电脑速度,延长使用寿命。定期清理C盘,让电脑始终保持流畅运行。
268 0
|
1月前
|
人工智能 数据可视化 测试技术
Coze平台指南(3):核心功能-创建智能体与设计角色
Coze 智能体是由大语言模型驱动,通过提示词设定角色,并借助知识库、插件和工作流扩展能力,以执行特定任务的AI助手。对测试工程师而言,精心设计的智能体可显著提升测试效率与质量,关键是要准确理解测试需求,并将其转化为智能体的角色设定和功能配置。建议进一步学习知识库与工作流,以深化应用。
|
人工智能 开发者
通义千问三款主力模型再降价,最高降幅85%
通义千问三款主力模型再降价,最高降幅85%
1997 12
通义千问三款主力模型再降价,最高降幅85%
|
21天前
|
机器学习/深度学习 人工智能 数据安全/隐私保护
阿里云 Qwen3 全栈 AI 模型:技术解析、开发者实操指南与 100 万企业落地案例
阿里云发布Qwen3全栈AI体系,推出Qwen3-Max、Qwen3-Next等七大模型,性能全球领先,开源生态超6亿次下载。支持百万级上下文、多模态理解,训练成本降90%,助力企业高效落地AI。覆盖制造、金融、创作等场景,提供无代码与代码级开发工具,共建超级AI云生态。
352 6
|
11天前
|
数据采集 弹性计算 供应链
阿里云服务器ECS抢占式实例介绍:灵活、高效、低成本的选择
阿里云ECS抢占式实例价格优惠,最高可省90%,按小时计费,适合无状态、容错性强的应用,如大数据分析、测试等。但存在被释放风险,不适用于数据库等有状态服务,需注意数据备份与使用限制。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
通用人工智能的标准是什么,与大模型有何区别?发展到什么程度了?
本文深入解析2025年迅猛发展的通用人工智能(AGI),梳理其核心概念、关键技术与现实应用,对比当前主流大模型的差异,并探讨普通人如何在日常生活与工作中体验和应用这一颠覆性技术,展望AGI带来的社会变革与伦理挑战。
|
Web App开发 Python
【Chromedriver】下载、安装及配置
简介:【Chromedriver】下载、安装及配置
10676 60
【Chromedriver】下载、安装及配置
|
9月前
|
消息中间件 存储 监控
活动实践 | 快速体验云消息队列RocketMQ版
本方案介绍如何使用阿里云消息队列RocketMQ版Serverless实例进行消息管理。主要步骤包括获取接入点、创建Topic和订阅组、收发消息、查看消息轨迹及仪表盘监控。通过这些操作,用户可以轻松实现消息的全生命周期管理,确保消息收发的高效与可靠。此外,还提供了消费验证、下载消息等功能,方便用户进行详细的消息处理与调试。
|
7月前
|
机器学习/深度学习 传感器 数据采集
基于机器学习的数据分析:PLC采集的生产数据预测设备故障模型
本文介绍如何利用Python和Scikit-learn构建基于PLC数据的设备故障预测模型。通过实时采集温度、振动、电流等参数,进行数据预处理和特征提取,选择合适的机器学习模型(如随机森林、XGBoost),并优化模型性能。文章还分享了边缘计算部署方案及常见问题排查,强调模型预测应结合定期维护,确保系统稳定运行。
721 0
|
12月前
|
监控 Linux Shell