实验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 @ 2024-10-05 22:31  不会JAVA的小袁  阅读(6)  评论(0编辑  收藏  举报