Java 面向对象编程实战:CD 与计算机数据交互案例
·
一、案例背景
本案例包含三个核心类:
CD类:模拟光盘,负责存储数据、设置数据大小、读写数据;Computer类:模拟计算机,负责插入光盘、复制数据、修改数据、回写数据;User类:程序入口,模拟用户操作,完成整个数据交互流程。
目标是:光盘数据 → 计算机复制 → 数据增值 → 回写到光盘,同时补全模板中的缺失代码,让程序完整运行。
二、完整代码实现
1. CD.java(光盘类)
public class CD {
int size; // 光盘数据容量
int content[]; // 存储光盘数据
// 设置光盘容量,同时初始化数据数组
public void setSize(int size) {
this.size = size;
content = new int[size];
}
// 获取光盘容量
public int getSize() {
return size;
}
// 获取光盘中的数据
public int [] getContent() {
return content;
}
// 向光盘写入数据(取两个数组的最小长度赋值)
public void setContent(int [] b) {
int min = Math.min(content.length, b.length);
for(int i = 0; i < min; i++)
content[i] = b[i];
}
}
2. Computer.java(计算机类)
public class Computer {
int data[]; // 计算机存储的数据
CD includeCD; // 计算机中插入的光盘对象
// 插入光盘:将光盘对象赋值给计算机的光盘属性
public void putCD(CD cd) {
includeCD = cd;
int size = includeCD.getSize();
data = new int[size]; // 根据光盘容量初始化计算机数据数组
}
// 将光盘数据复制到计算机
void copyToComputer() {
int [] b = includeCD.getContent();
int min = Math.min(data.length, b.length);
for(int i = 0; i < min; i++) {
data[i] = b[i];
}
}
// 给计算机中的每个数据增加指定数值
public void addData(int m) {
for(int i = 0; i < data.length; i++) {
data[i] = data[i] + m;
}
}
// 将计算机修改后的数据回写到光盘
void copyToCD() {
includeCD.setContent(data);
}
// 打印计算机中的数据
void showData() {
for(int i = 0; i < data.length; i++) {
System.out.printf("%3d", data[i]);
}
}
}
3. User.java(用户测试类,补全模板代码)
public class User {
public static void main(String args[]) {
CD dataCD = new CD();
int b[] = {1,2,3,4,5,6,7,8};
dataCD.setSize(b.length);
dataCD.setContent(b);
int a[] = dataCD.getContent();
System.out.println("dataCD 上的内容:");
for(int i = 0; i < a.length; i++)
System.out.printf("%3d", a[i]);
Computer computerIMB = new Computer();
// 【代码 1】将 dataCD 传入 putCD 方法,插入光盘
computerIMB.putCD(dataCD);
System.out.println("\n 将 dataCD 的数据复制到计算机:computerIMB.");
// 【代码 2】调用方法复制数据到计算机
computerIMB.copyToComputer();
System.out.println("computerIMB 上的内容:");
computerIMB.showData();
int m = 12;
System.out.println("\ncomputerIMB 将每个数据增加"+m);
computerIMB.addData(m);
System.out.println("computerIMB 将增值后的数据复制到 CD:dataCD");
// 【代码 3】调用方法将数据回写到光盘
computerIMB.copyToCD();
System.out.println("\ndataCD 上的内容:");
a = dataCD.getContent();
for(int i = 0; i < a.length; i++)
System.out.printf("%3d", a[i]);
}
}
三、代码补全解析(核心模板代码)
- 代码 1:
computerIMB.putCD(dataCD);作用:调用计算机的putCD方法,将dataCD这个光盘对象的引用传递给方法参数,完成「插入光盘」的操作。 - 代码 2:
computerIMB.copyToComputer();作用:调用方法,把插入的光盘中的数据,复制到计算机的内存中。 - 代码 3:
computerIMB.copyToCD();作用:调用方法,把计算机修改后的数据,回写到插入的光盘中。
四、核心知识点讲解
1. 类与对象的基本使用
CD和Computer是类(模板),dataCD、computerIMB是对象(实例);- 通过
new 类名()创建对象,比如CD dataCD = new CD();,对象可以调用类中的方法和属性。
2. 对象引用传递(重点)
Java 中方法传递对象时,传递的是引用(内存地址),不是复制对象本身。 比如 computerIMB.putCD(dataCD); 中:
dataCD是光盘对象的引用;- 传递给
putCD方法后,Computer中的includeCD和dataCD指向同一个光盘对象; - 后续修改光盘数据,双方都会同步变化,这是数据能回写成功的核心原因。
3. 方法的封装与调用
- 每个类都封装了自己的功能:
CD管数据存储,Computer管数据处理; - 对象之间通过调用方法协作:计算机插入光盘、复制数据、回写数据,都是方法调用实现的。
4. 数组数据传递
- 数组和对象一样,传递的也是引用;
- 案例中通过
getContent()和setContent()方法,完成数组数据的读写,保证数据安全。
五、程序运行结果
dataCD 上的内容:
1 2 3 4 5 6 7 8
将 dataCD 的数据复制到计算机:computerIMB.
computerIMB 上的内容:
1 2 3 4 5 6 7 8
computerIMB 将每个数据增加12
computerIMB 将增值后的数据复制到 CD:dataCD
dataCD 上的内容:
13 14 15 16 17 18 19 20
更多推荐

所有评论(0)