课时35:自身关联
摘要:今天我分享的是关于编程中引用应用的自身关联分析。主要分为以下三部分。
1. 关系完善思路探讨
2. 代码实现过程演示
3. 实际应用概念解析
01. 关系完善思路探讨
接下来进行引用应用分析。在已确定人与车的关系基础上,进一步完善相关操作。以人有孩子为例,孩子成年后也可能拥有车。若采用为每个辈分都添加一个特定“位”的设计方法(如孩子位、孙子位等),当涉及多代时,这种方式不仅繁琐,且每个“位”结构相同。实际上,孩子也是人,若孩子是人,那么孩子就自动具备人拥有车( Car 属性)的可能性,因为程序关注的是“人能开车”这一关键属性。
在设计中,一个人可能有多个孩子,由于一个人可能生育多个子女或领养孩子,所以这种关系应使用数组结构来描述。因此,在定义变量时,应使用“ Children ”(复数形式)来表示一个人拥有的多个孩子,以体现这种实际情况。
02. 代码实现过程演示
在代码实现方面,首先在类中定义“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()); } } }
编译结果:
03. 实际应用概念解析
这种通过引用数据类型的关联来完成关系匹配的设计,在实际开发中很常见。比如一个公园有多个人在散步,可定义一个公园类和一个人类,一个公园有多个散步的人,使用对象数组来描述这种关系,这种概念在开发中非常重要。