1.实验名称 类与对象(1)
2.实验目的(1)学会类的实现、类的使用和用UML类图描述类之间的关系,能够对实际的案例进行分析和建模,并画出类图。(2)能够根据类图进行编码实现。(3)理解构造方法的概念和重载的概念,能在程序设计中灵活应用。(4)巩固数组在面向对象程序设计中的运用;
3.训练知识点集群(1)类的语法(类的成员变量和成员方法、构造方法、成员变量的getter、setter方法等)(2)类图(单个类的类图和类之间的关系)(3)使用数组构造线性表
4.实验内容(1)计算某长方体或正方体盒子的体积(2)课程融合之线性表(3)定义一个类MyArrayList,用数组模拟实现数据结构中线性表的基本功能,该类中最少包含的属性有:data(String[])、size(int)、CAPACITY(int);(4)该类中方法最少包括线性表的初始化、插入 、查找、遍历线性表、删除、返回线性表长度、线性表判空、清空线性表、替换、获取元素、判断线性表中是否包含某个元素、反向查找、末尾插入元素;定义一个主类,在主方法中创建线性表类对象并调用上述方法、完成功能演示。
一 计算某长方体或正方体盒子的体积:
package TestPillar; import java.util.Scanner; class square{ private float r; public square(float r){ this.r=r; }//若用无参构造函数则需要使用setR和getR函数。 public float Area(){ return r*r; } } class Pillar{ private square bottom; private float height; public Pillar(square bottom,float height){ this.bottom=bottom; this.height=height; } public float Volume(){ return bottom.Area()*height; } } public class TestPillar{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); System.out.println("请输入正方形的半径"); float r=sc.nextFloat(); square c=new square(r); System.out.println("请输入柱体的高"); r = sc.nextFloat(); Pillar p=new Pillar(c,r); System.out.println(p.Volume()); } }
二 课程融合之线性表:
package MyArrayList; import java.util.Scanner; class MyArrayList { //成员变量 public final int CAPACITY = 100; //线性表的长度 private String[] data = new String[CAPACITY]; private int size = 0; //线性表里实际存放的数据长度 //用字符串数组构造线性表 public MyArrayList(int size) { this.size=size; Scanner sc2=new Scanner(System.in); for(int i=0; i<size; i++) { data[i]=sc2.next(); } } //遍历输出线性表中的所有元素 格式:{张三,李四,王五} public void printAll() { System.out.print("{"); for(int i=0; i<size; i++) { System.out.print(data[i]); if(i<size-1) { System.out.print(","); } } System.out.print("}"); } //返回当前线性表中的元素个数 public int size() { System.out.println(size); return size; } //将一个新元素e插入到线性表中索引号为Index的位置 public void add(int index, String e) { for(int i=size-1; i>=index; i--) { data[i+1] = data[i]; } data[index] = e; size++; } //将一个新元素e添加到表尾,只有一个参数,只提供了插入的元素,没有提供位置,默认插入到最后 public void add(String e) { add(size, e); } //从线性表中删除指定位置index的元素,并将删除的元素返回 public void remove(int index) { String e = data[index]; for(int i=index; i<size-1; i++) { data[i] = data[i+1]; } data[size-1] = null; size--; System.out.println(e); } //清空线性表 public void clear() { data = new String[CAPACITY]; size = 0; } //查找 public void Search(String e){ int i; for( i=0;i<size;i++){ if(data[i].equals(e)){ System.out.println(i); } } } //交替 public void replace(int i,int j){ String e; e=data[i]; data[i]=data[j]; data[j]=e; } //判空 public void isEmpty(){ if(size==0) System.out.println("yes"); else System.out.println("no"); } //获取元素 public void get(int i){ System.out.println(data[i]); } //判断是否有某个元素 public boolean panduan(String e){ int i; for(i=0;i<size;i++){ if(data[i].equals(e)){ return true; } }return false; } //反向查找 public void hcraeseR(String e){ int i; for(i=size-1;i>=0;i--){ if(data[i].equals(e)){ System.out.println(i);} } } } public class TestArrayList{ public static void main(String[] args) { System.out.println("请输入实际数据长度与各个元素的值"); Scanner sc1=new Scanner(System.in); int size=sc1.nextInt(); MyArrayList data=new MyArrayList(size); System.out.println("遍历输出线性表"); data.printAll(); System.out.println("输出线性表的长度"); data.size(); System.out.println("将一个新元素e插入到线性表中索引号为Index的位置"); String e=sc1.next(); int index=sc1.nextInt(); data.add(index,e); data.printAll(); System.out.println("将一个新元素e添加到表尾,只有一个参数,只提供了插入的元素,没有 提供位置,默认插入到最后"); e=sc1.next(); data.add(e); data.printAll(); System.out.println("从线性表中删除指定位置index的元素,并将删除的元素返回"); index=sc1.nextInt(); data.remove(index); data.printAll(); System.out.println("查找"); e=sc1.next(); data.Search(e); System.out.println("交替"); index=sc1.nextInt(); int j=sc1.nextInt(); data.replace(index,j); data.printAll(); System.out.println("获取元素"); j=sc1.nextInt(); data.get(j); System.out.println("判断是否有某个元素"); e=sc1.next(); data.panduan(e); System.out.println(data.panduan(e)); System.out.println("反向查找"); e=sc1.next(); data.hcraeseR(e); System.out.println("清空线性表"); data.clear(); System.out.println("判空"); data.isEmpty(); } }
TestArrayList类最后用which语句更好。