On a Unix system, everything is a file. Text files are files, directories are files, symbolic links are files etc. Obviously, each type of file has special properties - for example, directories are composed of the files and sub-directories they contain, while text files point to a location on disk where some content in ASCII format has been physically stored. now model the unix file system structure in UML, using generalization and association in a way that is similar to the in-lecture example of the stock control problem. Question 1 Using generalization and association, create a class diagram that models the components of a unix file system as members of a class hierarchy. The components of the file system that should be modeled are: directory, text file, executable file and symbolic link. Where a file system entity is made up of other entities, use association to represent this fact. Question 2 The unix shell has a built-in command du that allows you to see a summary of disk usage of a file system entity. For example, typing du file.txt will print out the disk usage of the text file file.txt, while du docs will print out the sum of all the disk space taken up by the directory and all the files and sub-directories it contains. Add to your class diagram from Q1 a method to print out the disk usage of a particular entity. This method should be part of the base class interface and overloaded where necessary. In addition, briefly explain (in words) how you would include in your design the ability to print out the names of all executable files that can be reached from a file system entity. Question 3 Implement your class hierarchy from Question 2 above, and write a small test program to demonstrate that it works.