写点什么

软件设计体系 实验一 经典软件体系结构风格

作者:游坦之
  • 2022-11-27
    山东
  • 本文字数:2700 字

    阅读完需:约 9 分钟

写在前面

为什么要写这篇博客,原因很简单,因为我觉得以下的知识没有多大的用处,完全就是一个查阅课本的过程,但是浪费的时间实在是太多,我从 0 到 1 查阅了差不多 3 个多小时,所以为了大家不要和我一样,我把思考题放在下面,也请有缘人==懂得变通==!

一、思考题 1

面向对象软件体系结构与主程序-子程序软件体系结构的区别和联系是什么?

主程序-子程序体系结构在设计上使用层次化的划分方法,通常采用自顶向下的功能化设计方法。面向对象体系结构在设计上使用面向对象的设计方法,可以隐藏对象的内部状态并且要求所有对象之间的交互都通过该方法,即进行了数据封装,这也是面向对象编程的基本原则。

二、思考题 2

从理论上讲,主程序-子程序软件体系结构组件是什么?连接件是什么?特点是什么?上述实验 1 程序中具体的组件是什么?连接件是什么?

软件体系结构中主程序—子程序体系结构是较简单的结构,其组件是主程序和子程序,连接件是调用返回机制。实验 1 中的组件是 main()函数和 max(a,b)函数。连接件是 main()函数调用 max(a,b)函数,max()函数将实参 a,b 分别传递给形参 x,y;通过运算得到较大值 z,并将 z 返回到调用出,赋值给 main()函数的变量 c。

三、思考题 3

从理论上讲,面向对象软件体系结构组件是什么?连接件是什么?特点是什么?上述实验 2 程序中具体的组件是什么?连接件是什么?

面向对象体系结构风格的组件是类和对象。连接件是对象之间通过功能与函数调用实现交互。对象是通过函数和过程的调用-返回机制来交互的,而类是通过定义对象,再采用调用-返回机制进行交互。上述实验 2 中具体的组件是 Spot 类、Trans 类、Test 类以及 Spot 类的对象 s,Trans 类的对象 ts,Spot 的对象 p。

四、思考题 4

编写一个主程序-子程序软件体系结构的程序(功能自定),并说明程序中的组件是什么?连接件是什么?

程序:


#include <iostream>using namespace std;void Happy(){  printf("我俩啊,最爱打闹了,对吗");}int main(){  Happy();  return 0;}
复制代码


组件是主程序 main()函数和子程序 Sad()函数,连接件是 main()函数调用 Happy()函数。

五、思考题 5

编写一个面向对象软件体系结构的程序(功能自定),并说明程序中的组件是什么?连接件是什么?(要有对象间的交互,不能只有类间的交互)。

package com.you;class Spot{    private int x,y;    Spot(int u, int v){        setX(u);        setY(v);    }    void setX(int x1){        x=x1;    }    void setY(int y1){        y=y1;    }    int getX(){        return x;    }    int getY(){        return y;    }}class Trans{    int Add(Spot p){        int c = p.getX() + p.getY();        return c;    }}class Test{    public static void main(String args[]){        Spot s = new Spot(2,3);        System.out.println("s点的坐标:" + s.getX() + "," + s.getY());        Trans ts = new Trans();        int c = ts.Add(s);        System.out.println(c);    }}
复制代码


组件有 Spot、Trans、Test 三个类,以及 Spot 类的对象 s,Trans 类的对象 ts,Spot 类的对象 p。连接件如下:在 Test 类中创建 Spot 类的对象 s,Trans 类的对象 ts,Trans 类的 add()方法的参数有 Spot 的对象 p。Test 类使用 Spot 类的对象 s,调用了 Spot 类的 getX()和 getY 方法。Test 类使用 Trans 类的对象 ts,调用了 Trans 类的 add()方法,并把实参 Spot 类的对象 s 传递给了形参 Spot 类的对象 p。

六、思考题 6

管道-过滤器软件体系结构与批处理软件体系结构的区别和联系是什么?

管道/过滤器结构通常导致进程成为批处理的结构,因为虽然过滤器可增量式地处理数据,但它们是独立的,所以设计者必须将每一个过滤器看成一个完整的从输入到输出的转换。.限定过滤器的数据存储容量,就可以得到有界管道过滤器。过滤器将所有输入数据作为单个实体进行处理,这就是批处理系统。

七、思考题 7

从理论上讲,管道过滤器软件体系结构组件是什么?连接件是什么?特点是什么?上述实验 2 程序中具体的组件是什么?连接件是什么?

过滤器视为组件。数据流传输的管道视为连接件。管道将一个过滤器的输出传给另一个过滤器的输入。特点:一个过滤器必须完全独立于其他的过滤器(零耦合)----独立的实体。它不能与其他过滤器共享数据----在其上行和下行数据流接口分享状态、控制线程或标识,而且一个过滤器不知道其上游和下游的标识。 实验 2 程序中的组件是:sender 和 receiver。 体现连接件关键语句是:PipedOutputStream out =s.getOut(),这条语句的作用是发送端送出数据。 PipedInputStream in =r.getIn();这条语句的作用是接收端接送数据。in.connect(out);这条语句的作用是衔接管道两端。

八、思考题 8

编写一个管道过滤器软件体系结构的程序(功能自定),并说明程序中的组件是什么?连接件是什么?

package com.you;import java.io.PipedInputStream;import java.io.PipedOutputStream;public class TestPiped{    public static void main(String [] args){        A a = new writer();        B b = new reader();        PipedOutputStream out = a.getOut();        PipedInputStream in = b.getIn();        try{            in.connect(out);            a.start();            b.start();        }catch(Exception e){            e.printStackTrace();        }    }}class A extends Thread {    PipedOutputStream out = new PipedOutputStream();    public PipedOutputStream getOut(){        return out;    }    public void run() {        String str = "大家好,我是卢本伟,这句话是我说的:\n";        try {            out.write(str.getBytes());            out.close();        } catch(Exception e) {            e.printStackTrace();        }    }}class Bextends Thread {    PipedInputStream in = new PipedInputStream();    public PipedInputStream getIn() {        return in;    }    public void run(){        byte [] buf = new byte[1024];        try {            int len = in.read(buf);            System.out.println("这句话来自卢本伟:\n"+new String(buf,0,len));            in.close();        }catch(Exception e) {            e.printStackTrace();        }    }}
复制代码


实验 2 程序中的组件是:writer 和 reader。 体现连接件关键语句是:PipedOutputStream out =a.getOut(),这条语句的作用是发送端送出数据。 PipedInputStream in =b.getIn();这条语句的作用是接收端接送数据。in.connect(out);这条语句的作用是衔接管道两端。

用户头像

游坦之

关注

还未添加个人签名 2022-10-14 加入

还未添加个人简介

评论

发布
暂无评论
软件设计体系 实验一 经典软件体系结构风格_设计模式_游坦之_InfoQ写作社区