// to represent one directory entry abstract class ADE { } // to represent a file class File extends ADE { String name; int size; File(String name, int size) { this.name = name; this.size = size; } } // to represent a directory class Directory extends ADE { String name; ALoDE lode; Directory(String name, ALoDE lode) { this.name = name; this.lode = lode; } } // to represent a list of directory entries abstract class ALoDE { } // to represent an empty list of directory entries class MtLoDE extends ALoDE { MtLoDE() { } } // to represent a cosntructed list of directory entries class ConsLoDE extends ALoDE { ADE fst; ALoDE rst; ConsLoDE(ADE fst, ALoDE rst) { this.fst = fst; this.rst = rst; } } /* Interactions: Examples of files: File f1 = new File("MyPics", 1000); File f2 = new File("MySong", 1500); File f3 = new File("hmwk1", 300); Examples of ALoDE MtLoDE mtlode = new MtLoDE(); ConsLoDE lode1 = new ConsLoDE(f1, mtlode); ConsLoDE lode2 = new ConsLoDE(f2, lode1); ConsLoDE lode3 = new ConsLoDE(f3, mtlode); Examples of Directories Directory d1 = new Directory("Work", lode3); Directory d2 = new Directory("Play", lode2); Directory dir = new Directory("Main Dir", new ConsLoDE(d1, new ConsLoDE(d2, mtlode))); */