New Recording 3.m4a
UML Diagram

Example
// Component
interface FileSystemElement {
void showName();
}
// Leaf
class FileElement implements FileSystemElement {
private String name;
public FileElement(String name) {
this.name = name;
}
@Override
public void showName() {
System.out.println("File: " + name);
}
}
// Composite
class FolderElement implements FileSystemElement {
private String name;
private List<FileSystemElement> elements = new ArrayList<>();
public FolderElement(String name) {
this.name = name;
}
public void add(FileSystemElement element) {
elements.add(element);
}
public void remove(FileSystemElement element) {
elements.remove(element);
}
@Override
public void showName() {
System.out.println("Folder: " + name);
for (FileSystemElement element : elements) {
element.showName();
}
}
}
// Client usage
public class CompositeExample {
public static void main(String[] args) {
FolderElement rootFolder = new FolderElement("Root");
FolderElement documentsFolder = new FolderElement("Documents");
FolderElement picturesFolder = new FolderElement("Pictures");
FileElement docFile = new FileElement("Resume.docx");
FileElement picFile = new FileElement("Vacation.png");
documentsFolder.add(docFile);
picturesFolder.add(picFile);
rootFolder.add(documentsFolder);
rootFolder.add(picturesFolder);
rootFolder.showName();
}
}