9.26实验1:UML与面向对象程序设计原则

[实验任务一]:UML复习
阅读教材第一章复习UML,回答下述问题:
面向对象程序设计中类与类的关系都有哪几种?分别用类图实例说明。
1、关联关系
 
 
 
2、聚合关系
 
 
 
3、依赖关系
 
 
 
4、组合关系
 
 
 
[实验任务二]:单一职责原则
 
登录模块在实际项目开发中很常见,请按照教材28页(PPT49页)利用单一职责原则重构后的类图实现这一模块。
 
实验要求:
 
1.提交源代码和对应的数据库文件(注意将此模块保存,以备以后使用);
2.注意编程规范。
 
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <title>登录</title>
</head>
<body>
<h1>登录</h1>
<form action="login" method="post">
    <p>用户名: <input type="text" name="username"></p>
    <p>密码: <input type="password" name="password"></p>
    <input type="submit" value="登录">
</form>
</body>
</html>
 
 
 
 
 
 
 
 
 
 
数据库:DROP TABLE IF EXISTS `users`;
 
CREATE TABLE `users` (
 
  `id` int NOT NULL AUTO_INCREMENT,
 
  `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
 
  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
 
  `role` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
 
  PRIMARY KEY (`id`) USING BTREE
 
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
 
 
 
SET FOREIGN_KEY_CHECKS = 1;
 
 
 
[实验任务三]:依赖倒转原则与合成复用原则
 
在一画图软件中提供了多种大小不同的画笔,并且可以给画笔指定不同的颜色,某设计人员对画笔进行了如上图所示的设计。通过分析,可以发现增加画笔的种类和颜色会使得系统中类的数目急剧增加,请根据合成复用原则和依赖倒转原则对上述设计进行重构。
 
实验要求:
 
1.提交源代码;
2.画出重构后的类图。
抽象出颜色接口:public interface Color {
    String getColor();
}
 
public class Red implements Color {
    @Override
    public String getColor() {
        return "Red";
    }
}
 
public class Green implements Color {
    @Override
    public String getColor() {
        return "Green";
    }
}
 
 
抽象出画笔大小接口:public interface PenSize {
    String getSize();
}
 
public class SmallPen implements PenSize {
    @Override
    public String getSize() {
        return "Small";
    }
}
 
public class MiddlePen implements PenSize {
    @Override
    public String getSize() {
        return "Middle";
    }
}
 
public class BigPen implements PenSize {
    @Override
    public String getSize() {
        return "Big";
    }
}
 
 
组合颜色和大小:public class Pen {
    private Color color;
    private PenSize size;
 
    public Pen(Color color, PenSize size) {
        this.color = color;
        this.size = size;
    }
 
    public void draw() {
        System.out.println("Drawing with a " + color.getColor() + " " + size.getSize() + " pen.");
    }
}
posted @ 2025-01-07 22:14  kxzzow  阅读(7)  评论(0)    收藏  举报