-2

我真的希望你们能够帮助我我正在尝试制作一个关于继承和数组的程序 Amma 正好是我尝试过的问题,但我无法正确显示......

使用实例变量(packageId、weight、costperounce、senderName、senderaddress、city、recipientName、recipient city、recipient parish)创建一个名为 package 的基类。这就是我应该做的

使用继承层次结构创建一个显示收件人和发件人地址信息的应用程序。并计算几个包裹的运输成本(重量*每盎司成本)。应用程序应包含一个类 TwoDayPackage 和隔夜包的包对象数组。TwoDayPackage 的运输费包括在基本计算中增加的 500.00 美元的统一费率,而 OverNightPackage 包括在每盎司成本乘以包裹重量的基础上增加的 1500.00 美元的统一费率。循环遍历数组以多态地处理包。

对于每个包裹,使用属性来获取发件人和收件人的地址信息,然后打印这两个地址,因为他们也会在邮寄标签上备用。所有每个包裹的成本方法并打印结果。跟踪数组中所有包裹的总运输成本,并在循环终止时显示总成本

请帮助我,我已经用了将近一个星期了,我们将不胜感激

4

1 回答 1

4

也许这会有所帮助,我今天感到很慷慨。

您的作业可能试图迫使您学习的一些事情以及将通过其中一些主题的一些链接

  1. 覆盖与新
  2. 多态性
  3. 遗产
  4. 数组与列表
  5. 数组调整大小

      class Program
    {
        static void Main(string[] args)
        {
            //the array method
            var test = new Order();
            test.AddPackage(new OvernightPackage() { WeightInOunces = 10, Sender = new Person() { Name = "Sender"}, Recipient = new Person() {Name = "Recipient"}});
            test.AddPackage(new TwoDayPackage() { WeightInOunces = 16, Sender = new Person() { Name = "Sender" }, Recipient = new Person() { Name = "Recipient" } });
            test.AddPackage(new TwoDayPackage() { WeightInOunces = 10, Sender = new Person() { Name = "Sender" }, Recipient = new Person() { Name = "Recipient" } });
            test.PrintManifestsWithArray();
    
            //the list way
            test.Packages = new List<Package>(test.PackagesArray);
            test.PrintManifests();
    
    
            Console.ReadLine();
        }
    }
    
    public class Person
    {
        public string Name { get; set; }
        public Address Address { get; set; }
    }
    
    public class Address
    {
        public string StreetAddress { get; set; }
        public string City { get; set; }
        public string State { get; set; }
        public string ZipCode { get; set; }
    }
    
    public abstract class Package
    {
        protected Package()
        {
            CostPerOunce = .08;
            WeightInOunces = 0;
        }
        public string Id { get; set; }
        public int WeightInOunces { get; set; }
        public double DeliveryCost { get { return CalculateCost(); } }
        public Person Sender { get; set; }
        public Person Recipient { get; set; }
        public double CostPerOunce { get; set; }
        protected virtual double CalculateCost ()
        {
            return WeightInOunces*CostPerOunce;
        }
    }
    
    public class OvernightPackage : Package
    {
        public OvernightPackage()
        {
            CostPerOunce = .12;
        }
        protected override double CalculateCost()
        {
            var cost = base.CalculateCost();
            cost += 1500.00;
            return cost;
        }
    }
    
    public class TwoDayPackage : Package
    {
        protected override double CalculateCost()
        {
            var cost = base.CalculateCost();
            cost += 500.00;
            return cost;
        }
    }
    
    public class Order
    {
        public List<Package> Packages { get; set; }
        public Package[] PackagesArray
        {
            get { return _thePackages; }
        }
    
        private Package[] _thePackages = new Package[0];
        public void AddPackage(Package pkg)
        {
            Array.Resize(ref _thePackages, _thePackages.Length + 1);
            _thePackages[_thePackages.Length -1] = pkg;
        }
    
        public void PrintManifestsWithArray()
        {
            foreach (var package in PackagesArray)
            {
                Console.WriteLine( package.GetType() + ": " + package.DeliveryCost);
            }
        }
    
        public double TotalCost
        {
            get
            {
                return Packages.Sum(package => (double) package.DeliveryCost);
            }
        }
    
        public void PrintManifests()
        {
            foreach (var package in Packages)
            {
                Console.WriteLine(package.Sender.Name);
                Console.WriteLine(package.Recipient.Name);
                Console.WriteLine(package.DeliveryCost);
                ///so on and so forth
            }
        }
    }
    
于 2013-04-25T00:16:19.833 回答