如何使用多态性重新创建此解决方案并允许从控制台插入单词以替换所选单词?



下面给出的代码是问题的简单解决方案,我必须使用多态性做另一个,但我在这个 C# 方面有点新(几乎什么都不知道(,但我需要一些想法如何重新创建这段代码,以及能够从输入中获取字符串作为所需单词的代码,以便与默认单词切换。希望有人能帮助我,因为我完全不知道该怎么做(我奇迹般地制作了这段代码,但现在这个任务对我来说是另一个层次的(。 感谢所有会有所帮助的人。

Console.WriteLine("BEFORE: " + value);
string modified = value.Replace("cow", "duck").Replace("moo", "quack");
string modified1 = value.Replace("cow", "cat").Replace("moo", "meow");
string modified2 = value.Replace("cow", "dog").Replace("moo", "aw");
string modified3 = value.Replace("cow", "goat").Replace("moo", "mee");
string modified4 = value.Replace("cow", "sheep").Replace("moo", "bee");
Console.WriteLine("AFTER:  " + modified);
Console.WriteLine("AFTER:  " + modified1);
Console.WriteLine("AFTER:  " + modified2);
Console.WriteLine("AFTER:  " + modified3);
Console.WriteLine("AFTER:  " + modified4);
}

}

在您的样本中,仅使用动物,因此提供了类动物。 此外,给定文本的上下文类似于语音,因此 Talk 方法。

匹配您的样本,数组中的所有动物将奶牛的"语音"替换为自己的。

public class Animal {
protected string Kind, Says;
protected Animal(string kind, string says) { Kind = kind; Says = says;
}
public string Talk(Animal impersonate, string stream) {
return stream.Replace(impersonate.Kind, Kind).Replace(impersonate.Says, Says);
}
}
public class Cow : Animal { public Cow() : base("cow", "moo") { } }
public class Duck : Animal { public Duck() : base("duck", "quack") { } }
public class Cat : Animal { public Cat() : base("cat", "meow") { } }
public class Dog : Animal { public Dog() : base("dog", "aw") { } }
public class Goat : Animal { public Goat() : base("goat", "mee") { } }
public class Sheep : Animal { public Sheep() : base("sheep", "bee") { } }
class Program {
static void Sample2(string value)  {
var cow = new Cow();
foreach (var animal in new Animal[] {
new Duck(),
new Cat(),
new Dog(),
new Goat(),
new Sheep()
})
Console.WriteLine("AFTER:  " + animal.Talk(cow, value));
}
static void Main(string[] args) {
var value = "cow does something like moo";
Console.WriteLine("BEFORE: " + value);
Sample1(value);
Sample2(value);
Console.ReadLine();
}
static void Sample1(string value) {
string modified = value.Replace("cow", "duck").Replace("moo", "quack");
string modified1 = value.Replace("cow", "cat").Replace("moo", "meow");
string modified2 = value.Replace("cow", "dog").Replace("moo", "aw");
string modified3 = value.Replace("cow", "goat").Replace("moo", "mee");
string modified4 = value.Replace("cow", "sheep").Replace("moo", "bee");
Console.WriteLine("AFTER:  " + modified);
Console.WriteLine("AFTER:  " + modified1);
Console.WriteLine("AFTER:  " + modified2);
Console.WriteLine("AFTER:  " + modified3);
Console.WriteLine("AFTER:  " + modified4);
}
}

如上所示,此示例将匹配提供的输入。类和方法名称可以重命名为更通用。

最新更新