Pop

Patrones de diseño software 13. Patrón comportamiento Iterator

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

Curso .NET Core en C# - 34.Creamos nuestro propio log

34.Creamos nuestro propio log Hola a todos. En este curso, analizaremos todos los conceptos básicos, intermedios y avanzados de  ASP.NET...