首页 > 其他分享 >9.30

9.30

时间:2024-09-30 22:00:47浏览次数:8  
标签:9.30 String void private class new public

[实验任务一]:UML复习

阅读教材第一章复习UML,回答下述问题:

面向对象程序设计中类与类的关系都有哪几种?分别用类图实例说明。

1、关联关系

      

 

①、单向关联

 

 

②、双向关联

 

 

③、多重性关联

 

 

 

④、聚合关联

 

 

⑤、组合关联

 

 

2、依赖关系

 

 

3、泛化关系

 

 

[实验任务二]:单一职责原则

登录模块在实际项目开发中很常见,请按照教材28页(PPT49页)利用单一职责原则重构后的类图实现这一模块。

 

 

Init方法用于初始化按钮、文本框等界面控件;display方法用于向界面容器中增加界面控件并显示窗口;validate方法供登录按钮的事件处理方法调用,用于调用与数据库相关的方法完成登录处理,成功则进入,否则提示错误;getConnection方法用于获取数据库连接对象Connection来连接数据库;findUser方法用于根据用户名和密码查询数据库中用户是否存在,存在为True,否则为false,需调用getConnection;main为主函数,即系统的入口

 

 

按照功能拆分成四个类:

类LoginForm负责界面显示,只包含与界面有关的方法和事件处理方法;

类UserDAO负责用户表的增删改查操作,封装了对用户表的全部操作代码,登录本质上是一个查询用户表的操作。

类DBUtil负责数据库的连接,可供多个数据库操作类重用;

类MainClass负责启动系统。

源代码:

1、BDUtil

package wufa;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBUtil {
    private static final String URL = "jdbc:mysql://localhost:3306/login";
    private static final String USER = "root";
    private static final String PASSWORD = "123456789";

    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(URL, USER, PASSWORD);
    }
}

2、UserDAO

package wufa;

 

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

 

public class UserDAO {

    public boolean findUser(String username, String password) {

        Connection conn = null;

        PreparedStatement pstmt = null;

        ResultSet rs = null;

        try {

            conn = DBUtil.getConnection();

            String sql = "SELECT * FROM users WHERE username=? AND password=?";

            pstmt = conn.prepareStatement(sql);

            pstmt.setString(1, username);

            pstmt.setString(2, password);

            rs = pstmt.executeQuery();

            return rs.next(); // 如果查询结果存在,则返回true

        } catch (SQLException e) {

            e.printStackTrace();

        } finally {

            try {

                if (rs != null) rs.close();

                if (pstmt != null) pstmt.close();

                if (conn != null) conn.close();

            } catch (SQLException e) {

                e.printStackTrace();

            }

        }

        return false;

    }

}

3、LoginForm

package wufa;

 

import javax.swing.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

 

public class LoginForm extends JFrame {

    private JTextField usernameField;

    private JPasswordField passwordField;

    private JButton loginButton;

    private JLabel messageLabel;

 

    public LoginForm() {

        init();

    }

 

    private void init() {

        setTitle("Login Form");

        setSize(300, 200);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setLocationRelativeTo(null);

 

        JPanel panel = new JPanel();

 

        JLabel usernameLabel = new JLabel("Username:");

        usernameField = new JTextField(20);

        JLabel passwordLabel = new JLabel("Password:");

        passwordField = new JPasswordField(20);

        loginButton = new JButton("Login");

        messageLabel = new JLabel("");

 

        loginButton.addActionListener(new ActionListener() {

            @Override

            public void actionPerformed(ActionEvent e) {

                validate();

            }

        });

 

        panel.add(usernameLabel);

        panel.add(usernameField);

        panel.add(passwordLabel);

        panel.add(passwordField);

        panel.add(loginButton);

        panel.add(messageLabel);

 

        add(panel);

    }

 

    private void validate() {

        String username = usernameField.getText();

        String password = new String(passwordField.getPassword());

        UserDAO userDAO = new UserDAO();

        if (userDAO.findUser(username, password)) {

            messageLabel.setText("Login successful!");

            // 进行后续操作,比如打开新的窗口等

        } else {

            messageLabel.setText("Invalid username or password.");

        }

    }

 

    public static void main(String[] args) {

        SwingUtilities.invokeLater(() -> {

            LoginForm form = new LoginForm();

            form.setVisible(true);

        });

    }

}

3、MainClass

public class MainClass {

public static void main(String[] args) {

// 启动登录界面 SwingUtilities.invokeLater(() -> {

LoginForm form = new LoginForm();

form.setVisible(true);

 });

}

}

实验要求:

 

[实验任务三]:依赖倒转原则与合成复用原则

 

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

实验要求:

1.提交源代码;

2.画出重构后的类图。

型号抽象类

public abstract class Size {

public abstract void sizePen();

}

具体型号类

public class SmallPen extends Size{

//小型

public void sizePen() {

System.out.println("小型");

}

public class MiddlePen extends Size{

//中型

public void sizePen() {

System.out.println("中型");

}

public class BigPen extends Size{ 

//大型

public void sizePen() {

System.out.println("大型");

}

}

颜色抽象类

public abstract class Color { 

public abstract void colorPen();

}

具体颜色类

public class GreenPen extends Color{

public void colorPen() {

System.out.println("绿色");

}

}

public class RedPen extends Color{

public void colorPen() {

System.out.println("红色");

}

}

钢笔

public class Pen {

//钢笔

private Size size;

private Color color;

public Size getSize() {

   return size;

}

public void setSize(Size size) {

   this.size = size;

}

public Color getColor() {

   return color;

}

public void setColor(Color color) {

 this.color = color;

}

}

 

聚合钢笔

public class MianClass {public static void main(String[] args) {//颜色大小随意组合

Pen pen=new Pen();//组合小型红色钢笔

pen.setSize(new SmallPen());

pen.setColor(new RedPen());//组合大型绿色钢笔

pen.setSize(new BigPen());

pen.setColor(new GreenPen());

}

}

 

标签:9.30,String,void,private,class,new,public
From: https://www.cnblogs.com/zzqq1314/p/18442495

相关文章

  • 9.30
    今天学习java生成二维码importcom.google.zxing.WriterException;importcom.google.zxing.common.BitMatrix;importcom.google.zxing.qrcode.QRCodeWriter;importcom.google.zxing.client.j2se.MatrixToImageWriter;importjava.awt.image.BufferedImage;importjava.i......
  • 9.30 模拟赛
    得用kunkka号看。题解A.网瘾少年很好很好的贪心题。弱化版是[CSP-J2023]公路,这题没有油箱限制。首先判掉无解:存在\(d_i>T\)。用单调栈求\(nxt_i\)表示\(i\)之后第一个油价比\(i\)低的位置,没有为\(n+1\)(终点)。因为\(nxt_i\)的油价比\(i\)低,所以你肯定......
  • C#/.NET/.NET Core技术前沿周刊 | 第 7 期(2024年9.23-9.30)
    前言C#/.NET/.NETCore技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NETCore领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿,推荐或自荐优质文章/项目/学习资源等。每周一......
  • 9.30
    [实验任务一]:UML复习阅读教材第一章复习UML,回答下述问题:面向对象程序设计中类与类的关系都有哪几种?分别用类图实例说明。1. 继承:2. 实现:  3. 关联: 4. 聚合: 5. 组合: 6. 依赖:     ......
  • 9.30~9.5 && 9.6~9.8小集训
    8.30~9.1给开学考试起了个一调的名不懂我考这玩意的意义(又不是放假前没考过总不能是考验我两个月不学whk还能记住多少吧......
  • 159.302 The 8-Puzzle: Search Algorithms
    159.302ArtificialIntelligenceAssignment#1The8-Puzzle:SearchAlgorithmsMaximumnumberofmemberspergroup:3studentsDeadlineforsubmission:9thofSeptemberInstructionsYourtaskistowriteaC++programthatwillsolvethe8-puzzleprob......
  • 9.30每日总结
    今天是到家的第二天,首先我是不负众望地昏迷不醒,然后十二点出门觅食,下午去配了一副我日思夜想的黑框眼镜,顺便去磨了一个刀,晚上在电视中学习重要的人生经验,体味丰富的人生状态今天我学到了:如果人十二点之后起床,那么假期会变少~(>_<)~......
  • 9.30
    上午写了ppt中的动手动脑,下午坐火车回家一、自定义类的应用packagedaily0;publicclassdaily2{publicstaticvoidmain(String[]args){//创建类的实例,定义一个对象变量引用这一实例MyClassobj=newMyClass();//通过对象变量调......
  • 9.30随笔
    →信条部分早起晚睡2/88,+0举止厚重12/360,,+1穴位按摩2/30,+1每日反省1/90,+0总结→持续摆烂中→学习部分[√]单词[√]跑步→项目进度无......
  • 9.30 读书笔记
    《代码大全2》是一个经典的软件开发书籍,是一本非常有价值的资源,包含了许多软件开发中的重要主题。书中提醒读者以解决问题为导向,不仅仅是完成任务。防御式编程,防御式编程不是指不让别人批评代码,而是指确保要承担的责任,保证方法不会因为传入错误数据而破坏,看似微小的防范,收益可能......