首页 > 编程语言 >实验1:UML与面向对象程序设计原则

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

时间:2024-10-05 22:33:34浏览次数:8  
标签:PenSize String utf8mb4 class getSize 面向对象 程序设计 UML public

[实验任务一]: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.");

    }

}

 

 

 

 

标签:PenSize,String,utf8mb4,class,getSize,面向对象,程序设计,UML,public
From: https://www.cnblogs.com/yuanxinglan/p/18448602

相关文章

  • 2017中国大学生程序设计竞赛 - 女生专场(SDKD 2024 Summer Training Contest K2)
    A-AutomaticJudge题意\(n\)个问题,\(m\)条记录,每条记录有题号、时间、状态,第一次\(AC\)的时候计入罚时,其他没发罚\(20\)分钟。求队伍过题数和罚时。思路模拟。代码点击查看代码#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongvoidsolve()......
  • Java面向对象第四章方法重写与多态练习题
    练习1:使用重写优化电子宠物系统需求说明使用方法重写优化电子宠物系统,实现如下效果 packagecom.hz.ch02;/***猫类*@author26255**/publicclassCatextendsFather{ privateStringsex; publicCat(Stringname,inthealth,intlove,Stringse......
  • 全网最适合入门的面向对象编程教程:55 Python字符串与序列化-字节序列类型和可变字节字
    全网最适合入门的面向对象编程教程:55Python字符串与序列化-字节序列类型和可变字节字符串摘要:在Python中,字符编码是将字符映射为字节的过程,而字节序列(bytes)则是存储这些字节的实际数据结构,字节序列和可变字节字符串的主要区别在于其可变性和用途,bytearray是可变的字节序列......
  • Java多态性:面向对象编程的精髓
    目录1.什么是多态性?2.多态性的两种形式2.1 编译时多态(静态多态)2.2 运行时多态(动态多态)3.多态性的好处4.示例代码5.拓展知识5.1抽象类和接口5.2泛型5.3反射在软件开发的世界里,Java以其强大的面向对象编程(OOP)特性而闻名。今天,我们将深入探讨Java中的核心概......
  • 【Ubuntu】PlantUML工具 | 安装 | 语法 | 使用工具画序列图
    ......
  • 2024 北京市大学生程序设计竞赛
    Preface北京市赛(×),小WF(确信)感觉这场题总体都挺难的,除了前1h出了两个题后,后面基本上都是1h出一题然后最后1h发生了经典的我和徐神B,F双开双会,最后开始抢机时,最后经典的一个没写出来赛后发现F赛时代码改个初值就能过了,而徐神多花了半小时也是成功把B过了只能说还......
  • 《Java 基础篇》二:面向对象
    Author:ACatSmilingSince:2024-09-30概述面向过程(POP)与面向对象(OOP):二者都是一种思想,面向对象是相对于面向过程而言的。面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做。面向对象,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。面向对......
  • Java学习第七天--面向对象
    目录1.学什么 2.类2.1类的组成2.2类与对象的关系3.对象内存图 4.成员变量和局部变量5.this关键字6.构造方法6.1构造器6.2格式:6.3执行时机:6.4构造方法作用6.5构造方法注意事项6.5.1构造方法的创建6.5.2构造方法的重载6.5.3推荐的使用方式7.封装7.1合理隐藏,......
  • 在面向对象编程中,感觉桥接和组合好像很像,他们有什么共性和差别呢
    1.相关链接最简单的桥接模式-CSDN博客最简单的理解组合模式_组合模式举例-CSDN博客 2.内容在面向对象编程中,桥接模式和组合模式确实有一些相似之处,但它们在设计理念和应用场景上存在显著的差异。以下是对这两种模式的共性和差别的详细分析:共性结构型设计模式:桥接模式和......
  • 面向对象编程中,对象的几种关系分别都是啥
    在面向对象编程中,对象之间的关系是构建复杂系统的基础。这些关系定义了对象之间如何交互和协作。以下是面向对象编程中对象的几种主要关系:1.依赖关系(Dependency)定义:一个类依赖于另一个类的定义。这种关系通常表现为一个类的方法参数、返回值或局部变量使用了另一个类。特点:......