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

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

相关文章
|
存储 监控 数据可视化
小白带你学习linux的ELK日志收集系统
小白带你学习linux的ELK日志收集系统
868 0
|
9月前
|
缓存 安全 C++
C盘爆满电脑卡?3个简单技巧+1个便捷工具,小白也能轻松清理
电脑使用久了,C盘常因系统文件、软件安装和临时缓存堆积而空间不足,导致运行卡顿甚至蓝屏。本文教你识别C盘“隐形垃圾”,并提供3个手动清理技巧和1个实用工具(CCleaner),轻松释放空间,提升电脑速度,延长使用寿命。定期清理C盘,让电脑始终保持流畅运行。
1180 0
|
人工智能 开发者
通义千问三款主力模型再降价,最高降幅85%
通义千问三款主力模型再降价,最高降幅85%
7864 12
通义千问三款主力模型再降价,最高降幅85%
|
开发框架 人工智能 Java
破茧成蝶:阿里云应用服务器让传统 J2EE 应用无缝升级 AI 原生时代
本文详细介绍了阿里云应用服务器如何助力传统J2EE应用实现智能化升级。文章分为三部分:第一部分阐述了传统J2EE应用在智能化转型中的痛点,如协议鸿沟、资源冲突和观测失明;第二部分展示了阿里云应用服务器的解决方案,包括兼容传统EJB容器与微服务架构、支持大模型即插即用及全景可观测性;第三部分则通过具体步骤说明如何基于EDAS开启J2EE应用的智能化进程,确保十年代码无需重写,轻松实现智能化跃迁。
947 42
|
12月前
|
容器
HarmonyOS NEXT仓颉开发语言实战案例:健身App
本期分享一个健身App首页的布局实现,顶部采用Stack容器实现重叠背景与偏移效果,列表部分使用List结合Scroll实现可滚动内容。代码结构清晰,适合学习HarmonyOS布局技巧。
|
9月前
|
IDE 开发工具 开发者
鸿蒙应用开发从入门到实战(三):第一个鸿蒙应用
本教程详细介绍如何创建并运行第一个HarmonyOS项目,涵盖DevEco Studio项目创建流程、项目目录结构解析以及三种运行方式(预览、模拟器、真机调试),帮助开发者快速入门鸿蒙应用开发。
441 7
|
9月前
|
数据采集 JSON API
微店商品列表API接口开发指南:从零到实战
微店商品列表API(vdian.shop.item.list.get)用于获取店铺商品数据,支持分页、签名认证,返回JSON格式。适用于商品同步、竞品分析、多平台展示及数据清洗。提供Python请求示例,便于快速接入。
|
10月前
|
供应链 API
借助快手电商 API,快手小店商品库存周转率提升
快手小店通过整合电商API,实现智能库存管理,提升周转效率。实时同步销售数据、动态补货与智能预测系统,助力商家降低滞销与资金占用,达成“低库存、高周转”目标。
|
缓存 监控 Java
大厂性能优化的10大顶级方案 (万字图文史上最全)
本文详细介绍了大厂性能优化的10大顶奢方案,涵盖代码优化、缓存优化、异步优化、多线程优化、前端优化、微服务架构优化、硬件升级、数据库优化、过载保护优化以及度量与监控系统等方面。每部分不仅提供了理论知识,还结合实际案例和代码示例,帮助读者全面理解和应用这些优化策略。文章还特别强调了架构设计的重要性,指出架构师需要具备多方面的知识和技能,包括硬件、软件、网络协议、分布式知识等,以应对复杂的技术挑战。最后,作者尼恩分享了自己多年的经验,提供了丰富的技术资源和实战指导,助力读者在面试和工作中取得成功。
大厂性能优化的10大顶级方案 (万字图文史上最全)
|
Unix
bat批处理命令之Start的详细用法\批处理打开指定的应用程序\批处理最大化\最小化打开程序
bat批处理命令之Start的详细用法\批处理打开指定的应用程序\批处理最大化\最小化打开程序
4340 0

热门文章

最新文章