13. Patrón comportamiento Iterator
- Hola a todos.Seguimos con nuestro curso dedicado a los patrones de diseño software.Los patrones de diseño son unas técnicas para resolver problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.
- En esta ocasión veremos el patrón de diseño Iterator. En diseño de software, el patrón de diseño Iterador, define una interfaz que declara los métodos necesarios para acceder secuencialmente a un grupo de objetos de una colección.El patrón surge del deseo de acceder a los elementos de un contenedor de objetos (por ejemplo, una lista) sin exponer su representación interna
- El modelo de clases que utilizaremos para este ejemplo es el siguiente:
- En el siguiente vídeo tenéis un ejemplo de este patrón de diseño
- Os dejo el código de las diferentes clases vistas en el vídeo:
- Clase IteradorOrdenador.cs
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Iterator
{
    public class IteradorOrdenador
    {
        private ArrayList ordenador;
        private int posicion;
        public IteradorOrdenador(Ordenador o)
        {
            this.ordenador = o.datos;
            posicion = 0;
        }
        public Boolean existeSiguiente()
        {
            if (posicion < ordenador.Count)
                return true;
            else
                return false;
        }
        public Object siguiente()
        {
            object valor = ordenador[posicion];
            posicion++;
            return valor;
        }
    }
}
- Clase Ordenador.cs
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Iterator
{
    public class Ordenador
    {
        public ArrayList datos;
        public Ordenador()
        {
            datos = new ArrayList();
        }
        public Ordenador dameValor(int pos)
        {
            Ordenador o = null;
            if(pos<datos.Count)
                return (Ordenador)datos[pos];
            return o;
        }
        public void añadirValor(string valor)
        {
            datos.Add(valor);
        }
        public int dimension()
        {
            return datos.Count;
        }
        public IteradorOrdenador iterador()
        {
            return new IteradorOrdenador(this);
        }
    }
}
- Clase Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Iterator
{
    class Program
    {
        static void Main(string[] args)
        {
            Ordenador lista = new Ordenador();
            lista.añadirValor("Pentium 1");
            lista.añadirValor("Pentium 2");
            lista.añadirValor("Pentium 3");
            lista.añadirValor("Pentium 4");
            IteradorOrdenador iterador = lista.iterador();
            //Recorrido con el iterador
            while (iterador.existeSiguiente())
                Console.WriteLine(iterador.siguiente());
            Console.ReadLine();
        }
    }
}

 
 
No hay comentarios:
Publicar un comentario