【问题标题】:realization and generalization UML? [duplicate]实现和泛化UML? [复制]
【发布时间】:2019-10-30 20:10:44
【问题描述】:

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

public interface IParser {
   void Parse(string[] txtFile);
   void Add(List<char> gameMap);
}

我继承了它:

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(“模板”)。而泛化将是使用一些接口?这是正确的区分吗?

【问题讨论】:

  • @momo:你是对的。请将您的评论复制到答案中。请使用 cmets 要求澄清而不是给出答案。
  • 您能否展示一个简单的代码示例,说明何时应该使用泛化而不是实现?并感谢您的回答!

标签: c# uml


【解决方案1】:

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

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

继承 vs 组合:一般来说,使用组合比继承更健壮,而且要摆脱你的基因也不是那么容易。 (谷歌组合超过继承)

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

【讨论】:

    猜你喜欢
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    相关资源
    最近更新 更多