title: implementation of UML generalization constraints
body: <p>I have this code: </p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;string&gt;
  using namespace std;
  
  class User {
      string name;
      public:
      User(string x):name(x)
      {   }
      void print() {
          cout &lt;&lt; "Name: " &lt;&lt; name &lt;&lt; endl;
      }
  };
  
  class Director : public User
  {
  public:
      Director(string x) : User(x)
      {}
  };
  class Seller : public User
  {
  public:
      Seller(string x) : User(x)
      {   }
  };
  class Admin : public User
  {
  public:
      Admin(string x) : User(x)
      {   }
  };
  
  int main() {
  
      User x("A");
      Director z("B");
      x.print();
      z.print();
  }
  </code></pre>
  
  <p>How using this class hierarchy can I present that classes:
  Director, Admin, Seller are:</p>
  
  <p>-complete, disjoint (I guess it's the sample of code I have given)</p>
  
  <p>-incomplete, disjoint (will it be the same?)</p>
  
  <p>-complete, overlapping</p>
  
  <p>-incomplete, overlapping</p>