• 【 塔 · 第 三 条 约 定 】


    【 塔 · 第 三 条 约 定 】

    编写一个多边形作为基类(成员:定点数)

    抽象方法(子类实现):体积、边长

    一)正三角形类:成员 边长

    二) 长方形类:成员 长宽

    ​ 在编写过程中着实遇到了超乎于我想象的困难。我所想实现的转化为编程语言却不是那么的容易,到最后实现起来马马虎虎,完全没有实现多态和封装,而且代码也不完美,完全是简单粗暴的小白代码。希望大家能在评论里指导我。

    问题

    • 构造函数方法和实例化没有弄清楚
    • 如何将主函数中从键盘输入数值传入子类构造的函数中,并调用
    • 如何实现对子类的封装,使即使对象多个代码也不会过于冗长和啰嗦,且添加和删除对象可以简单化只改动小部分代码。
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 约定3
    {
        abstract class Duo//抽象类
        {
    
            public int N { get; set; }
            public string Name { get; set; }
            public double area;
            public abstract void Area();
            public abstract double getS();
        }
        class Triangle : Duo//三角形
        {
            public double length { get; set; }//读入边长
            public override double getS()//计算面积
            {
                return length * length * Math.Sqrt(3) * 0.25;
            }
    
            public override void Area()//对象面积,输出
            {
                Console.WriteLine("Triangle's area is {0}.", getS ());
            }
        }
        class Rectangle : Duo//长方形
        {
            public double length { get; set; }//读入长
            public double width { get; set; }//读入宽
            public override double getS()//计算面积
            {
                return length * width;
            }
    
            public override void Area()//对象面积,输出
            {
                Console.WriteLine("Rectangle's area is {0}.", getS ());
            }
    
        }
        class Program
        {
         
            static void Text(Duo duo)//封装,共同的特点
            {
                Console.WriteLine(duo.Name +  " have " + duo.N + " apexes.");
                duo.Area();
            }
            static void Main(string[] args)
            {;
                Console.WriteLine("Please enter a number of apexes:");
                int N = Convert.ToInt32(Console.ReadLine());//由输入的定点数决定对象,但是不封闭,若是对象数过多,则Boom!此处没有想出改善的办法
                while (N == 3 || N == 4)
                {
                    if (N == 3)
                    {
                        Console.WriteLine("the duobianxing is Triangle.
    ");
                        Console.WriteLine("Please enter its length:");
                        Duo triangle = new Triangle() { N = 3, Name = "Triangle", length = Convert.ToInt32(Console.ReadLine()) };
                        Text(triangle);
                        Console.WriteLine("
    Please enter a number of apexes and its length:");
                        N = Convert.ToInt32(Console.ReadLine());
                    }
                    else if (N == 4)
                    {
                        Console.WriteLine("the duobianxing is Rectangle.");
                        Console.WriteLine("Please enter its length and ");
                        Duo retangle = new Rectangle() { N =4, Name = "Retangle", length = Convert.ToInt32(Console.ReadLine()), width = Convert.ToInt32(Console.ReadLine()) };
                       
                        Text(retangle);
                        Console.WriteLine("
    Please enter a number of apexes and its length:");
                        N = Convert.ToInt32(Console.ReadLine());
                    }
                    else Console.WriteLine("The class is developing.So you can't see it now.GoodBey.");
                }
                Console.ReadLine();
        }
      }
    }
    
    

    此段代码暂时只提供三角形和长方形这两个多边形类的对象,希望大神告知如若对象N多,该如何改进。谢谢!

  • 相关阅读:
    ssh登陆报错“WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!”的解决方法
    python错误:SyntaxError: invalid character in identifier
    Python3中出现UnicodeEncodeError: 'ascii' codec can't encode characters in ordinal not in range(128)的解决方法
    Jmeter在Mac下安装教程
    TensorFlow | win10下使用docker安装tensorflow
    Docker | 删除 image 失败的一种情况
    基础技能 | Git
    Leetcode-探索 | 两数之和
    Leetcode-探索 | 移动零
    基础复习-算法设计基础 | 复杂度计算
  • 原文地址:https://www.cnblogs.com/fzu031602506/p/6388109.html
Copyright © 2020-2023  润新知