zoukankan      html  css  js  c++  java
  • 吴裕雄--天生自然JAVA面向对象高级编程学习笔记:宠物商店实例分析

    interface Pet{    // 定义宠物接口
        public String getName() ;
        public String getColor() ;
        public int getAge() ;
    }
    class Cat implements Pet{    // 猫是宠物,实现接口
        private String name ;    // 宠物名字
        private String color ;    // 宠物颜色
        private int age ;        // 宠物年龄
        public Cat(String name,String color,int age){
            this.setName(name) ;
            this.setColor(color) ;
            this.setAge(age) ;
        }
        public void setName(String name){
            this.name = name ;
        }
        public void setColor(String color){
            this.color = color;
        }
        public void setAge(int age){
            this.age = age ;
        }
        public String getName(){
            return this.name ;
        }
        public String getColor(){
            return this.color ;
        }
        public int getAge(){
            return this.age ;
        }
    };
    class Dog implements Pet{    // 狗是宠物,实现接口
        private String name ;    // 宠物名字
        private String color ;    // 宠物颜色
        private int age ;        // 宠物年龄
        public Dog(String name,String color,int age){
            this.setName(name) ;
            this.setColor(color) ;
            this.setAge(age) ;
        }
        public void setName(String name){
            this.name = name ;
        }
        public void setColor(String color){
            this.color = color;
        }
        public void setAge(int age){
            this.age = age ;
        }
        public String getName(){
            return this.name ;
        }
        public String getColor(){
            return this.color ;
        }
        public int getAge(){
            return this.age ;
        }
    };
    class PetShop{    // 宠物商店
        private Pet[] pets ;    // 保存一组宠物
        private int foot ;
        public PetShop(int len){
            if(len>0){
                this.pets = new Pet[len] ;    // 开辟数组大小
            }else{
                this.pets = new Pet[1] ;    // 至少开辟一个空间
            }
        }
        public boolean add(Pet pet){    // 增加的是一个宠物
            if(this.foot<this.pets.length){
                this.pets[this.foot] = pet ;    // 增加宠物
                this.foot ++ ;
                return true ;
            }else{
                return false ;
            }
        }
        public Pet[] search(String keyWord){
            // 应该确定有多少个宠物符合要求
            Pet p[] = null ;
            int count = 0 ;    // 记录下会有多少个宠物符合查询结果
            for(int i=0;i<this.pets.length;i++){
                if(this.pets[i]!=null){        // 表示此位置有宠物
                    if(this.pets[i].getName().indexOf(keyWord)!=-1
                        ||this.pets[i].getColor().indexOf(keyWord)!=-1){
                        count++ ;    // 修改查找到的记录数
                    }
                }
            }
            p = new Pet[count] ;    // 开辟指定的大小空间
            int f = 0 ;    // 增加元素的位置标记
            for(int i=0;i<this.pets.length;i++){
                if(this.pets[i]!=null){        // 表示此位置有宠物
                    if(this.pets[i].getName().indexOf(keyWord)!=-1
                        ||this.pets[i].getColor().indexOf(keyWord)!=-1){
                        p[f] = this.pets[i] ;
                        f++ ;
                    }
                }
            }
            return p ;
    
        }
    };
    public class PetShopDemo{
        public static void main(String args[]){
            PetShop ps = new PetShop(5) ;    // 五个宠物
            ps.add(new Cat("白猫","白色的",2)) ;    // 增加宠物,成功
            ps.add(new Cat("黑猫","黑色的",3)) ;    // 增加宠物,成功
            ps.add(new Cat("花猫","花色的",3)) ;    // 增加宠物,成功
            ps.add(new Dog("拉步拉多","黄色的",3)) ;    // 增加宠物,成功
            ps.add(new Dog("金毛","金色的",2)) ;    // 增加宠物,成功
            ps.add(new Dog("黄狗","黑色的",2)) ;    // 增加宠物,失败
            print(ps.search("黑")) ;
        }
        public static void print(Pet p[]){
            for(int i=0;i<p.length;i++){
                if(p[i]!=null){
                    System.out.println(p[i].getName() + "," + p[i].getColor()
                        +"," + p[i].getAge()) ;
                }
            }
        }
    };
  • 相关阅读:
    5.4 省选模拟赛 修改 线段树优化dp 线段树上二分
    一本通 高手训练 1782 分层图 状压dp
    luogu P3830 [SHOI2012]随机树 期望 dp
    5.2 省选模拟赛 或许 线型基
    luogu P4562 [JXOI2018]游戏 组合数学
    一本通 高手训练 1781 死亡之树 状态压缩dp
    luogu P4726 【模板】多项式指数函数 多项式 exp 牛顿迭代 泰勒展开
    4.28 省选模拟赛 负环 倍增 矩阵乘法 dp
    HDU 1756 Cupid's Arrow 计算几何 判断一个点是否在多边形内
    一本通 高手训练 1763 简单树 可持久化线段树 树链刨分 标记永久化
  • 原文地址:https://www.cnblogs.com/tszr/p/12153257.html
Copyright © 2011-2022 走看看