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.");
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/865565.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RASP从0到1

一、环境配置 在讲晦涩难懂的理论之前,先配个代码环境: https://xz.aliyun.com/t/4902?time__1311=n4%2Bxni0QKmTbG8DBDBqDqpDUO2QooDkbIbReDhttps://xz.aliyun.com/t/4903?time__1311=n4%2Bxni0QKmTbG8DyDBqDqpYHQTRZnpoD按照文1进行环境搭建,文1中文件名应为MANIFEST.MF…

springcloud版本选择

首先到官网:https://spring.io/projects/spring-cloud#overview 本文来自博客园,作者:余生请多指教ANT,转载请注明原文链接:https://www.cnblogs.com/wangbiaohistory/p/18658446

【网络安全法】某公众号作者擅自发布安全漏洞被处罚

今天,各大安全圈交流群疯狂转发某公众号作者擅自发布安全漏洞,被攻击者利用攻击某企业的消息。随着网安行业下行,大量网安从业者开始步入自媒体行业,有部分从业者为了博取眼球,增加流量,通过发布一些安全漏洞及poc来寻求更多人阅读和关注,显然作为网络安全从业者,没有仔…

Ultra-Low Precision 4-bit Training of Deep Neural Networks

目录概主要内容Radix-4 FP4 formatGradScaleTwo-Phase Rounding (TPR)Sun X., Wang N., Chen C., Ni J., Agrawal A., Cui X., Venkataramani S. and Maghraoui K. E. and Srinivasan V. Ultra-low precision 4-bit training of deep neural networks. NeurIPS, 2020.概 本文提…

征程 6X release版本内核模块安全加载

1.概述 征程 6X 系统在 release 编译时支持内核模块签名验证,仅加载使用正确密钥进行数字签名的内核模块。禁止加载未签名的内核模块或使用错误密钥签名的内核模块,客户需要替换成自己的 key 进行签名。 模块签名启用后,Linux 内核将仅加载使用正确密钥进行数字签名的内核模…

有奖活动:pick 你最爱的 AI 项目!拿社区年度大奖!

🎄 R 友们,一年一度的春节又这么水灵灵的快到来了!🙋 陈运营给大家准备了四重好礼,快!往!下!看!⬆️ RTE 开发者社区功能再次升级!新增小助手推荐、私信功能,还有神秘功能马上上线~等你来体验!🎁 更重要的是!我们给大家准备的丰~厚~礼~包~已就位,快来 p…

BIND域名解析服务器搭建

dns介绍: dns域名解析服务,管理和解析域名与ip地址对应关系的技术 正向解析:域名解析为ip地址;反向解析:ip地址解析为域名 dns域名解析服务采用类似目录树层次结构记录域名与ip对应关系,采用分布式数据结构存储三种类型服务器: 主服务器:在特定区域内具有唯一性,负责维…

JS-20 字符串

字符串就是零个或多个排在一起的字符,放在单引号或双引号之中 zifuchan "zifuchuan" 单引号字符串的内部,可以使用双引号。双引号字符串的内部,可以使用单引号 key="value" "Its a long zifuchuan" 如果要在单引号字符串的内部,使用单引号,…

【Leetcode_Hot100】二叉树

二叉树 94. 二叉树的中序遍历 104. 二叉树的最大深度 226. 翻转二叉树 101. 对称二叉树 543. 二叉树的直径 102. 二叉树的层序遍历 108. 将有序数组转换为二叉搜索树 98. 验证二叉搜索树 230. 二叉搜索树中第 K 小的元素 199. 二叉树的右视图 114. 二叉树展开为链表 105. 从前序…

tcp_wrappers模块实现服务访问控制

介绍: 1、对有状态连接的特定服务进行安全检测并实现访问控制,所以只能用于tcp服务 2、判断进程是否接收tcp_wrappers的控制,取决于程序在编译时是否添加了libwrap库 3、类似防火墙的功能,但需要程序支持;对于一些访问控制可简单配置即可实现查询程序是否tcpwrap模块 存放…

linux PAM可插拔认证模块介绍

PAM(Pluggable Authentication Modules ) 介绍 通过提供一些动态链接库和一套统一的API,将系统提供的服务 和该服务的认证方式分开 使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段流程图说明:1、…

大三上加分细则

1、做液压项目 2、恋爱成功 3、通过软考中级