/// <summary> /// Método auxiliar que crea los componentes de la estructura de /// archivos y almacena unos en otros, creando una estructura /// anidada. /// </summary> /// <returns></returns> private static Directorio creaComponentes() { // Creamos los elementos de la estructura Directorio raiz = new Directorio("Raiz"); Directorio vacio = new Directorio("Directorio Vacio"); Directorio unico = new Directorio("Directorio Con Archivo Unico"); Directorio comprimidoSimple = new Directorio("Directorio Con Archivo Comprimido Simple"); Directorio anidado = new Directorio("Directorio con Directorio Anidado"); Directorio complejo = new Directorio("Directorio con Archivo Comprimido Complejo"); Directorio vacio2 = new Directorio("Directorio Vacio En Archivo Comprimido"); Archivo a1 = new Archivo("foto001.jpg", 10); Archivo a2 = new Archivo("foto002.jpg", 10); Archivo a3 = new Archivo("foto003.jpg", 10); Archivo a4 = new Archivo("foto004.jpg", 10); Archivo a5 = new Archivo("foto005.jpg", 10); Archivo a6 = new Archivo("foto006.jpg", 10); Archivo a7 = new Archivo("foto007.jpg", 10); Archivo a8 = new Archivo("foto008.jpg", 10); ArchivoComprimido ac1 = new ArchivoComprimido("ccSimple.zip"); ArchivoComprimido ac2 = new ArchivoComprimido("ccComplejo.zip"); ArchivoComprimido ac3 = new ArchivoComprimido("ccAnidada.zip"); EnlaceDirecto e1 = new EnlaceDirecto(a1); EnlaceDirecto e2 = new EnlaceDirecto(ac1); EnlaceDirecto e3 = new EnlaceDirecto(vacio); // Creamos la estructura ac3.añadeArchivo(a7); ac2.añadeArchivo(ac3); ac2.añadeArchivo(a8); complejo.añadeElemento(a5); complejo.añadeElemento(a6); complejo.añadeElemento(ac2); anidado.añadeElemento(a4); anidado.añadeElemento(e2); anidado.añadeElemento(e3); anidado.añadeElemento(complejo); ac1.añadeArchivo(vacio2); ac1.añadeArchivo(a3); ac1.añadeArchivo(e1); comprimidoSimple.añadeElemento(a2); comprimidoSimple.añadeElemento(e1); comprimidoSimple.añadeElemento(ac1); unico.añadeElemento(a1); raiz.añadeElemento(vacio); raiz.añadeElemento(unico); raiz.añadeElemento(comprimidoSimple); raiz.añadeElemento(anidado); // Retornamos el directorio raíz return raiz; }
/// <summary> /// Función que declara una operación de visita para los /// objetos de tipo enlace directo. Retorna un String con /// su nombre /// </summary> /// <param name="ec"></param> /// <returns></returns> public override String formatoEnlaceDirecto(EnlaceDirecto ec) { return ec.Nombre.ToString(); }
public string imprime(EnlaceDirecto ea) { return tabulaciones() + ea.Nombre + "\n"; }
static void Main(string[] args) { //Directorios Elemento d1 = new Directorio("Raiz"); Elemento d2 = new Directorio("Directorio Vacio"); Elemento d3 = new Directorio("Directorio Con Archivo Unico"); Elemento d4 = new Directorio("Directorio Con Archivo Comprimido Simple"); Elemento d5 = new Directorio("Directorio Vacio En Archivo Comprimido"); Elemento d6 = new Directorio("Directorio Con Directorio Anidado"); Elemento d7 = new Directorio("Directorio Con Archivo Comprimido Complejo"); //Archivos Elemento a1 = new Archivo("foto001.jpg", 50); Elemento a2 = new Archivo("foto002.jpg", 50); Elemento a3 = new Archivo("foto003.jpg", 50); Elemento a4 = new Archivo("foto004.jpg", 50); Elemento a5 = new Archivo("foto005.jpg", 50); Elemento a6 = new Archivo("foto006.jpg", 50); Elemento a7 = new Archivo("foto007.jpg", 50); Elemento a8 = new Archivo("foto008.jpg", 50); //Archivos comprimidos Elemento ac1 = new ArchivoComprimido("ccSimple.zip"); Elemento ac2 = new ArchivoComprimido("ccComplejo.zip"); Elemento ac3 = new ArchivoComprimido("ccAnidada.zip"); //Enlaces directos Elemento ed1 = new EnlaceDirecto(a1); Elemento ed2 = new EnlaceDirecto(a1); Elemento ed3 = new EnlaceDirecto(d2); Elemento ed4 = new EnlaceDirecto(ac1); //Añadir elementos a los directorios d1.add(d2); d1.add(d3); d3.add(a1); d1.add(d4); d4.add(a2); d4.add(ed1); d4.add(ac1); d1.add(d6); d6.add(a4); d6.add(ed4); d6.add(ed3); d6.add(d7); d7.add(a5); d7.add(a6); d7.add(ac2); //Añadir elementos a los archivos comprimidos ac1.add(d5); ac1.add(a3); ac1.add(ed2); ac2.add(ac3); ac3.add(a7); ac2.add(a8); IVisitor v1 = new ImpresionExtendida(); IVisitor v2 = new ImpresionCompacta(); Console.Out.Write("Impresión extendida del sistema de ficheros:\n\n"); Console.Out.Write(d1.accept(v1)); Console.Out.Write("\n\n--------------------------------------------------\n\n"); Console.Out.Write("Impresión compacta del sistema de ficheros:\n\n"); Console.Out.Write(d1.accept(v2)); Console.In.Read(); }
/// <summary> /// Función que declara una operación de visita para los /// objetos de tipo enlace directo. Retorna un String con /// su nombre /// </summary> /// <param name="ec"></param> /// <returns></returns> public abstract String formatoEnlaceDirecto(EnlaceDirecto ec);