using System; using System.Collections.Generic; namespace Pr04_Strategy_Examples { // Declaracion de un delegado o tipo de datos que representa una funcion delegate bool EsMayor(T izq, T dch); public class OrdenaLambda { // Declaracion de un atributo cuyo tipo es una funcion utilizando un // tipo delegado propio private EsMayor mayorDelegado; // Declaracion de un atributo cuyo tipo es una funcion utilizando un // tipo delegado predefinido // Inv: mayor != null private Func mayor; // Declaracion de una propiedad cuyo tipo es una funcion // pre: value != null public Func Mayor { set { this.mayor = value; } } // Mayor // Metodo que ordena la lista de elementos utilizando para comparar elementos // la funcion de mayor contenida en el correspondiente atributo de la clase // pre: listaElementos != null and this.mayor != null // and listaElementos.forAll(e : e != null) public void ordenarBurbuja(List listaElementos) { ordenarBurbuja(listaElementos, mayor); } // ordenarBurbuja // Metodo que ordena la lista de elementos utilizando para comparar elementos // la funcion de mayor especificada como parámetro // pre: listaElementos != null and mayor != null // and listaElementos.forAll(e : e != null) public void ordenarBurbuja(List listaElementos, Func mayor) { for(int i = 0;i