9.14UML与面向对象程序设计原则

 

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

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、掌握面向对象程序设计中类与类之间的关系以及对应的UML类图;

2、理解面向对象程序设计原则。

 
   

 


[实验任务一]:UML复习

阅读教材第一章复习UML,回答下述问题:

面向对象程序设计中类与类的关系都有哪几种?分别用类图实例说明。

一、   继承

继承关系表示一个类继承另一个类的属性和方法。例如,狗是一种动物,狗类继承动物类的一些属性和方法。

 

 

二、     关联关系

 

关联关系表示两个类之间存在某种语义上的联系。例如,一个学生和一个课程之间存在关联关系,因为学生需要选择课程进行学习。

 

三、       聚合关系

 

聚合关系是一种特殊的关联关系,表示整体与部分的关系,但是部分可以脱离整体而独立存在。例如,汽车和轮胎之间是聚合关系,轮胎可以从汽车上拆卸下来单独存在。

 

四、       组合关系

组合关系也是整体与部分的关系,但与聚合关系不同的是,部分不能脱离整体而独立存在。例如,人和心脏之间是组合关系,心脏不能离开人而单独存在。

 

五、       依赖关系

依赖关系表示一个类的变化会影响另一个类。例如,一个汽车驾驶员依赖于汽车才能驾驶

 

[实验任务二]:单一职责原则

登录模块在实际项目开发中很常见,请按照教材28页(PPT49页)利用单一职责原则重构后的类图实现这一模块。

实验要求:

1.提交源代码和对应的数据库文件(注意将此模块保存,以备以后使用);

2.注意编程规范。

 

create database ems;
use  ems;
--
创建用户表
drop table users;
CREATE DATABASE ems;

USE ems;

CREATE TABLE users (
                       id INT AUTO_INCREMENT PRIMARY KEY,
                       username VARCHAR(50) NOT NULL,
                       password VARCHAR(255) NOT NULL,
                      );

 

 

 

[实验任务三]:依赖倒转原则与合成复用原则

在一画图软件中提供了多种大小不同的画笔,并且可以给画笔指定不同的颜色,某设计人员对画笔进行了如上图所示的设计。通过分析,可以发现增加画笔的种类和颜色会使得系统中类的数目急剧增加,请根据合成复用原则和依赖倒转原则对上述设计进行重构。

实验要求:

1.提交源代码;

2.画出重构后的类图。

1.public interface Pen {

    void draw();

}

public abstract class AbstractPen implements Pen {

    protected String size;

    protected String color;

 

    public AbstractPen(String size, String color) {

        this.size = size;

        this.color = color;

    }

 

    @Override

    public void draw() {

      

    }

}

public class SmallPen extends AbstractPen {

 

    public SmallPen(String color) {

        super("small", color);

    }

 

    @Override

    public void draw() {

        System.out.println("Drawing with small pen of color " + color);

    }

}

 

public class MiddlePen extends AbstractPen {

 

    public MiddlePen(String color) {

        super("middle", color);

    }

 

    @Override

    public void draw() {

        System.out.println("Drawing with middle pen of color " + color);

    }

}

 

public class BigPen extends AbstractPen {

 

    public BigPen(String color) {

        super("big", color);

    }

 

    @Override

    public void draw() {

        System.out.println("Drawing with big pen of color " + color);

    }

}

 

2.

 

posted @ 2025-01-02 15:20  jais  阅读(15)  评论(0)    收藏  举报