title: How to model the Document class?
body: <p>I'm using a document class. The first time, it was for the common files with methods like New(), Open(), Save().</p>
  
  <p>New() and Open() returns a IDocument. Save doesn't return anything.
  As you can see in the diagram above.</p>
  
  <p><img src="https://i.stack.imgur.com/bGoPK.jpg" alt="enter image description here"></p>
  
  <p>In my program, it must use xml or zip file extension. For the xml files there's any problem, all the methods are for it. But I've got problems with zip file. I was planning to do this, when the program executes Open(), extract all the xml files from the zip and returns all the files. But my Open() only returns a document.</p>
  
  <p>I was planning of creating another property called CanExtract(), but maybe this is not a good idea. I just want to create a good design and understandable.</p>