面向对象类的设计

 设计一个类替代数组可以做的事
    充当一个小容器 能添加元素  获取元素  删除元素
package com.sum1;

public class ArrayBox {

    //设计一个类替代数组可以做的事
    //充当一个小容器 能添加元素  获取元素  删除元素 
    //属性
    public int[] elementData = new int[10];//用数组来存储元素
    int size=0;//记录数组中存放元素的个数
    
    //方法
    //设计一个方法  该方法删除指定位置的元素
    public void remove(int index){
        int BeDel = elementData[index];
        for(int i=index;i<size-1;i++){
            elementData[i] = elementData[i+1];
        }
        elementData[--size]=0;
    }
    //设计一个方法  该方法可以判断元素是否存在
    public void isExist(int index){
        if(index<0 || index >= size){//如果index不满足条件  则抛出异常
            throw new BoxIndexOutOfBoundsException("index:"+index+"size:"+size);
        }
    }
    
    //设计一个方法  该方法比较数组长度与用户需要长度
    public void ensureCapacity(int minCapacity){
        if(minCapacity > elementData.length){//数组长度比用户需要的小  则需要进行扩容
            this.enLarge(minCapacity);
        }
    }
    //设计一个方法  该方法扩大数组的容量
    public void enLarge(int minCapacity){
        int oldCapacity = elementData.length;
        int newCapacity = oldCapacity + (oldCapacity>>1);//先设置新的数组长度为原先的1.5倍
        if(newCapacity < minCapacity){//如果还未达到用户需要的最小长度,则直接使用用户需要的最小长度
            newCapacity = minCapacity;
        }
        elementData = this.CopyOfOld(elementData,newCapacity);
    }
    //设计一个方法,将旧数组的元素全部搬运到新数组中来,将生成的新数组返回
    public int[] CopyOfOld(int[] oldArray,int newCapacity){//传递两个参数,一个是旧数组,一个是新数组的长度
        int[] newArray = new int[newCapacity];//定义一个新数组
        for(int i=0;i<oldArray.length;i++){//搬运数组元素
            newArray[i] = oldArray[i];
        }
        return newArray;
    }
    //设计一个方法  该方法能添加元素
    public boolean add(int element){//方法执行后返回添加完元素后的数组
        //判断比较数组长度与用户需要长度
        ensureCapacity(size+1);//有效元素长度加1
        elementData[size++] = element;//将用户传递参数添加到数组中
        return true;
    }
    //设计一个方法  该方法能获得数组元素
    public int get(int index){
        //判断index位置是否有元素存在
        this.isExist(index);
        return elementData[index];
    }
    //设计一个方法  该方法能删除数组中元素,返回删除元素后的数组
    public int[] delete(int index){
        //判断index位置是否有元素存在
        this.isExist(index);
        //调用方法删除元素
        this.remove(index);
        return elementData;
    }
}

 

package com.sum1;

public class BoxIndexOutOfBoundsException extends RuntimeException{
    public BoxIndexOutOfBoundsException(){}
    public BoxIndexOutOfBoundsException(String msg){}
}

 

  

package com.sum1;

public class Test {
    public static void main(String[] args) {
        ArrayBox array = new ArrayBox();//创建一个ArrayBox的对象
        for(int i=1;i<=5;i++){//执行add()方法
        array.add(i*10);
        }
        System.out.println(array.size);
        int e = array.get(1);//执行获取元素方法
        System.out.println(e);
        array.delete(2);//执行删除元素方法
        for(int i=0;i<array.size;i++){
            System.out.print(array.elementData[i]+" ");
        }
    }
}

 

 

posted @ 2020-03-03 21:06  海中的小顽强  阅读(398)  评论(0)    收藏  举报