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 通过对象和类(构成面向对象范式基础)来使用对象模型。对象模型中的关键概念,例如封装、数据隐藏、继承和多态性,提高了应用程序的适应性、可扩展性和健壮性。掌握这些概念,开发者可以创建更有效、更高效、更通用的软件应用程序。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP