windows程序设计课程作业-1

2024-04-10 1176阅读

目录

1、作业内容

2、主要思路

(1)写接口

(2)写类具体实现接口

(3)声明委托

(4)创建实例

(5)实例化委托

3、难点分析

1)想明白接口的作用

2)委托的作用

4、实现代码

5、运行结果


1、作业内容

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

具体要求如下:

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

    作业要求

    请以博客方式提交作业,博客内容需要对代码行进行讲解,阐述设计的主要思路与难点。
    请注意,如果想达到博客网站如csdn的优质博文的质量分,需要对博客进行详细描述。
    提交方式为提交博客发布地址,并附上本博文的质量分。

    2、主要思路

    (1)写接口

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

    定义了一个名为IProductionFactory的接口,该接口包含了两个方法:Pr_dn和Pr_dw。

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

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

     参考讲解:

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

    (2)写类具体实现接口

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

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

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

    (3)声明委托

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

        delegate void ProductionDelegate();

    (4)创建实例

    在Main函数中,首先创建了WuhanFactory、NanjingFactory和ChangshaFactory的实例,分别赋值给wuhanFactory、nanjingFactory和changshaFactory变量。

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

    (5)实例化委托

    然后,定义了一个生产委托productionDelegate,并将wuhanFactory.ProduceDuckNeck、wuhanFactory.ProduceDuckWing、nanjingFactory.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、运行结果

    windows程序设计课程作业-1 vs运行结果
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]