软件建模知识点

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

前言

一、软件建模

二、ilearning推荐入口

三、对象组合

四、接口的概念

五、extends和implements

六、super

七、装饰模式

总结


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、软件建模

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

组合>聚合>关联>依赖。

类图中的6大关系_类图的六种关系-CSDN博客

用例图中的include关系是对应UML四种关系中的(依赖)

二、ilearning推荐入口

链接: 

如何学习设计模式? - 知乎

三、对象组合

1、对象组合介绍

帖子:Java初学 对象组合及调用_java对象组合-CSDN博客

四、接口的概念

1、c++中接口的概念

以下是帖子中对接口的介绍


在C++中,接口(Interface)是一种抽象的概念,用于定义类或模块对外提供的操作、方法或功能的集合。接口规定了类或模块的公共契约,描述了其可用的方法和属性,而不涉及具体的实现细节。

在C++中,接口可以通过抽象类(Abstract Class)和纯虚函数(Pure Virtual Function)来实现。

抽象类是一个包含至少一个纯虚函数的类,无法直接实例化,只能作为基类使用。抽象类用于定义接口,规定了派生类必须实现的方法。派生类必须实现基类的纯虚函数才能被实例化。抽象类中可以包含非纯虚函数和成员变量。

以下是一个抽象类的示例:
 

class AbstractShape {
public:
    virtual void draw() = 0;   // 纯虚函数,定义了接口
    virtual double area() = 0; // 纯虚函数,定义了接口
 
    void printName() {
        std::cout << "Abstract Shape" << std::endl;
    }
};
 
class Circle : public AbstractShape {
public:
    void draw() override {
        std::cout << "Drawing a circle." << std::endl;
    }
 
    double area() override {
        // 计算圆的面积
    }
};
 
class Rectangle : public AbstractShape {
public:
    void draw() override {
        std::cout << "Drawing a rectangle." << std::endl;
    }
 
    double area() override {
        // 计算矩形的面积
    }
};

在上述示例中,`AbstractShape` 是一个抽象类,包含了纯虚函数 `draw()` 和 `area()`,定义了图形类的接口。派生类 `Circle` 和 `Rectangle` 必须实现这两个纯虚函数才能被实例化。

纯虚函数通过在声明末尾添加 `= 0` 来标记,它们没有默认的实现,只提供了接口的定义。任何包含纯虚函数的类都被认为是抽象类,不能直接实例化,只能作为基类使用。

接口的使用可以实现多态性,使得不同的类可以使用相同的接口来进行操作,增强了代码的灵活性、可扩展性和可维护性。
c++接口_TenSun2023的博客-CSDN博客


2、java

java中接口有interface说明。

五、extends和implements

extends和implements的概念和区别

翻译:extends翻译延伸     implements翻译实施

1、Java的extends(继承)与implements(接口)

百度安全验证

2、c++

C++中用 :extends来表示继承关系。

c++中好像没有implements这个关键字。

这个帖子里有介绍final和this的用法,还介绍了c++的struct和class。

还介绍了override的用法:【override 关键字是 C++11 引入的,用来在派生类中成员函数声明时明确表明需要派生类去重写的那些成员方法,这样如果程序员在成员方法实体定义中做的不对编译器可以报错提醒】

C++学习笔记9 - 类与面向对象中的关键字_c++面向对象关键字__Amen的博客-CSDN博客

 六、super

这个帖子介绍了super的用法

言简意赅:由于子类不能继承父类的构造方法,因此,如果要调用父类的构造方法,可以使用 super 关键字。super 可以用来访问父类的构造方法、普通方法和属性。

super 关键字的用法:

super.父类属性名:调用父类中的属性
super.父类方法名:调用父类中的方法
super():调用父类的无参构造方法
super(参数):调用父类的有参构造方法

 面向对象(下)④_c++ 子类比父类多一些职能_晓辰&的博客-CSDN博客

七、装饰模式

这个帖子里的代码亲测可行

package decorator;
import java.awt.*;
import javax.swing.*;
public class MorriganAensland
{
    public static void main(String[] args)
    {
        Morrigan m0=new original();
        m0.display();
        Morrigan m1=new Succubus(m0);
        m1.display();
        Morrigan m2=new Girl(m0);
        m2.display();
    }
}
//抽象构件角色:莫莉卡
interface  Morrigan
{
    public void display();
}
//具体构件角色:原身
class original extends JFrame implements Morrigan
{
    private static final long serialVersionUID = 1L;
    private String t="Morrigan0.jpg";
    public original()
    {
        super("《恶魔战士》中的莫莉卡·安斯兰");
    }
    public void setImage(String t)
    {
        this.t=t;
    }
    public void display()
    {
        this.setLayout(new FlowLayout());
        JLabel l1=new JLabel(new ImageIcon("src/decorator/"+t));
        this.add(l1);
        this.pack();
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
}
//抽象装饰角色:变形
class Changer implements Morrigan
{
    Morrigan m;
    public Changer(Morrigan m)
    {
        this.m=m;
    }
    public void display()
    {
        m.display();
    }
}
//具体装饰角色:女妖
class Succubus extends Changer
{
    public Succubus(Morrigan m)
    {
        super(m);
    }
    public void display()
    {
        setChanger();
        super.display();
    }
    public void setChanger()
    {
        ((original) super.m).setImage("Morrigan1.jpg");
    }
}
//具体装饰角色:少女
class Girl extends Changer
{
    public Girl(Morrigan m)
    {
        super(m);
    }
    public void display()
    {
        setChanger();
        super.display();
    }
    public void setChanger()
    {
        ((original) super.m).setImage("Morrigan2.jpg");
    }
}

 IDEA file-new-project创建无框架的java工程,在src创建package名为decorator的包,在该package创建java文件,即将代码粘贴到java文件中,同时将下载的三个图片放在MorriganAensland.java同级目录下,点击运行,则显示茉莉卡三个图片,成功!

装饰模式(Decorator模式)详解-CSDN博客


2023年10月19日11:25:00总结以上,上面的其实的源头是查牛客题目上的装饰模式,然后牵扯出一大片,害,确实有收获啊,因为一个点牵扯出那么多的知识点,很多还是自己之前一直很难理解的东西,比如super。

以前都不明白别人是怎么能写那么大一个工程,现在才慢慢开始理解,因为他们用的设计模式,先整理好架构才写的大工程。

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

你可能感兴趣的:(软件设计与重构,统一建模语言)