windows程序设计课程作业-1

目录

1、作业内容

2、主要思路

(1)写接口

(2)写类具体实现接口

(3)声明委托

(4)创建实例

(5)实例化委托

3、难点分析

1)想明白接口的作用

 2)委托的作用

4、实现代码

 5、运行结果


1、作业内容

使用 C# 编码(涉及类、接口、委托等关键知识点),实现对周黑鸭工厂的产品生产统一管理,主要产品包括鸭脖和鸭翅。武汉工厂能生生产鸭脖和鸭翅,南京工厂只能生产鸭翅,长沙工厂只能生产鸭脖。

具体要求如下:

  • 定义接口 IProductionFactory,包含生产鸭脖和鸭翅的方法。
  • 定义类WuhanFactory、NanjingFactory、ChangshaFactory 分别实现接口 IProductionFactory,用于具体的生产工厂。
  • 使用委托 ProductionDelegate 定义生产委托。
  • 在 Main 函数中,创建不同工厂的实例,并通过生产委托进行生产。

2、主要思路

(1)写接口

按照要求去写一个接口,里面有生产鸭脖和鸭翅的方法,不用具体实现

定义了一个名为IProductionFactory的接口,该接口包含了两个方法:Pr_dnPr_dw

实现该接口的类需要提供这两个方法的具体实现。

interface IProductionFactory
{void Pr_dn();//生产鸭脖void Pr_dw();//生产鸭翅
}

 参考讲解:

87 C#教程-接口使用_哔哩哔哩_bilibili

(2)写类具体实现接口

然后去写三个类,分别去具体实现接口和接口内的方法

实现了IProductionFactory接口的WuhanFactory类。该类包含了Pr_dnPr_dw方法的具体实现,分别输出"生产鸭脖"和"生产鸭翅"的信息。

internal class WuhanFactory : IProductionFactory
{public void Pr_dn() { Console.WriteLine("生产鸭脖"); }public void Pr_dw(){Console.WriteLine("生产鸭翅");}

(3)声明委托

创建实例,最后用委托来实现具体生产的统一管理

    delegate void ProductionDelegate();

(4)创建实例

Main函数中,首先创建了WuhanFactoryNanjingFactoryChangshaFactory的实例,分别赋值给wuhanFactorynanjingFactorychangshaFactory变量。

IProductionFactory wh = new WuhanFactory();
IProductionFactory nj = new NanjingFactory();
IProductionFactory cs = new ChangshaFactory();

(5)实例化委托

然后,定义了一个生产委托productionDelegate,并将wuhanFactory.ProduceDuckNeckwuhanFactory.ProduceDuckWingnanjingFactory.ProduceDuckWing和ChangshaFactory.ProduceDuckNeck方法依次添加到委托中。

最后,通过调用prodCuctionDelegate.Invoke()来触发D委托,依次执行委托中包含的各个工厂的生产方法。

ProductionDelegate productionDelegate = wh.Pr_dn;
//利用+=将方法添加到委托的调用列表里
productionDelegate += wh.Pr_dw;
productionDelegate += nj.Pr_dw;
productionDelegate += cs.Pr_dn;productionDelegate.Invoke();

 参考讲解:

91 C#教程-委托_哔哩哔哩_bilibili

92 C#教程-委托的多播_哔哩哔哩_bilibili

3、难点分析

1)想明白接口的作用

接口本身并实现任何功能,他只是声明实现该接口的对象必须实现的功能。

所以要实现下面这个功能需要接口来完成。

武汉工厂能生生产鸭脖和鸭翅,南京工厂只能生产鸭翅,长沙工厂只能生产鸭脖。

 2)委托的作用

通过委托,可以将多个工厂的生产方法统一管理。调用代码只需要调用委托一次,就可以依次执行多个工厂的生产方法,无需逐个调用每个工厂的方法。这样可以简化代码,提高可读性和可维护性。

同时,他也可以轻松地添加、删除或替换不同工厂的生产方法。

使用+=操作符可以动态地向委托中添加方法,从而实现对多个方法进行管理和调用。这样可以方便地扩展和修改委托的调用列表,而无需修改调用委托的代码。

productionDelegate += wh.Pr_dw;

4、实现代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace work_test
{delegate void ProductionDelegate();interface IProductionFactory{void Pr_dn();//生产鸭脖void Pr_dw();//生产鸭翅}internal class WuhanFactory : IProductionFactory{public void Pr_dn() { Console.WriteLine("生产鸭脖"); }public void Pr_dw(){Console.WriteLine("生产鸭翅");}}internal class NanjingFactory : IProductionFactory{public void Pr_dw() {Console.WriteLine("生产鸭翅");}public void Pr_dn(){Console.WriteLine("不能生产鸭脖");}}class ChangshaFactory : IProductionFactory{public void Pr_dn() { Console.WriteLine("生产鸭脖"); }public void Pr_dw(){Console.WriteLine("不能生产鸭翅");}}internal class Program{static void Main(string[] args){IProductionFactory wh = new WuhanFactory();IProductionFactory nj = new NanjingFactory();IProductionFactory cs = new ChangshaFactory();ProductionDelegate productionDelegate = wh.Pr_dn;productionDelegate += wh.Pr_dw;productionDelegate += nj.Pr_dw;productionDelegate += cs.Pr_dn;productionDelegate.Invoke();Console.ReadLine();}}
}

5、运行结果

vs运行结果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/299028.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5.5G,只比6G少0.5G

5.5G成为通信行业2024年开年的一大焦点。提到5.5G,多出来的0.5G又是啥?为什么不直接迈向6G时代?今天我们一探究竟! “0.5G”,现在与未来的桥梁 2021年,国际标准组织3GPP为通信技术的进一步发展定义了新的里…

【SCI绘图】【曲线图系列1 python】绘制扫描点平滑曲线图

SCI,CCF,EI及核心期刊绘图宝典,爆款持续更新,助力科研! 本期分享: 【SCI绘图】【曲线图1 python】绘制扫描点平滑曲线图 1.环境准备 python 3 import numpy as np import pandas as pd import proplot …

爱上数据结构:二叉树的基本概念

​ ​ 🔥个人主页:guoguoqiang. 🔥专栏:数据结构 ​ 一、树的基本概念 1.概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因 为它看起…

list的使用

前言 我们前面已经对string和vector进行了学习使用,以及对他们的底层进行了模拟实现!本期我们继续学习STL的另外一个容器---list。 本期内容介绍 什么是list? list的常用接口 什么是list? 还是来看看官方的文档说明! 这里通过…

网络网络层之(3)IPv6地址

网络网络层之(3)IPv6协议 Author: Once Day Date: 2024年4月2日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文档可参考专栏:通信网络技术_Once-Day的…

RabbitMQ3.13.x之十_流过滤的内部结构设计与实现

RabbitMQ3.13.x之十_流过滤的内部结构设计与实现 文章目录 RabbitMQ3.13.x之十_流过滤的内部结构设计与实现1. 概念1. 消息发布2. 消息消费 2. 流的结构1. 在代理端进行过滤2. 客户端筛选3. JavaAPI示例4. 流过滤配置5. AMQP上的流过滤6. 总结 3. 相关链接 1. 概念 流过滤的思…

实战篇04:获取用户详细信息

实战篇04:获取用户详细信息 一、接口信息 1.1 基本信息 请求路径:/user/userInfo 请求方式:GET 接口描述:该接口用于获取当前已登录用户的详细信息 1.2 请求参数 无 1.3 响应数据 响应数据类型:application/json …

基于圆柱体镜子和光线跟踪实现镜反射观测全景观图的matlab模拟仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 光线与圆柱镜面的交点计算: 反射光线计算: 全景图坐标转换: 5.完整程序 1.程序功能描述 基于圆柱体镜子和光线跟踪实现镜反射观测全景观图.模拟的场景…

SV学习笔记(七)

文章目录 类型转换写在前面动态转换子类句柄赋值于父类句柄父类句柄转换为子类句柄 虚方法写在前面非虚函数的调用虚函数的调用虚方法的建议为什么使用虚方法 对象拷贝写在前面赋值和拷贝总结 回调函数写在前面实例完成回调函数功能需要三步: 参数化类写在前面实现一…

如何使用极狐GitLab Maven 仓库?

本文作者:徐晓伟 GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 本文主要讲述了如何使用极狐GitLa…

TPAMI:计算机学会像人脑一样“听话”了!清华团队实现混合语音分离技术突破

我们的大脑在处理声音信息时有一个特长:可以将注意力集中在感兴趣的对话或声音上,忽略其它无关的声音或者噪音。我们每天都在不知不觉地运用这种特长,在通勤的地铁上、嘈杂的餐厅里,广播声、音乐声、多人同时说话的声音&#xff0…

Redis中的持久化

持久化 .RDB手动触发save命令bgsave命令 自动触发bgsave的具体流程RDB的处理保存压缩校验 RDB的优缺点 AOF命令写入文件同步重写机制启动时恢复数据 本章重点回顾 . RDB RDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发 手动触发…

【Java+Springboot】----- 通过Idea快速创建SpringBoot项目操作方法

一、第一步: 点击选择【File】->【New】-> 【Project】 最后弹出[new Project]界面。 二、第二步: 1. 选择【Spring Initializr】 2. 然后选择【Project SDK】的版本 3. 然后 Choose Initializr Service URL 选择默认(Default&#x…

JAVA8 新特性StreamAPI使用(二)

一、使用StreamAPI,(基于数据模型——客户、订单和商品,实体关系图如下,客户可以有多个订单,是一对多的关系,而产品和订单的关系是多对多的)需求如下: 二、Stream API思维导图 三、需…

【Java EE】SpringBoot的创建与简单使用

文章目录 🍀环境准备🌳Maven🌲SpringBoot是什么🎄Spring Boot 项目创建🌸使用Idea创建🌸创建SpringBoot项⽬🌸SpringBoot项目的运行 ⭕总结 🍀环境准备 如果你的IDEA是专业版&#…

六、从零实战企业级K8S本地部署ThingsBoard专业版集群

1、从 docker hub 拉取 ThingsBoard PE 映像(所有节点) 1.1、查看k8s信息(主节点) kubectl cluster-info #查看k8s集群信息 kubectl get node #查看节点信息 kubectl get pod -A #查看内部组件1.2、从 docker hub 拉取 ThingsBoard PE 映像(所有…

SYS-2722音频分析仪SYS2722

181/2461/8938产品概述: Audio Precision 2722 音频分析仪是 Audio Precision 屡获殊荣的 PC 控制音频分析仪的旗舰型号,长期以来一直是音频设备设计和测试的全球公认标准。功能齐全的 SYS-2722 提供了测试转换器技术最新进展所需的无与伦比的失真和噪声…

Linux云计算之网络基础9——园区网络架构项目

要求构建大型园区网络架构,方案如下: 园区A 园区c 公司B 要求: 1、A公司园区网络 一台汇聚层三层交换机,两台接入层二层交换机。 出口有一台路由器。 2、A园区有五台服务器。 分别为两台 WEB 服务器,…

专注项目管理的Mac工具 - Project Office Pro 最新版

Project Office Pro for Mac是一款功能强大的项目管理软件,旨在帮助用户更好地管理和跟踪项目进展,提高工作效率和质量。以下是该软件的主要功能介绍: 项目创建与编辑:用户可以根据自己的需求自定义项目计划,包括设置…

C#手术麻醉信息系统源码,技术框架:Vue,Ant-Design+百小僧开源框架

C#手术麻醉信息系统源码,技术框架:Vue,Ant-Design百小僧开源框架 手术麻醉系统主要用于在手术过程中监测和控制患者的状态,确保手术的顺利进行并保障患者的生命安全。该系统通过一系列先进的医疗设备和技术,为手术患者…