實驗1:UML與物件導向程式設計原則

不会JAVA的小袁發表於2024-10-05

[實驗任務一]: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.");

}

}

相關文章