课时35:自身关联

简介: 今天我分享的是关于编程中引用应用的自身关联分析。主要分为以下三部分。1. 关系完善思路探讨2. 代码实现过程演示3. 实际应用概念解析

课时35:自身关联

 

摘要:今天我分享的是关于编程中引用应用的自身关联分析。主要分为以下三部分。

1. 关系完善思路探讨

2. 代码实现过程演示

3. 实际应用概念解析

 

01. 关系完善思路探讨

 

image.png

接下来进行引用应用分析。在已确定人与车的关系基础上,进一步完善相关操作。以人有孩子为例,孩子成年后也可能拥有车。若采用为每个辈分都添加一个特定“位”的设计方法(如孩子位、孙子位等),当涉及多代时,这种方式不仅繁琐,且每个“位”结构相同。实际上,孩子也是人,若孩子是人,那么孩子就自动具备人拥有车( Car 属性)的可能性,因为程序关注的是“人能开车”这一关键属性。

在设计中,一个人可能有多个孩子,由于一个人可能生育多个子女或领养孩子,所以这种关系应使用数组结构来描述。因此,在定义变量时,应使用“ Children ”(复数形式)来表示一个人拥有的多个孩子,以体现这种实际情况。

 

02. 代码实现过程演示

  image.png

image.png


在代码实现方面,首先在类中定义“Children”相关内容。例如,使用“ Return this.children ”来获取相关数据。然后创建孩子对象,如“ Person childA = new Person ”,假设孩子“林强” 18 岁,“郭仁义” 19 岁。为孩子设置车的属性,采用匿名对象的方式,如“ ChildA.car = new Car("BMW X1\ ”)”(价值约 30 多万),“ ChildB.car = new Car ("法拉利\”)”(价值约 150 万)。

通过这些操作,建立了人有孩子,孩子有车的关系。若要根据人找到所有孩子以及孩子对应的汽车,可以通过“ GetChildren ”方法(返回类型为数组),使用 For 循环遍历数组,如“ for (int x = 0; x < person.getChildren().length; x++ )”,通过“ person.getChildren()[x].getInfo() ”获取孩子信息,通过“ person.getChildren()[x].getCar().getInfo() ”获取孩子车的信息。

代码如下:

Class Car {
private string name ;
private double price ;
private Person person ; //车应该属于一个人
public Car(String name,double price){
this.name = name ;
this.price = price ;
}   
public void setPerson(Person person) {
this.person = person ;
public Person getPerson(){
return this.person ;
}
public String getInfo() {
return "汽车品牌型号:"+ this.name +”、汽车价值:”+ this.price”
}
}

public class ArrayDemo (
public static void main(Stiing args[]) {
// 第一步:声明对象并且设置彼此的关系
Person person = new Person("吴硕",29) ;
Person childA = new Person("林强",18) ;
Person childB = new Person("郭仁义”,19);
childA.setCar(new Car("BMW X1",300000.00));// 匿名对象
childB.setCar(new Car("法拉利”,1500000.00)); // 匿名对象
person.setChildren(new Person []{childA,childB}); // 一个人
Car car . new Car("宾利”,8000000.00);
person.setCar(car);     //一个人有一辆车
car.setPerson(person);  //一辆车属于一个人
// 第二步:根据关系获取数据
System.out.println(person.getCar().getInfo()); // 代码链
System.out.println(car.getPerson().getInfo());
//根据人找到所有的孩子以及孩子对应的汽车
For (int x=0;x<person.getChildren().lengthl;x++)forSystem.out.println(person.getChildren()[x].getInfo());
System.out.println("\t|- " + person.getChildrenO[x].getInfo());
System.out.println("\tt|- " + person.getChildren([X].getCar(.getInfo());
}
}
}

编译结果:

image.png


03. 实际应用概念解析

 

这种通过引用数据类型的关联来完成关系匹配的设计,在实际开发中很常见。比如一个公园有多个人在散步,可定义一个公园类和一个人类,一个公园有多个散步的人,使用对象数组来描述这种关系,这种概念在开发中非常重要。

相关文章
|
C++ Windows
FFmpeg入门及编译 3
FFmpeg入门及编译
273 0
|
9月前
|
Java
课时18:Java运算符(逻辑运算符)
课时18介绍了Java中的逻辑运算符(与、或、非)。通过范例详细讲解了非操作的使用,展示了如何正确应用逻辑非(!)。接着分别探讨了与操作(& 和 &&)及或操作(| 和 ||),强调了短路运算符(&& 和 ||)在性能和安全性上的优势。课程通过具体代码示例演示了不同逻辑运算符的效果及其应用场景。
244 5
|
9月前
|
Java
课时10:Java数据类型划分(整型类型)
本文主要围绕Java中整型数据展开,详细讲解整型变量、常量的概念,整型数据运算规则,包括数据溢出问题及解决方法,数据类型转换(自动转换与强制转换)的原理和注意事项,同时介绍了整型数据默认值的相关知识,以及byte数据类型与int数据类型的关系和使用场景,帮助读者全面掌握Java整型数据的相关内容。
235 4
|
9月前
|
Java
课时50:字符串与字节
今天我分享的是字符串与字节的相关的知识,主要分为以下三部分。 1. 转换目的阐述 2. 相关方法介绍 3. 简单程序示例
170 17
课时50:字符串与字节
|
9月前
|
Java C语言 C++
课时9:Java数据类型划分(数据类型划分)
课时9介绍了Java的数据类型划分及其操作。Java数据类型分为基本数据类型和引用数据类型。基本数据类型包括八种:数值型(整形、浮点型)、字符型和布尔型;引用数据类型有数组、类和接口。重点讲解了每种数据类型的默认值、适用场景及选择原则,如整数用int,小数用double,日期时间用Long等。掌握这些内容对编程至关重要。
195 4
课时9:Java数据类型划分(数据类型划分)
|
9月前
|
Java
课时56:字符串格式化
今天我分享的是 Java 中字符串格式化的相关知识,主要分为以下三个部分。 1. Java 1.5的新特性 2. format方法详解 3. 功能价值剖析
138 4
|
9月前
|
存储 Java
课时66:案例分析一(学生类)
今天我分享的是关于 Java 中继承概念的案例分析(学生类)。主要分为以下三部分。 1. 案例要求阐述 2. 代码实现展示 3. 编译执行与目的
187 2
|
9月前
|
Java C语言
课时8:Java程序基本概念(标识符与关键字)
课时8介绍Java程序中的标识符与关键字。标识符由字母、数字、下划线和美元符号组成,不能以数字开头且不能使用Java保留字。建议使用有意义的命名,如student_name、age。关键字是特殊标记,如蓝色字体所示。未使用的关键字有goto、const;特殊单词null、true、false不算关键字。JDK1.4后新增assert,JDK1.5后新增enum。
193 4
|
9月前
|
Java
课时65:final关键字
我今天分享的是 Java 中 Final 关键字的相关知识。主要分为以下三个部分。 1. Final锁死继承路 2. Final封印复写门 3. Final打造常量库
101 1
|
9月前
|
Java 编译器
课时7:Java程序基本概念(注释)
课时7介绍了Java程序中的注释。编程语言有其语法和语义,注释有助于理解代码需求,防止断档。Java支持三类注释:单行(//)、多行(/* */)和文档注释(/** */)。注释不会被编译器编译。范例中展示了如何在代码中使用注释,并强调了注释对项目文档管理的重要性。
208 3

热门文章

最新文章