public abstract class Node { public abstract int getLength(); }
public class Directory extends Node{ private List list; public Directory(){ list= new ArrayList (); } @Override public int getLength() { int sum=0; for(Node node:list){ sum=node.getLength()+sum; } return sum; } public void addNode(Node node){ list.add(node); } }
public class File extends Node{ private int length; public File(int length){ this.length=length; } @Override public int getLength() { return length; } }
public class Application { public static void main(String[] args) { File f1=new File(100); File f2=new File(200); File f3=new File(300); File f4=new File(400); File f5=new File(500); File f6=new File(600); File f7=new File(700); File f8=new File(800); Directory d1=new Directory(); Directory d2=new Directory(); Directory d3=new Directory(); Directory d4=new Directory(); Directory d5=new Directory(); d1.addNode(f1); d1.addNode(f2); d1.addNode(d2); d2.addNode(f3); d2.addNode(d3); d2.addNode(d4); d3.addNode(f4); d3.addNode(f5); d3.addNode(f6); d4.addNode(f7); d4.addNode(d5); d5.addNode(f8); System.out.println(d3.getLength()); } }