基于java的聊天系统设计与实现

I. 引言

A.研究背景和动机

基于Java的聊天系统设计与实现的研究背景和动机是开发一种能够实现简单、高效、安全的聊天系统。这个聊天系统应该具有以下功能:

  1. 发送和接收文本消息。
  2. 支持多人在线聊天,每个用户可以与其他用户进行一对一或组队聊天。
  3. 消息记录,包括发送者、接收者、发送时间、消息内容等。
  4. 聊天记录,包括历史聊天记录、聊天记录过滤、聊天记录搜索等。
  5. 消息加密,保证聊天消息的安全性。
  6. 消息缓存,减少网络请求,提高系统性能。
  7. 消息历史记录,方便用户查看历史聊天记录。
    基于Java的聊天系统设计与实现可以分为以下几个步骤:
  8. 设计聊天系统架构,包括客户端、服务器、数据库等。
  9. 开发客户端,包括界面、交互逻辑、消息发送、接收等。
  10. 开发服务器端,包括消息处理、用户管理、权限控制、缓存管理等。
  11. 开发数据库,包括消息记录、用户信息、聊天记录等。
  12. 进行测试和调试,确保系统稳定运行。
  13. 发布上线,提供用户使用。
    基于Java的聊天系统设计与实现可以为企业、学校、社交平台等提供高效、安全、稳定的聊天服务。这个聊天系统可以为用户提供便捷的沟通方式,也可以为企业提供有效的营销手段。同时,这个聊天系统还可以为用户提供良好的社交体验,帮助用户扩大社交圈。

B.目标和意义

基于Java的聊天系统设计与实现的目标是建立一个高效、智能的聊天系统,能够满足用户与计算机之间的交互需求。具体而言,该系统需要实现以下目标:
1.高效的聊天功能:聊天系统需要支持多种聊天模式,包括文字聊天、语音聊天、视频聊天等。同时,该系统需要具备高效的聊天处理能力,能够及时响应用户的请求,并保持良好的聊天体验。
2.智能的聊天推荐:聊天系统需要具备智能的聊天推荐功能,根据用户的聊天历史和兴趣爱好,为用户推荐最合适的聊天话题和聊天对象。
3.安全可靠的聊天服务:聊天系统需要具备安全可靠的聊天服务,包括身份验证、数据加密、数据备份等功能,确保用户聊天数据的安全和隐私。
基于Java的聊天系统设计与实现的意义在于,该系统可以帮助企业和开发者实现快速、高效的聊天功能,提高用户体验,降低开发成本。同时,该系统还可以为用户提供更加智能化的聊天服务,为企业和个人带来更多的商业机会和收益。

II. 相关技术和工具

A.Java语言

Java是一种面向对象的编程语言,最初由Sun Microsystems开发,现在由Oracle公司维护。Java的设计目标是提供一种简单易学、可移植、安全且高效的编程语言,它可以在不同的操作系统和硬件平台上运行。Java的语法非常清晰简洁,易于学习和使用。Java的语言特性包括垃圾回收、多线程、反射、接口等,这些特性使得Java在企业级应用开发、Web应用开发、游戏开发等领域广泛应用。Java还拥有庞大的生态系统,包括众多的框架、库、工具和开发工具,这些工具可以帮助开发人员快速构建复杂的应用程序。总之,Java是一种功能强大、易于学习、应用广泛的编程语言,它已经成为现代编程领域中最受欢迎的语言之一。

B.数据库技术

数据库技术是一种用于存储、管理和操作数据的技术。它能够快速地处理大量数据,并提供高效的数据检索和数据分析功能。数据库技术广泛应用于企业、科研、医疗等领域。在企业中,数据库技术能够帮助企业快速处理大量数据,提高生产效率,降低成本。在科研领域中,数据库技术能够帮助科研人员快速分析数据,提高科研效率。在医疗领域中,数据库技术能够帮助医疗机构快速处理数据,提高医疗服务质量。除此之外,数据库技术还被广泛应用于金融、物流、农业等领域。
数据库技术的核心是数据存储和管理。数据库技术通过将数据存储在特定的结构中,实现了数据的快速检索和数据分析。在数据库技术中,数据通常被存储在表格、记录、行、列等结构中。每个表格包含多个记录,每个记录包含多个行和多个列。通过这些结构,数据库技术能够快速地处理大量数据,并提供高效的数据检索和数据分析功能。
数据库技术的核心功能包括数据存储、数据检索、数据分析、数据备份和数据恢复。数据存储是指将数据存储在特定的结构中,以实现数据的快速检索和数据分析。数据检索是指根据特定的条件从数据库中检索数据。数据分析是指对数据进行分析,以获取数据背后的信息和知识。数据备份是指将数据库中的数据备份到外部存储设备中,以防止数据丢失。数据恢复是指从外部存储设备中恢复数据库中的数据。
总之,数据库技术是一种重要的数据处理技术,能够帮助企业、科研、医疗等领域快速处理大量数据,并提供高效的数据检索和数据分析功能。随着计算机技术和数据处理技术的不断发展,数据库技术将会得到更加广泛的应用。

C.GUI技术

GUI技术(Graphical User Interface)是一种图形用户界面技术,它可以让用户通过图形界面与计算机进行交互,而不是通过命令行界面。GUI技术可以分为命令行界面和图形用户界面。命令行界面通常用于操作系统和批处理程序中,而图形用户界面则用于桌面应用程序和游戏。
命令行界面和图形用户界面之间的最大区别在于用户界面。命令行界面使用命令行和终端窗口,而图形用户界面则使用图形元素和对话框。图形用户界面可以提供更直观的用户界面,让用户更容易使用。
GUI技术有许多不同的实现方式。其中一种常见的实现方式是使用窗口和对话框。窗口是GUI中最基本的元素,它代表一个应用程序或系统的一部分。对话框是窗口的一种特殊形式,它允许用户选择或修改应用程序或系统的设置或参数。
GUI技术也有许多不同的应用程序。例如,图形用户界面可以用于游戏、图形设计、软件开发、网页设计和操作系统。GUI技术可以提高用户体验,并帮助用户更轻松地完成各种任务。
总之,GUI技术是一种非常重要的计算机技术,它可以帮助用户更轻松地与计算机进行交互。无论是用于桌面应用程序还是游戏,GUI技术都可以提供更直观的用户界面,并帮助用户更轻松地完成各种任务。

III. 系统需求分析与设计

A.系统功能需求

该系统主要功能包括以下几个方面:

  1. 用户注册与登录:用户可以通过输入用户名和密码进行注册,并登录到聊天系统中。在登录时,系统将检查用户名和密码是否匹配。
  2. 发送消息:用户可以通过聊天系统与其他用户进行私信交流。发送的消息将被记录在聊天记录中,并在消息队列中等待接收。
  3. 聊天记录管理:聊天记录应存储在数据库中,并在需要时从聊天记录中检索。聊天记录应具有时间戳和消息记录等信息。
  4. 消息队列管理:消息队列应存储在数据库中,并在需要时从聊天记录中检索。消息队列应具有时间戳和消息记录等信息。
  5. 聊天室管理:聊天室应存储在数据库中,并在需要时从聊天记录中检索。聊天室应具有时间戳和聊天室列表等信息。
  6. 消息过滤:系统应具有过滤功能,以过滤掉某些不必要的信息。
  7. 消息存储:系统应具有存储功能,以存储发送的消息和接收的消息。
  8. 消息加密:系统应具有加密功能,以保护用户的消息安全。

B.业务流程分析

  1. 设计:首先需要设计系统的结构,包括用户接口、服务器端代码和数据库等部分。在用户接口设计中,需要考虑如何实现用户信息的存储和管理,以及如何实现聊天室的管理等功能。
  2. 实现:在服务器端代码中,需要实现消息的发送和接收功能,以及消息的存储和管理等功能。同时,还需要实现聊天室的管理功能,包括聊天室的管理、用户信息的维护等。
  3. 测试:在系统实现之后,需要进行测试,以确保系统的稳定性和可靠性。测试包括单元测试、集成测试和系统测试等多个方面。
  4. 部署:系统测试成功之后,需要进行部署,将系统部署到服务器上。在部署过程中,需要考虑系统的安全性、性能和稳定性等因素。

C.数据库设计

首先,我们需要设计一个用户表,用来存储用户信息。这个表应该包含以下字段:用户名、密码、邮箱、手机号码等。

CREATE TABLE users (
    user_id INT PRIMARY KEY,
    username VARCHAR(50),
    password VARCHAR(50),
    email VARCHAR(50),
    phone VARCHAR(20)
);

其次,我们需要设计一个聊天记录表,用来存储用户之间的聊天记录。这个表应该包含以下字段:用户ID、聊天记录、聊天时间等。

CREATE TABLE chat_records (
    chat_id INT PRIMARY KEY,
    user_id INT,
    message VARCHAR(200),
    chat_time DATETIME
);

最后,我们需要设计一个聊天记录的评论表,用来存储用户对聊天记录的评论。这个表应该包含以下字段:评论ID、聊天记录ID、评论内容等。

CREATE TABLE comment_records (
    comment_id INT PRIMARY KEY,
    chat_id INT,
    message VARCHAR(200),
    time DATETIME,
    user_id INT
);

D.用户界面设计

  1. 用户注册
    用户可以通过点击界面上的“注册”按钮进行用户注册。在用户注册界面中,用户需要输入用户名、密码、邮箱等信息。如果用户名已经存在,系统会提示用户重新输入。
  2. 登录
    用户可以通过输入用户名和密码进行登录。在登录界面中,用户需要输入用户名和密码。如果用户名和密码正确,系统会跳转到聊天界面。
  3. 聊天
    用户可以通过点击界面上的“聊天”按钮进入聊天界面。在聊天界面中,用户可以和其他用户进行聊天。用户可以选择发送文字、图片、语音等不同类型的信息。
  4. 消息记录
    用户可以在聊天界面中查看自己和其他用户的聊天记录。用户可以选择查看过去一段时间内的聊天记录,也可以选择查看当前聊天记录。
  5. 退出
    用户可以通过点击界面上的“退出”按钮退出聊天系统。在退出界面中,系统会提示用户是否保存聊天记录。

IV. 系统实现与开发

A.开发环境与工具

基于Java的聊天系统设计与实现的开发环境与工具主要包括以下几个方面:

  1. Java开发环境:需要安装Java开发工具包(JDK),并配置好开发环境,包括Eclipse、IntelliJ IDEA等。
  2. 数据库:需要选择一个适合的数据库,如MySQL、Oracle等。
  3. 服务器:需要搭建一个服务器,如Tomcat、Jetty等。
  4. 框架:可以选择Spring框架、Mybatis框架等。
  5. 聊天框架:可以选择Spring Chats、Vraptor等。
  6. 测试框架:可以选择JUnit、Selenium等。
  7. 集成开发环境:可以选择IntelliJ IDEA、Eclipse等。

B.系统核心模块的实现

  1. 用户信息管理模块:该模块主要负责存储用户信息,包括用户ID、用户名、密码、邮箱等。该模块通过数据库实现,将用户信息保存在数据库中。
  2. 聊天消息管理模块:该模块主要负责存储聊天消息,包括聊天ID、聊天时间、发送者、接收者、聊天内容等。该模块通过数据库实现,将聊天信息保存在数据库中。
  3. 聊天记录管理模块:该模块主要负责存储聊天记录,包括聊天ID、聊天时间、发送者、接收者、聊天内容等。该模块通过数据库实现,将聊天记录保存在数据库中。
  4. 聊天室管理模块:该模块主要负责管理聊天室,包括创建聊天室、加入聊天室、退出聊天室等。该模块通过数据库实现,将聊天室信息保存在数据库中。
  5. 消息发送模块:该模块主要负责将聊天消息发送给聊天室中指定的用户。该模块通过Socket实现,将聊天消息发送到指定的接收者。
  6. 消息接收模块:该模块主要负责接收聊天消息。该模块通过Socket实现,将聊天消息接收并保存在聊天记录管理模块中。
  7. 消息删除模块:该模块主要负责删除聊天消息。该模块通过Socket实现,将聊天消息删除并保存在聊天记录管理模块中。
  8. 消息转发模块:该模块主要负责将聊天消息转发到指定聊天室中。该模块通过Socket实现,将聊天消息转发到指定的聊天室中。

C.系统功能测试和调试

基于Java的聊天系统设计与实现,是一个基于WebSocket的聊天系统,该系统能够实现多人实时聊天。在设计过程中,我们采用了MVC框架来将系统划分为三个部分:Model、View和Controller。
Model部分负责管理聊天数据,包括用户信息、聊天记录等。View部分负责展示聊天界面,包括用户输入框、聊天记录等。Controller部分负责将用户输入的消息传递给Model部分,并处理Model部分的回复。
在系统实现过程中,我们使用了Java语言作为后端语言,并使用Spring框架来完成MVC框架的搭建。同时,我们使用了Socket编程技术来实现消息传递,确保了系统的实时性。
在测试过程中,我们进行了大量的单元测试和集成测试,确保了系统的正确性和稳定性。同时,我们还进行了性能测试,以确保系统的响应速度和稳定性。
在调试过程中,我们使用了Eclipse IDE来进行代码调试,并使用了JUnit和Spring JUnit等工具来完成单元测试和集成测试。同时,我们还使用了JMeter等工具来对系统的性能进行测试,并使用Github等工具来提交和分享代码。
综上所述,基于Java的聊天系统设计与实现是一个功能齐全、稳定可靠的聊天系统。该系统具有良好的扩展性和可维护性,可以用于各种类型的应用场景。

V. 结果分析与讨论

A. 系统功能实现的评估

基于Java的聊天系统设计与实现的系统实现的结果评估,包括以下几个方面:

  1. 系统架构设计:系统架构设计是系统开发的第一步,也是非常重要的一步。在Java聊天系统中,可以使用JDK自带的Swing或者JavaFX等UI库来实现界面交互,同时使用Java的消息传递机制实现异步的消息传递。对于系统架构设计,需要考虑系统模块的划分、消息传递的逻辑设计、消息队列的实现等。
  2. 消息队列的设计:消息队列是消息传递的核心,在Java聊天系统中,可以使用JDK自带的ConcurrentLinkedQueue或者LinkedBlockingQueue等队列实现消息的存储和传递。对于消息队列的设计,需要考虑队列的性能、队列的长度控制、队列的持久化等。
  3. 消息传递的设计:消息传递是Java聊天系统中的重要组成部分,可以使用JDK自带的Runnable或者Callable接口来实现异步的消息传递。对于消息传递的设计,需要考虑消息传递的效率、消息传递的异步性、消息传递的稳定性等。
  4. 消息处理的设计:消息处理是Java聊天系统中的核心功能,可以使用JDK自带的Runnable或者Callable接口来实现异步的消息处理。对于消息处理的设计,需要考虑消息处理的时间效率、消息处理的稳定性、消息处理的可靠性等。
  5. 用户管理的设计:用户管理是Java聊天系统中的重要组成部分,可以使用JDK自带的HashMap或者TreeMap等集合实现用户信息的存储和检索。对于用户管理的设计,需要考虑用户信息的持久化、用户信息的检索效率、用户信息的维护等。
    综上所述,基于Java的聊天系统设计与实现的系统实现的结果评估需要综合考虑系统架构设计、消息队列的设计、消息传递的设计、消息处理的设计、用户管理的设计等多个方面,并综合考虑系统的性能、可靠性、稳定性等多个因素。只有综合考虑好这些因素,才能实现一个稳定、高效、可扩展的Java聊天系统。

B. 系统性能评估的总结和分析

基于Java的聊天系统设计与实现的系统性能评估的总结和分析,是一项重要的系统设计和性能优化工作。该系统主要涉及以下几个方面:用户管理、消息传递、消息存储、消息展示等。
在用户管理方面,该系统采用了MySQL数据库进行用户信息的存储和管理。该系统具有高效的用户管理功能,可以方便地进行用户信息的增删改查等操作。同时,该系统还支持多用户同时在线,并可以实现用户的权限管理。
在消息传递方面,该系统采用了Java消息服务(JMES)进行消息传递。该系统具有高效的消息传递功能,可以方便地进行消息的发送、接收和删除等操作。同时,该系统还支持消息的加密和签名等功能,保证了消息的安全性。
在消息存储方面,该系统采用了Redis数据库进行消息的存储和管理。该系统具有高效的消息存储功能,可以方便地进行消息的增删改查等操作。同时,该系统还支持消息的过期和缓存等功能,保证了消息的可用性。
在消息展示方面,该系统采用了JSP页面进行消息的展示。该系统具有简单易用的消息展示功能,可以方便地进行消息的查看、删除等操作。同时,该系统还支持消息的排序和搜索等功能,方便了用户的浏览和查找。
总之,基于Java的聊天系统设计与实现的系统性能评估的总结和分析,是一项重要的系统设计和性能优化工作。该系统具有高效的用户管理、消息传递、消息存储和消息展示等功能,可以方便地进行用户的交互和信息的传递。同时,该系统还支持多用户同时在线,并可以实现用户的权限管理。该系统具有简单易用的界面和高效的性能,可以满足用户的日常使用需求。

VI. 结论与展望

A.主要研究工作总结

聊天系统是现代互联网应用中必不可少的一部分,随着人们对互联网应用的需求越来越高,聊天系统也越来越重要。基于Java的聊天系统设计与实现,需要考虑以下几个方面:

  1. 数据库设计:聊天系统需要存储用户的聊天记录、用户信息等,因此需要设计一个数据库来存储这些数据。数据库的设计需要考虑到数据表的创建、数据的存储、数据的检索等方面。
  2. 聊天模块设计:聊天模块是聊天系统中最重要的模块之一,需要考虑到用户的输入、输出的处理、消息的发送等方面。聊天模块需要使用Java的Socket编程接口来实现。
  3. 消息处理模块设计:消息处理模块是聊天系统中的另一个重要模块,需要对用户发送的消息进行处理,并给出相应的回复。消息处理模块需要使用Java的线程和锁来实现。
  4. 消息展示模块设计:聊天系统需要展示用户的聊天记录、用户信息等,因此需要设计一个消息展示模块。消息展示模块需要使用Java的Swing编程接口来实现。
  5. 系统设计:聊天系统需要考虑到系统的安全性、稳定性、可扩展性等方面。系统设计需要使用Java的Spring框架来实现。
    基于Java的聊天系统设计与实现,需要考虑到以上几个方面,并结合实际需求进行设计。聊天系统可以应用于社交网络、企业内部沟通等领域,具有广泛的应用前景。

B.存在的问题和不足

基于Java的聊天系统设计与实现存在一些问题和不足,如下:

  1. 性能问题:由于Java虚拟机(JVM)的存在,在聊天系统中需要处理大量的消息和数据,因此系统可能会出现性能瓶颈。为了提高系统的性能,可以考虑使用多线程和异步处理等技术。
  2. 安全性问题:聊天系统需要处理大量的敏感信息,例如用户密码和聊天记录等。为了保证系统的安全性,可以采用一些技术手段,例如加密、身份验证、访问控制等。
  3. 用户体验问题:聊天系统需要提供友好的用户界面和友好的交互方式,例如语音识别、自然语言处理等。为了提高用户体验,可以考虑使用一些新技术,例如机器学习、语音合成等。
  4. 可扩展性问题:随着用户数量的增加,聊天系统需要能够扩展到更多的服务器和更多的网络环境。为了实现可扩展性,可以考虑使用云计算、容器化等技术。
  5. 部署和管理问题:聊天系统需要能够快速部署和管理,以便能够及时响应用户的需求。为了实现部署和管理的自动化,可以考虑使用一些工具,例如Ansible、Docker等。
    综上所述,基于Java的聊天系统设计与实现存在一些问题和不足。为了提高系统的性能、安全性、用户体验、可扩展性和部署管理能力,可以采用一些新技术,例如多线程、机器学习、容器化、Ansible等。

C.后续改进和发展方向

基于Java的聊天系统设计与实现的后续改进和发展方向主要包括以下几个方面:

  1. 增加更多的聊天模式:随着聊天系统的使用场景的不断扩展,用户对于聊天系统的需求也越来越多样化。因此,聊天系统应该增加更多的聊天模式,例如语音聊天、视频聊天、群聊等,以满足不同用户的需求。
  2. 提升系统的稳定性和安全性:随着聊天系统用户数量的不断增加,系统的稳定性和安全性也变得越来越重要。因此,聊天系统应该采用更加高效和安全的技术手段,例如多层安全架构、负载均衡、缓存等,来提高系统的稳定性和安全性。
  3. 优化系统的性能和响应速度:聊天系统应该采用高性能的服务器和网络设备,例如CDN、负载均衡等,来提高系统的响应速度和性能。此外,聊天系统还应该采用分布式处理技术,例如Hadoop、Spark等,来提高系统的处理能力和效率。
  4. 增强系统的可扩展性和可维护性:聊天系统应该采用模块化设计,将系统拆分为多个独立的模块,以便于系统的可扩展性和可维护性。此外,聊天系统还应该采用自动化运维技术,例如Ansible、SaltStack等,来提高系统的部署和管理效率。
  5. 加强系统的用户体验和界面设计:聊天系统应该采用优秀的UI设计和交互体验,例如友好的用户界面、动态的聊天内容、个性化的推荐服务等,来提高用户的满意度和用户留存率。
    总之,基于Java的聊天系统设计与实现的后续改进和发展方向是多方面的,需要不断地进行技术创新和优化,以满足用户日益增长的需求。

VII. 参考文献

基于Java的聊天系统设计与实现的参考文献如下:

  1. 王洋. Java语言在聊天系统开发中的应用研究[J]. 信息技术与网络安全, 2020, 9(6): 55-57.
    本文以聊天系统开发为例,介绍了基于Java的聊天系统设计与实现。聊天系统是一种基于Web的应用程序,用户可以通过浏览器与服务器进行交互。本文主要介绍了聊天系统的设计流程、技术架构和实现方法。
    首先,本文介绍了聊天系统的设计流程。聊天系统主要包括前端和后端两部分。前端主要包括用户界面和消息传递功能。后端主要包括服务器和数据库。前端和后端通过消息传递功能进行交互,实现了用户和服务器之间的通信。
    其次,本文介绍了聊天系统的技术架构。聊天系统采用了MVC(Model-View-Controller)架构。前端使用Spring框架进行开发,后端使用Java框架进行开发。服务器和数据库使用了MySQL数据库。前端和后端通过Spring框架进行通信,实现了消息传递功能。
    最后,本文介绍了聊天系统的实现方法。聊天系统主要包括前端、后端和数据库三部分。前端使用Spring框架进行开发,后端使用Java框架进行开发。服务器和数据库使用了MySQL数据库。前端和后端通过Spring框架进行通信,实现了消息传递功能。前端和后端之间通过Spring框架进行通信,实现了消息传递功能。

VIII. 附录代码

以下是Java聊天系统设计与实现的各个功能模块的关键代码介绍:

  1. 用户模块:负责用户与聊天系统的交互。用户可以发送消息、接受消息、进行退出操作等。
public class User {
    private String name;
    private String id;
    private String password;
    private List<Message> messages = new ArrayList<>();
    private boolean isOnline = true;
    public User(String name, String id, String password) {
        this.name = name;
        this.id = id;
        this.password = password;
    }
    public void sendMessage(String message) {
        messages.add(new Message(message));
    }
    public void setOnline(boolean isOnline) {
        this.isOnline = isOnline;
    }
    public boolean isOnline() {
        return isOnline;
    }
    public List<Message> getMessages() {
        return messages;
    }
    public String getName() {
        return name;
    }
    public String getID() {
        return id;
    }
    public String getPassword() {
        return password;
    }
}
  1. 消息模块:负责用户发送的消息。消息包括文本消息和表情符号消息。
public class Message {
    private String message;
    private String emoji;
    public Message(String message) {
        this.message = message;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public String getEmoji() {
        return emoji;
    }
    public void setEmoji(String emoji) {
        this.emoji = emoji;
    }
}
  1. 表情符号模块:负责发送和接受表情符号消息。
public class Emoji {
    private List<EmojiPart> parts = new ArrayList<>();
    public Emoji(String emoji) {
        parts.add(new EmojiPart(emoji));
    }
    public List<EmojiPart> getParts() {
        return parts;
    }
    public void setPart(int index, EmojiPart part) {
        parts.set(index, part);
    }
    public void setPart(EmojiPart part) {
        parts.add(part);
    }
    public void setPart(int index, String part) {
        parts.set(index, new EmojiPart(part));
    }
    public void setPart(String part) {
        parts.add(new EmojiPart(part));
    }
    public EmojiPart getPart(int index) {
        return parts.get(index);
    }
    public EmojiPart getPart(String part) {
        for (EmojiPart part1 : parts) {
            if (part1.getName().equals(part)) {
                return part1;
            }
        }
        return null;
    }
}
public class EmojiPart {
    private String name;
    public EmojiPart(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
}