码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 软件设计体系 实验一 经典软件体系结构风格


    目录

    • 写在前面
    • 一、思考题1
      • 面向对象软件体系结构与主程序-子程序软件体系结构的区别和联系是什么?
    • 二、思考题2
      • 从理论上讲,主程序-子程序软件体系结构组件是什么?连接件是什么?特点是什么?上述实验1程序中具体的组件是什么?连接件是什么?
    • 三、思考题3
      • 从理论上讲,面向对象软件体系结构组件是什么?连接件是什么?特点是什么?上述实验2程序中具体的组件是什么?连接件是什么?
    • 四、思考题4
      • 编写一个主程序-子程序软件体系结构的程序(功能自定),并说明程序中的组件是什么?连接件是什么?
    • 五、思考题5
      • 编写一个面向对象软件体系结构的程序(功能自定),并说明程序中的组件是什么?连接件是什么?(要有对象间的交互,不能只有类间的交互)。
    • 六、思考题6
      • 管道-过滤器软件体系结构与批处理软件体系结构的区别和联系是什么?
    • 七、思考题7
      • 从理论上讲,管道过滤器软件体系结构组件是什么?连接件是什么?特点是什么?上述实验2程序中具体的组件是什么?连接件是什么?
    • 八、思考题8
      • 编写一个管道过滤器软件体系结构的程序(功能自定),并说明程序中的组件是什么?连接件是什么?

    写在前面

    为什么要写这篇博客,原因很简单,因为我觉得以下的知识没有多大的用处,完全就是一个查阅课本的过程,但是浪费的时间实在是太多,我从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 
    using namespace std;
    void Happy()
    {
    	printf("我俩啊,最爱打闹了,对吗");
    }
    int main()
    {
    	Happy();
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    组件是主程序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);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    组件有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();
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

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

  • 相关阅读:
    信贷风控拒绝客户的捞回策略详解
    海南省建设自由贸易岛对海南旅游发展影响的思考
    免费享受企业级安全:雷池社区版WAF,高效专业的Web安全的方案
    跨链自动化中心 OAK Network,构建安全高效 Web3 基础设施
    基于机器学习和奇异值分解SVD的电池剩余使用寿命预测(Python)
    接口、压力测试工具入门指南
    「PAT乙级真题解析」Basic Level 1099 性感素数 (问题分析+完整步骤+伪代码描述+提交通过代码)
    高项 成本管理论文
    次氯酸(HClO)荧光探针 激发波长567 nm
    Oracle、MySQL等数据库故障处理优质文章分享 | 10月文章汇总
  • 原文地址:https://blog.csdn.net/m0_59792745/article/details/126572780
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号