title: Enterprise Architect & UML: subtleties when choosing interface or abstract class
body: <p>I am currently building a model from existing C++ code. There is a (dynamically loadable) library that must therefore implement/provide a defined interface (class). The class which is used has some pure virtual functions, but it is - admittedly - not a pure interface (in the Java sense) as it is also a base class containing state (members) and a few method implementations.</p>
  
  <p>So it is kind of a hybrid - base class in C++ <em>reality</em>, but an interface in its main <em>purpose</em>.</p>
  
  <p>Note: I do not intent to generate some code, but the model should be correct for documentation purposes.</p>
  
  <p>When drawing an example in EA (12), some questions arise:</p>
  
  <p><a href="https://i.stack.imgur.com/4rLW5.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/4rLW5.png" alt="enter image description here"></a></p>
  
  <p>a) are there any important reasons to prefer a class and make it 'abstract' (gray box "Base"), or should I directly use an Interface from the toolbox (purple box "Base2")? So far I could not notice any behavioral difference in EA except the color.</p>
  
  <p>b) How can I suppress the stereotype {abstract} written behind the methods? When I do <em>not</em> set them to "abstract", they are not drawn in italic letters. But I want them italic, without the "{abstract}".</p>
  
  <p>c) Similar question concerning the class/interface boxes: aren't interfaces abstract by definition? So why does EA add the {abstract} text here? It was sufficient to draw the class name italic.</p>
  
  <p>d) I guess that the most left arrow (generalization of a base class) and the most right arrow (realization of an interface) are correct, and the middle one is not. Right?</p>