c#继承和数组
本文关键字:数组 继承 | 更新日期: 2023-09-27 18:10:51
我真的希望你们能够帮助我,我正试图制作一个关于继承和数组的程序Amma刚刚好这个问题,我已经尝试过了,但我不能得到正确的显示.......
用实例变量(packageId、weight、costperounce、sendname、sendaddress、city、recipientName、收件人城市、收件人教区)创建一个名为package的基类。下面是我要做的
使用继承层次结构创建显示收件人和发件人地址信息的应用程序。并计算几个包裹的运输成本(重量*成本盎司)。应用程序应该包含TwoDayPackage和overnight package类的包对象数组。TwoDayPackage的运输费用在基本计算中包括500美元的统一费率,而OverNightPackage的运输费用在成本(盎司乘以包裹重量)中包括1500美元的统一费率。循环遍历数组以多态方式处理包。
对于每个包裹,使用属性来获取发件人和收件人的地址信息,然后打印两个地址,就像它们也会在邮寄标签上一样。所有每个包的成本方法和打印结果。跟踪数组中所有包裹的总运输成本,并在循环结束时显示总数
请帮帮我,我已经做了将近一个星期了,如果能帮助我,我会很感激的
也许这会有帮助,我今天很慷慨。
你的作业可能会强迫你学习一些东西以及一些贯穿这些主题的链接
- override vs new 多态性继承
- 数组vs列表
阵列调整
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 } } }