C# UML的实现与推广?

C# UML的实现与推广?,c#,uml,C#,Uml,我不明白他们之间的区别 UML类图中的UML实现和泛化箭头。在我的特定代码中,我创建了一个接口: public interface IParser { void Parse(string[] txtFile); void Add(List<char> gameMap); } 公共接口IParser{ 无效解析(字符串[]txtFile); 无效添加(列表游戏地图); } 我继承了它: public class ParseExits : IParser { pu

我不明白他们之间的区别 UML类图中的UML实现和泛化箭头。在我的特定代码中,我创建了一个接口:

public interface IParser {
   void Parse(string[] txtFile);
   void Add(List<char> gameMap);
}
公共接口IParser{
无效解析(字符串[]txtFile);
无效添加(列表游戏地图);
}
我继承了它:

public class ParseExits : IParser {

   public Dictionary<char, string> Dict { get;  }
   public List<Entity> EntityList  { get; }

   public ParseExits() {
            Dict = new Dictionary<char, string>();
            EntityList = new List<Entity>();
        }

   public void Parse(string[] txtFile) {
       ...
   }

   public void Add(List<char> gameMap) {
       ...
   }
公共类解析出口:IParser{
公共字典Dict{get;}
公共列表EntityList{get;}
公共安全出口(){
Dict=新字典();
EntityList=新列表();
}
公共void解析(字符串[]txtFile){
...
}
公共无效添加(列表游戏地图){
...
}

我会说这是一个实现,因为我继承了整个接口。我实现了IParser(“模板”)。而泛化是使用一些接口?这是正确的区别吗?

你可以说,
IParser
实现了(实现了)by
ParseExits
。泛化是不同的,在使用继承时会发生。例如,基类“Animal”和从动物继承的类“Tiger”。在这种情况下,可以将其称为“是一种”关系。“Tiger”是一种“Animal”。是由“Animal”泛化的

您的第二个问题更像是一个“通用面向对象”的问题

遗传与组合:一般来说,使用组合而不是遗传更为稳健,而且去除基因也不是那么容易


接口vs(抽象)类:阅读StackOverflow答案

你可以说
IParser
是由
ParseExits
实现的。泛化是不同的,在使用继承时会发生。例如,基类“Animal”和继承自Animal的类:“Tiger”“。在这种情况下,你可以称之为“是一种”关系。“老虎”是一种“动物”,“老虎”是由“动物”概括的

您的第二个问题更像是一个“通用面向对象”的问题

遗传与组合:一般来说,使用组合而不是遗传更为稳健,而且去除基因也不是那么容易


接口vs(摘要)类:阅读StackOverflow答案

@MoMoMo:你是对的。请将你的评论复制到一个答案中。请使用评论要求澄清而不是给出答案。你能给出一个简单的代码示例,说明什么时候应该使用泛化而不是实现吗?谢谢你的回答!@MoMoMo:你是对的。请复制你的co请给出答案。请使用注释要求澄清,而不是给出答案。您能给出一个简单的代码示例,说明何时应该使用泛化而不是实现吗?谢谢您的回答!