首页 > 其他分享 >11.8

11.8

时间:2024-11-05 14:23:56浏览次数:2  
标签:java String new 11.8 panel public constraints

阅读教材第一章复习UML,回答下述问题:
面向对象程序设计中类与类的关系都有哪几种?分别用类图实例说明。

  1. 关联关系
    (1).单相关联
    学生可以选修课程,但课程不需要知道哪些学生选修了它。

(2).双向关联

(3).自关联关系
以公司的组织结构为例,一个员工可以是另一个员工的管理者。

(4).多重关联
一个教师可以在多个部门任教,一个部门也可以有多个教师。

(5).聚合关联
大学包含多个学院,但学院可以独立存在。

(6).组合关联
引擎是汽车不可分割的一部分,没有汽车,引擎就没有意义。每辆汽车必须有且只有一个引擎,Engine的生命周期完全依赖于Car,当Car被销毁时,Engine也会被销毁

  1. 依赖关系
    订单类在处理付款时依赖于支付类,但这种依赖并不是持久的。

  2. 泛化关系
    "圆形"和"矩形"都是"形状"的具体实现。

  3. 接口与实现关系

[实验任务二]:单一职责原则
登录模块在实际项目开发中很常见,请按照教材28页(PPT49页)利用单一职责原则重构后的类图实现这一模块。
实验要求:
1.提交源代码和对应的数据库文件(注意将此模块保存,以备以后使用);
2.注意编程规范。
数据库sql

LoginForm.java
import javax.swing.;
import java.awt.
;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class LoginForm extends JFrame {
private UserDAO dao;
private JTextField usernameField;
private JPasswordField passwordField;
private JLabel statusLabel;

public LoginForm() {
    dao = new UserDAO();
    initUI();
}

private void initUI() {
    // 创建主面板
    JPanel panel = new JPanel(new GridBagLayout());
    GridBagConstraints constraints = new GridBagConstraints();
    constraints.insets = new Insets(5, 5, 5, 5);
    constraints.fill = GridBagConstraints.HORIZONTAL;

    // 用户名标签和文本框
    JLabel usernameLabel = new JLabel("用户名:");
    constraints.gridx = 0;
    constraints.gridy = 0;
    panel.add(usernameLabel, constraints);

    usernameField = new JTextField(20);
    constraints.gridx = 1;
    panel.add(usernameField, constraints);

    // 密码标签和密码框
    JLabel passwordLabel = new JLabel("密码:");
    constraints.gridx = 0;
    constraints.gridy = 1;
    panel.add(passwordLabel, constraints);

    passwordField = new JPasswordField(20);
    constraints.gridx = 1;
    panel.add(passwordField, constraints);

    // 登录按钮
    JButton loginButton = new JButton("登录");
    constraints.gridx = 0;
    constraints.gridy = 2;
    constraints.gridwidth = 2;
    constraints.anchor = GridBagConstraints.CENTER;
    panel.add(loginButton, constraints);

    // 状态标签
    statusLabel = new JLabel();
    constraints.gridx = 0;
    constraints.gridy = 3;
    constraints.gridwidth = 2;
    panel.add(statusLabel, constraints);

    // 设置登录按钮的事件监听器
    loginButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            String username = usernameField.getText();
            String password = new String(passwordField.getPassword());
            if (validate(username, password)) {
                statusLabel.setText("登陆成功");
            } else {
                statusLabel.setText("无效的用户名或密码");
            }
        }
    });

    // 设置窗口属性
    add(panel);
    setTitle("登 录");
    setSize(400, 200);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLocationRelativeTo(null);
}

public boolean validate(String userName, String userPassword) {
    return dao.findUser(userName, userPassword);
}

}
userDao.java

DButil.java

MainClass.java

[实验任务三]:依赖倒转原则与合成复用原则
在一画图软件中提供了多种大小不同的画笔,并且可以给画笔指定不同的颜色,某设计人员对画笔进行了如上图所示的设计。通过分析,可以发现增加画笔的种类和颜色会使得系统中类的数目急剧增加,请根据合成复用原则和依赖倒转原则对上述设计进行重构。
实验要求:

  1. 提交源代码;

  2. 画出重构后的类图。

// Color.java
// 颜色接口
public interface Color {
String getColorName();
}

// Red.java
// 红色实现
public class Red implements Color {
@Override
public String getColorName() {
return "红色";
}
}

// Green.java
// 绿色实现
public class Green implements Color {
@Override
public String getColorName() {
return "绿色";
}
}

// Size.java
// 尺寸接口
public interface Size {
String getSizeName();
}

// Small.java
// 小尺寸实现
public class Small implements Size {
@Override
public String getSizeName() {
return "小号";
}
}

// Middle.java
// 中等尺寸实现
public class Middle implements Size {
@Override
public String getSizeName() {
return "中号";
}
}

// Big.java
// 大尺寸实现
public class Big implements Size {
@Override
public String getSizeName() {
return "大号";
}
}

// Pen.java
// 画笔类
public class Pen {
private Color color; // 颜色属性
private Size size; // 尺寸属性

// 构造函数
public Pen(Color color, Size size) {
    this.color = color;
    this.size = size;
}

// 绘画方法
public void draw() {
    System.out.println("正在使用" + color.getColorName() + size.getSizeName() + "画笔绘画。");
}

}

标签:java,String,new,11.8,panel,public,constraints
From: https://www.cnblogs.com/wlxdaydayup/p/18527776

相关文章

  • conda安装cuda(11.8)+cudnn(8.9.2)+pytorch(2.0.0)
    目录1、从NVIDIA安装CUDA11.8.0正式开始的分界线(可以从这里开始看)2、下载cudnn3、下载pytorch4、检查1、从NVIDIA安装CUDA11.8.0在Cuda|Anaconda.org中找到你要下载的版本的指令(有错,但已解决,先往下看先不要动手,可以从目录跳转到正式开始的分界线) 但是......
  • 关于pytorch2.3.x和cuda11.8,python3.11配置问题。cuda配置好了,然后和pytorch版本也是
    问题描述:NVIDIA-SMI的版本是12.5,cuda的版本是11.8,path路径都没有问题C:\ProgramFiles\NVIDIAGPUComputingToolkit\CUDA\v11.8\binC:\ProgramFiles\NVIDIAGPUComputingToolkit\CUDA\v11.8\libnvvpC:\ProgramFiles\NVIDIAGPUComputingToolkit\CUDA\v11.8\incl......
  • 适用于PyTorch 2.0.0的Ubuntu 22.04上CUDA v11.8和cuDNN 8.7安装指南
    将下面内容保存为install.bash,直接用shell执行一把梭解决#!/bin/bash###steps#####verifythesystemhasacuda-capablegpu#downloadandinstallthenvidiacudatoolkitandcudnn#setupenvironmentalvariables#verifytheinstallation######toverify......
  • 11.8
    《代码大全2》是一本非常经典的软件开发书籍。在书中,强调了比较优秀的代码结构和命名规范的重要性。书中注释的部分帮助我理解怎么去编写有意义的注释,合适的注释可以提供代码理解上的便利,但是过多或者无关的注释会干扰代码的可读性。还有书中关于代码复用和模块化的内容帮助学习......
  • 大二快乐日记11.8
    索引就是根据表中的一列或若干列按照一定顺序建立的列值与记录行之间的对应关系表,实质上是一张描述索引列的列值与原表中记录行之间一一对应关系的有序表。索引是MySQL中十分重要的数据库对象,是数据库性能调优技术的基础,常用于实现数据的快速检索。在MySQL中,通常有以下两种......
  • 11.8
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>学生注册</title><style>button{display:block;margin-top:10px;pad......
  • 11.8
    今日学习内容<%--CreatedbyIntelliJIDEA.TochangethistemplateuseFile|Settings|FileTemplates.--%><%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>Title</ti......
  • 11.8 实现重置文件时间戳
    11.8.1切割文件名与路径如下代码是一段文件路径切割实现,通过传入文件路径,获取文件名和文件路径的功能。具体实现包括两个函数:GetFileName和GetFilePath。前者接收一个文件路径字符串,并返回该文件路径中的文件名;后者接收一个文件路径字符串,并返回该文件路径中除文件名以外的部分,......
  • 11.8
    今天我们实现学生的前端信息,学生部分的前端代码,学生部分的后端代码在User的后端代码中register.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>学生注册</title><style>button{d......
  • 2023.11.8 高斯消元记录
    2021ICPC沈阳I题https://link.zhihu.com/?target=https%3A//ac.nowcoder.com/acm/contest/24346/I2020ICPC济南A题https://ac.nowcoder.com/acm/contest/10662/A高斯消元只要构造出增广矩阵,求解就很简单了.对本题来说,矩阵乘开后,新矩阵的列向量,就是B*C的列向量.......