Java 对象模型


对象模型概述

你有没有想过软件程序如何感知和与构成它们的组件进行通信?

对象模型在这种情况下非常有用。借助强大的系统或接口,开发人员可以使用高级的面向对象技术将这些组件表示为对象。

对象模型实际上对软件开发至关重要,它通常是最初的步骤之一。通过定义继承和封装等关键特性,对象模型奠定了可靠、灵活和可扩展的应用程序设计框架。你准备好学习更多关于面向对象编程的知识了吗?

对象和类

Java 或任何其他面向对象编程语言的面向对象范式都依赖于对象和类。让我们更仔细地研究它们,看看它们究竟是什么——

对象

在面向对象编程中,对象类似于现实世界中的实体,无论是物理的还是概念的,都有其独特的属性。

以下是对象的几个定义特性:

  • 唯一性——每个对象都与系统中的所有其他对象不同,具有其自身的属性和行为。

  • 状态——每个对象都有一个状态,表示其当前属性和特定于该对象的特定值。

  • 行为——对象的 行为 指的是它可以执行的操作以及它如何与其他对象(内部和外部)交互。

例如,一个人可以表示为物理对象,而过程或产品可能更适合作为概念对象。

类是对象的蓝图或模型,描述了一组具有相似属性的对象。这些对象被称为类的实例。类中包含几个元素:

存储在对象属性中的信息可能因属于同一类的不同对象而异。这些属性称为类数据。

操作是用于指定和描述这些对象行为的程序和方法。

例如,考虑一下“员工”类。此类可能具有以下属性:

  • 员工的经验

  • 员工所在的部门

  • 员工开始工作的年份

  • 个人信息,例如员工姓名、员工 ID 和出生日期。

使用此类,可以执行许多操作,包括:

  • averageyears()——计算员工平均工龄。

  • totalyears()——计算员工总工龄。

算法

  • 步骤 1——创建“员工”公共类。

  • 步骤 2——使用两个数字 2 和 4 调用“total_years”函数来添加员工总工龄。

  • 步骤 3——然后,我们调用了另一个名为“avg_years”的函数,该函数使用“total_years”的结果和整数 2。此函数计算两个数字的平均值。它将结果作为十进制数返回。

  • 步骤 4——程序使用 System.out.println 方法将结果打印到控制台。

  • 步骤 5——输出显示员工总工龄为 6 年。两个数字的平均值为 3.0。

示例

下面的代码定义了一个“员工”类,该类计算两名员工的总工龄和平均工龄,并将结果打印到控制台。

import java.io.*;
public class Employee {
   public static void main (String[] args) {
      // passing parameters to functions
      int tot = total_years(2,4);
      double avg = avg_years(tot, 2);

      // printing the output
      System.out.println("The total years is = "+tot+". The average is = "+avg+".");
   }

   // function to calculate total
   public static int total_years(int executive, int senior) {
      int total = executive + senior;
      return total;
   }

   // function to calculate average years
   public static double avg_years(int total, int num_subs) {
      double avg = total/num_subs;
      return avg;
   }
}

输出

The total years is = 6. The average is = 3.0.

封装和数据隐藏的概念

为了确保我们的数据安全且不受外部干扰,必须实现封装和数据隐藏这两个重要概念。

封装是指将方法和属性组合到类中的过程。只有在类为此提供接口的情况下,才能允许外部访问内部细节或类属性。

另一方面,数据隐藏是保护对象免受外部方法直接访问的过程。

许多对象需要能够相互通信才能创建一个交互式应用程序。这种通信是通过消息传递来实现的,消息传递涉及在由不同进程创建的对象之间调用类方法。在大多数情况下,消息传递是单向的,并且允许在两个对象之间进行通信。

继承

可以使用继承的基本概念从具有更广泛功能的现有类创建新类。最初的类通常称为父类、基类或超类,而新类则称为子类、派生类或子类。

只要超类允许,子类就可以继承或获取其超类的特性和功能。(es)。此外,子类还可以修改任何继承的超类方法,并引入其自身的新特性和方法。

由于继承在父类和子类之间建立了“is-a”关系,因此它为程序员提供了一个强大的工具来开发面向对象的应用程序。

例如,可以使用爬行动物类作为蓝图来创建鳄鱼、蛇和变色龙等类。除了作为爬行动物的共同特征外,每个类都有其独特的特征。因此,可以说鳄鱼“是”爬行动物。

多态性

源于希腊语的“多态性”一词是指能够采用多种形式的能力。在面向对象编程的上下文中,它指的是操作能够根据应用它们的​​对象类型而不同地起作用的能力。

这在继承中尤其有用,因为它允许具有不同内部结构的对象共享一个公共接口。

让我们以三角形和矩形这两个类为例。这两个类都包含一个名为 findArea() 的方法。

尽管这两个类中方法的名称和目的相同,但其内部实现方式(即面积的计算方式)因类而异。

当矩形类的对象运行其 findArea() 函数时,它不会干扰三角形类的 findArea() 方法计算圆的面积。

泛化和特化

在类层次结构中,子类继承自超类,这体现在泛化和特化中。

在泛化过程中,子类被组合以形成一个泛化的超类,将类的共有特性合并起来,以在层次结构的更高级别生成一个类。

它表示“是一种”关系。

例如,“自行车是一种陆地车辆”或“船是一种水上车辆”。

泛化的反面是特化过程。在这种情况下,使用组中项目的标识特性,从预先存在的类创建专门的类。您可以将子类视为超类的特化版本。

链接和关联

链接和关联用于表示对象之间的关系。链接表示对象之间的连接,通过该连接对象进行协作。关联是一组具有共同结构和行为的链接,表示一个或多个类的对象之间的关系。

关联的度表示链接的类的数量。

关联的基数比率表示参与关联的实例的数量。

聚合和组合

聚合或组合是类之间的关系,其中一个类可以由其他类的任何对象的组合组成。

现在可以将对象直接放置在其他类的正文中。

聚合被称为“部分-整体”或“has-a”关系,能够从整体导航到其各个部分。聚合实体由一个或多个其他对象组成。

结论

对象模型是软件开发中至关重要的一部分,因为它允许开发者使用面向对象的技术将组件表示为对象。Java 通过对象和类(构成面向对象范式基础)来使用对象模型。对象模型中的关键概念,例如封装、数据隐藏、继承和多态性,提高了应用程序的适应性、可扩展性和健壮性。掌握这些概念,开发者可以创建更有效、更高效、更通用的软件应用程序。

更新于:2023年5月15日

817 次浏览

开启您的职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.