private void btnPunto1_Click(object sender, EventArgs e) { // TODAS las clases deberán ir en una Biblioteca de Clases llamada Entidades // ¡Reutilizar código siempre que se pueda!. //* Clase ReinoVegetal: Debe ser abstracta //* Enumerado Gusto contendrá Dulce, Salado y Toxica //* Agregar un atributo estático calcularValor:Random. // **Este atributo sólo se podrá inicializar en un constructor estático. //* Un constructor que reciba ambos parámetros. //* Generar otro constructor que sólo reciba Gusto y asigne en valor un número aleatorio entre 1 y 100. //* Clases públicas Fruta, Verdura y Carnibora. Las 3 heredarán de ReinoVegetal. //* Enumerado TipoVerdura: Semilla, Raíz, Tubérculo, Bulbo, Tallo, Hoja, Inflorescencia, Rizoma //* Enumerado Capturas: Pinzas, Pelos, Caída, Mecánicas, Combinada //* A las tres clases completarle sus constructores de la forma correcta. // Descomentar el siguiente código, que deberá funcionar sin modificaciones: // ------------------------------------------------------------------------------------------------- ReinoVegetal v1 = new Fruta((float)2.5, ReinoVegetal.Gusto.Dulce, ConsoleColor.Red); Fruta v2 = new Fruta((float)12.5, ReinoVegetal.Gusto.Dulce, ConsoleColor.Blue); Verdura v3 = new Verdura((float)52.5, ReinoVegetal.Gusto.Salado, Verdura.TipoVerdura.Hoja); Verdura v4 = new Verdura((float)2.7, ReinoVegetal.Gusto.Toxica, Verdura.TipoVerdura.Raíz); Carnibora v5 = new Carnibora((float)14.5, ReinoVegetal.Gusto.Toxica, Carnibora.Captura.Combinada); ReinoVegetal v6 = new Carnibora((float)1.2, ReinoVegetal.Gusto.Toxica, Carnibora.Captura.Pelos, 10); }
private void btnPunto1_Click(object sender, EventArgs e) { // TODAS las clases deberán ir en una Biblioteca de Clases llamada Entidades // Realizar una clase llamada ReinoVegetal. Debe ser abstracta // y poseer los atributos protegidos _valor:float y _gusto:Gusto. // Enumerado Gusto contendrá Dulce, Salado y Toxica // Generar un constructor que reciba ambos parámetros. // Agregar un atributo estático calcularValor:Random. Este atributo sólo se podrá inicializar en un constructor estático. // Generar otro constructor que sólo reciba Gusto y asigne en _valor un número aleatorio entre 1 y 100. // Generar las clases públicas Fruta, Verdura y Carnibora. Las 3 heredarán de ReinoVegetal. // Fruta contendrá el atributo _color:ConsoleColor // Verdura contendrá el atributo _tipo:TipoVerdura, // siendo los TipoVerdura disponibles: Semilla, Raíz, Tubérculo, Bulbo, Tallo, Hoja, Inflorescencia, Rizoma // Carnibora contendrá el atributo _tamanio:int y _tipo:Captura, // siendo las Capturas disponibles: Pinzas, Pelos, Caída, Mecánicas, Combinada // A las tres clases generarle un constructor que reciba 3 parámetros. // A Carnibora generarle otro constructor que reciba 4 parámetros. // Descomentar el siguiente código, que deberá funcionar sin modificaciones: ReinoVegetal v1 = new Fruta((float)2.5, ReinoVegetal.Gusto.Dulce, ConsoleColor.Red); Fruta v2 = new Fruta((float)12.5, ReinoVegetal.Gusto.Dulce, ConsoleColor.Blue); Verdura v3 = new Verdura((float)52.5, ReinoVegetal.Gusto.Salado, Verdura.TipoVerdura.Hoja); Verdura v4 = new Verdura((float)2.7, ReinoVegetal.Gusto.Toxica, Verdura.TipoVerdura.Raíz); Carnibora v5 = new Carnibora((float)14.5, ReinoVegetal.Gusto.Toxica, Carnibora.Captura.Combinada); ReinoVegetal v6 = new Carnibora((float)1.2, ReinoVegetal.Gusto.Toxica, Carnibora.Captura.Pelos, 10); }
private void btnPunto3_Click(object sender, EventArgs e) { //* Dos elementos del tipo ReinoVegetal serán iguales si son del mismo Tipo //* (dos frutas, dos verduras o dos carniboras) y tienen el mismo Gusto // Descomentar el siguiente código, que deberá funcionar sin modificaciones: // ------------------------------------------------------------------------------------------------- Fruta v1 = new Fruta((float)2.5, ReinoVegetal.Gusto.Dulce, ConsoleColor.Red); Fruta v2 = new Fruta((float)12.5, ReinoVegetal.Gusto.Dulce, ConsoleColor.Blue); Verdura v3 = new Verdura((float)52.5, ReinoVegetal.Gusto.Salado, Verdura.TipoVerdura.Hoja); Verdura v4 = new Verdura((float)2.7, ReinoVegetal.Gusto.Toxica, Verdura.TipoVerdura.Raíz); Carnibora v5 = new Carnibora((float)14.5, ReinoVegetal.Gusto.Toxica, Carnibora.Captura.Combinada); Carnibora v6 = new Carnibora((float)1.2, ReinoVegetal.Gusto.Toxica, Carnibora.Captura.Pelos, 10); MessageBox.Show("Carnibora y Verdura:" + (v5 == v4)); MessageBox.Show("Verdura y Verdura:" + (v3 == v4)); MessageBox.Show("Carnibora y Carnibora:" + (v5 == v6)); }
private void btnPunto2_Click(object sender, EventArgs e) { //* Los atributos de Fruta, Verdura y Carnibora generados en el punto anterior //* deberán tener propiedades publicas de sólo lectura que expongan sus datos. // (SOLO FINAL) ReinoVegetal contendrá una conversión explicita a String. // (SOLO FINAL) Fruta, Verdura y Carnibora contendrá una conversión implicita a String. // (SOLO RSP) Hacer las correcciones necesarias para que el código dado siga funcionando (inclusive comentar parte de los códigos) // Descomentar el siguiente código, que deberá funcionar sin modificaciones: // ------------------------------------------------------------------------------------------------- Fruta v2 = new Fruta((float)12.5, ReinoVegetal.Gusto.Dulce, ConsoleColor.Blue); Verdura v4 = new Verdura((float)2.7, ReinoVegetal.Gusto.Toxica, Verdura.TipoVerdura.Raíz); Carnibora v5 = new Carnibora((float)1.2, ReinoVegetal.Gusto.Toxica, Carnibora.Captura.Pelos, 10); //MessageBox.Show(v2); //MessageBox.Show(v4); //MessageBox.Show(v5); }
private void btnPunto4_Click(object sender, EventArgs e) { //* Clase Canasta: //* El atributo plantas:List del tipo genérico sólo se podrá inicializar en el constructor // por defécto, que además será privado // Generar la Excepción propia NoAgregaException con un único constructor que reciba el mensaje a mostrar. //* Al sumar una canasta con un elemento del ReinoVegetal se deberá a gregar a la lista de plantas //* SÓLO si el tipo genérico de la Canasta es igual al elemento del ReinoVegetal y aun hay lugar en la canasta. // Si no son del mismo tipo, el mensaje deberá ser "El elemento es del tipo {0}. Se esperaba {1}.". ¡Utilizar Format! //* Si la capacidad está al límite, el mensaje será "Capacidad excedida.". //* Utilizar T aux = (T)Convert.ChangeType(reinoVegetal, typeof(T)); para convertir un ReinoVegetal en T. // Descomentar el siguiente código, que deberá funcionar sin modificaciones: // ------------------------------------------------------------------------------------------------- Fruta v1 = new Fruta((float)2.5, ReinoVegetal.Gusto.Dulce, ConsoleColor.Red); Fruta v2 = new Fruta((float)12.5, ReinoVegetal.Gusto.Dulce, ConsoleColor.Blue); Fruta v3 = new Fruta((float)10.2, ReinoVegetal.Gusto.Dulce, ConsoleColor.Green); Verdura v4 = new Verdura((float)2.7, ReinoVegetal.Gusto.Toxica, Verdura.TipoVerdura.Raíz); Canasta <Fruta> canasta1 = new Canasta <Fruta>(2); canasta1 += v1; canasta1 = canasta1 + v2; try { canasta1 += v3; } catch (NoAgregaException ex) { MessageBox.Show(ex.Message); } try { canasta1 += v4; } catch (NoAgregaException ex) { MessageBox.Show(ex.Message); } }