课时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)总结

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

相关文章
|
6月前
|
缓存 安全 C++
C盘爆满电脑卡?3个简单技巧+1个便捷工具,小白也能轻松清理
电脑使用久了,C盘常因系统文件、软件安装和临时缓存堆积而空间不足,导致运行卡顿甚至蓝屏。本文教你识别C盘“隐形垃圾”,并提供3个手动清理技巧和1个实用工具(CCleaner),轻松释放空间,提升电脑速度,延长使用寿命。定期清理C盘,让电脑始终保持流畅运行。
932 0
|
人工智能 开发者
通义千问三款主力模型再降价,最高降幅85%
通义千问三款主力模型再降价,最高降幅85%
5279 12
通义千问三款主力模型再降价,最高降幅85%
|
10月前
|
开发框架 人工智能 Java
破茧成蝶:阿里云应用服务器让传统 J2EE 应用无缝升级 AI 原生时代
本文详细介绍了阿里云应用服务器如何助力传统J2EE应用实现智能化升级。文章分为三部分:第一部分阐述了传统J2EE应用在智能化转型中的痛点,如协议鸿沟、资源冲突和观测失明;第二部分展示了阿里云应用服务器的解决方案,包括兼容传统EJB容器与微服务架构、支持大模型即插即用及全景可观测性;第三部分则通过具体步骤说明如何基于EDAS开启J2EE应用的智能化进程,确保十年代码无需重写,轻松实现智能化跃迁。
748 42
|
Web App开发 Python
【Chromedriver】下载、安装及配置
简介:【Chromedriver】下载、安装及配置
11213 60
【Chromedriver】下载、安装及配置
|
9月前
|
容器
HarmonyOS NEXT仓颉开发语言实战案例:健身App
本期分享一个健身App首页的布局实现,顶部采用Stack容器实现重叠背景与偏移效果,列表部分使用List结合Scroll实现可滚动内容。代码结构清晰,适合学习HarmonyOS布局技巧。
|
6月前
|
IDE 开发工具 开发者
鸿蒙应用开发从入门到实战(三):第一个鸿蒙应用
本教程详细介绍如何创建并运行第一个HarmonyOS项目,涵盖DevEco Studio项目创建流程、项目目录结构解析以及三种运行方式(预览、模拟器、真机调试),帮助开发者快速入门鸿蒙应用开发。
331 7
|
7月前
|
人工智能 缓存 JavaScript
Function AI 助力用户自主开发 MCP 服务,一键上云高效部署
在 AI 与云原生融合的趋势下,开发者面临模型协同与云端扩展的挑战。MCP(模型上下文协议)提供统一的交互规范,简化模型集成与服务开发。Function AI 支持 MCP 代码一键上云,提供绑定代码仓库、OSS 上传、本地交付物部署及镜像部署等多种构建方式,助力开发者高效部署智能服务,实现快速迭代与云端协同。
572 22
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
通用人工智能的标准是什么,与大模型有何区别?发展到什么程度了?
本文深入解析2025年迅猛发展的通用人工智能(AGI),梳理其核心概念、关键技术与现实应用,对比当前主流大模型的差异,并探讨普通人如何在日常生活与工作中体验和应用这一颠覆性技术,展望AGI带来的社会变革与伦理挑战。
2340 5
|
8月前
|
人工智能 安全 Serverless
企业AI落地实践(三):使用 AI 网关解决 AI Agent 与 LLM 的交互挑战
无论是编码方式构建 AI Agent,还是可视化流程式构建 AI Agent,一旦脱离了 LLM,就不存在 AI 一说了。所以 AI Agent 如何合理地、生产级地与 LLM 结合,将是我们今天文章的核心内容。
956 17
|
存储 弹性计算 安全
课时23:案例分享——钉钉
钉钉作为企业级产品,采用SaaS平台技术,依托阿里云的ECS、OSS等服务,实现快速部署与客户需求的高效适应。其数据存储于阿里云RDS中,确保安全性和可靠性,并通过高强度加密保障信息传输安全。阿里云的安全防护措施为钉钉提供了坚实后盾,使其能专注于优化和创新,提升用户体验。
366 0

热门文章

最新文章