Java 中的对象模型

javaobject oriented programmingprogramming更新于 2024/8/17 9:11:00

对象模型概述

您是否曾想过软件程序如何查看和与组成它们的组件进行通信?

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

对象模型实际上对软件开发至关重要,以至于它通常是第一阶段之一。对象模型通过定义继承和封装等关键特性,为可靠、适应性强且可扩展的应用程序设计建立了框架。您准备好学习更多有关面向对象编程的知识了吗?

对象和类

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

对象

在面向对象编程中,对象相当于现实世界中的元素,无论是物理元素还是概念元素,都具有独特的属性。

以下是对象的一些定义特征 -

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

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

  • 行为- 对象的行为是指它可以采取的操作以及它如何与其他对象交互,包括内部和外部交互。

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

类是对象的蓝图或模型,用于描述具有相似特征的对象集合。这些东西被称为类的实例。类中有多个元素 −

对象属性中保存的信息可能因属于同一类的不同对象而异。类数据是这些特征的名称。

操作是用于指定和描述这些对象活动的程序和技术。

例如,考虑"员工"类。以下特征可适用于此类 -

  • 员工的经验

  • 员工所在的部门

  • 学生作为员工开始工作的年份

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

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

  • averageyears() - 计算员工平均经验年限。

  • totalyears() - 计算员工的总经验年限。

算法

  • 步骤 1 -创建"Employee"公共类。

  • 步骤 2 - 使用两个数字 2 和 4 调用"total_years"函数来添加员工经验总数。

  • 步骤 3 - 然后我们调用另一个名为"avg_years"的函数,使用"total_years"的结果和整数 2。此函数计算两个数字的平均值。它以十进制形式返回结果。

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

  • 步骤 5 - 输出显示总工作年限,即 6。两个数字的平均值为 3.0。

示例

以下代码定义了一个"Employee"类,用于计算两个员工的总工作年限和平均工作年限,并将结果打印到控制台。

import java.io.*;
public class Employee {
    public static void main (String[] args) {
        // 将参数传递给函数
        int tot = total_years(2,4);
        double avg = avg_years(tot, 2);
        
        // 打印输出
        System.out.println("总年数 = "+tot+"。平均年数 = "+avg+"。");
    }
    
    // 计算总数的函数
    public static int total_years(int executive, int senior) {
        int total = executive + senior;
        return total;
    }
    
    // 计算平均年数的函数
    public static double avg_years(int total, int num_subs) {
        double avg = total/num_subs;
        return avg;
    }
}

输出

总年数 = 6。平均年数 = 3.0。

封装和数据隐藏的概念

为了确保我们的数据安全并且不易受到外界干扰,封装和数据隐藏是必须实现的基本概念。

封装涉及将方法和属性组合在一个类中。只有当类为其提供接口时,才允许外部访问内部细节或类属性。

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

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

继承

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

只要超类允许,子类可以继承或获取其超类的特征和功能。此外,子类可以修改任何继承的超类方法,以及引入自己的新特征和方法。

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

例如,您可以使用 Reptile 类作为蓝图来创建 Crocodile、Snake 和 Chameleon 等类。除了爬行动物的共同特征外,每种动物都有独特的特征。因此,说鳄鱼"是"爬行动物是正确的。

多态性

"多态性"一词源于希腊语,指的是呈现多种形状的能力。它指的是在面向对象编程的上下文中,操作根据所应用的对象类型采取不同行动的能力。

这使得它在继承中特别有用,因为它使具有各种内部结构的对象能够共享一个通用接口。

让我们使用 Triangle 和 Rectangle 这两个类作为例子。这两个类都包含一个名为 findArea() 的方法。

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

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

泛化和特化

在类层次结构中,子类从超类继承,这反映在泛化和特化中。

在泛化过程中,子类被连接起来形成一个广义的超类,合并类的共享特征以生成层次结构更高级别的类。

它表明了一种"是一种"关系。

例如,"自行车是一种陆地交通工具"或"船是一种水上交通工具。"

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

链接和关联

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

关联度表示链接的类数。

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

聚合和组合

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

现在可以将对象直接放置在其他类的主体内。

聚合被称为"部分"或"具有"关系,具有从整体导航到其部分的能力。聚合实体由一个或多个其他对象组成。

结论

由于它使开发人员能够使用面向对象技术将组件表示为对象,因此对象模型是软件开发的关键部分。通过构成面向对象范式基础的对象和类,Java 使用对象模型。对象模型中提高应用程序适应性、可扩展性和稳健性的关键思想包括封装、数据隐藏、继承和多态性。通过掌握这些思想,开发人员可以提出更有效、更高效、更通用的软件应用程序。


相关文章