Ejercicios Propuestos HERENCIA EP_1 Si se tiene el fragmento de código que sigue: public class Foo : Moo { private const string Voo = "You"; private string Goo; public string Coo { } public override void Too( ) { } protected void Woo( ) { } } Diga: a. ¿Nombre de la Clase Derivada (CD)? b. ¿Nombre de la Clase Base (CB)? c. ¿Cuál es la propiedad nueva en la CD? d. ¿Cuál método ha sido sustituido? e. ¿Cuál método puede ser llamado solo en la CD o en clases que deriven de la misma? f. ¿Qué palabra clave (keyword) debe tener el procedimiento Too en la CB? g. Asuma que Loo es un campo de tipo string en la CB. ¿Cómo debe ser su declaración en la CB si Loo debe ser accesible a todos los miembros de la CD EP_2 Seleccione la palabra clave para un: a. Método en la clase base que se sustituirá en la clase derivada. b. Método que es sustituido en la clase derivada. c. Campo que es accedido solamente por los métodos de la clase. d. Método de una clase que no puede ser directamente invocado por un objeto de la clase. e. Método de una clase que puede ser invocado por un objeto de la clase EP_3 Señale los errores en el código que sigue: interface IToken { string Name( ); int LineNumber( ) { return 42; } string name; } class Token { IToken t = new IToken( ); string Name( ){ }; } EP_4 Determine si cada una de las siguientes es siguientes es V o F. En caso de ser F explicar por qué? a. Una propiedad trabaja asociada solo a un campo público donde este contiene el valor y la propiedad es el mecanismo para fijar u obtener dicho valor b. Los objetos referidos a una Interface solo pueden acceder a sus miembros públicos. c. Una clase abstracta significa que no puede ser utilizada como clase base de otra clase. d. Los métodos sobrecargados cuyas firmas son iguales permiten diferentes acciones. e. Solos los métodos públicos de una clase base pueden ser utilizados en la clase derivada que la hereda. Elaborado por JCSoft Aplicaciones Informáticas Ejercicios Propuestos f. Una propiedad de solo lectura utiliza los descriptores get{ } y set{ } para fijar u obtener el valor del campo que trabaja asociado con dicha propiedad g. Los campos o atributos en una Interface son públicos de forma implícita EP_5 Dadas las clases Empleado, Supervisor y Asistente que en la parte inferior se definen de manera parcial. public class Empleado { protected string salida; public Empleado( ) { salida = “Empleado trabajando.”; } public void Trabajo( ) { MessageBox.Show(salida); } } public class Supervisor: Empleado { public Supervisor( ) { salida = “Supervisor trabajando”; } } public class Asistente: Empleado { public Asistente() { salida = “Asistente trabajando.”; } } 1. Explique el resultado de la compilación de las siguientes declaraciones: a. Empleado employA = new Empleado( ); b. Empleado employB = new Supervisor( ); c. Supervisor employC = new Supervisor( ); d. Supervisor employD = new Empleado( ); e. Asistente employE = new Supervisor( ); 2. Considere las siguientes declaraciones: Empleado employ1 = new Empleado( ); Supervisor employ2 = new Supervisor( ); Empleado employ3 = new Supervisor( ); Explique la legalidad (legal o no legal) de las siguientes asignaciones: a. employ1 = employ2; b. employ2 = (Supervisor) employ3; c. employ1 = (Supervisor) employ2; 3. Considere las siguientes declaraciones: Empleado employ1 = new Empleado( ); Supervisor employ2 = new Supervisor( ); Empleado employ3 = new Supervisor( ); Explique el resultado de la ejecución del siguiente segmento de código: employ1 = employ2; employ1.Trabajo( ); employ3.Trabajo( ); Elaborado por JCSoft Aplicaciones Informáticas Ejercicios Propuestos EP_6 Crear una aplicación 2 capas (Capa Lógica CL en Biblioteca de Clases <archivo .dll> y Capa Presentación CP en Formulario Windows CL según diagrama UML que se muestra: Ventas – nCliente: string – monto: double – fecha: DateTime + Ventas( ) TarjetaCredito Credito – nTarjeta: string – banco: string – plazo: int – pctoInt: double CP Eventos para asignar los datos a los clientes: Cliente1: Nombre= Pedro Pérez Monto de $3500 Depositado con tarjeta VISA Banco UNION Fecha 05-12/2014 Cliente2: Nombre= María Méndez Monto de $1500 Depositado en fecha 12-11/2013 Crédito al 5% Plazo de 23 meses EP_7 Crear una aplicación 2 capas (Capa Lógica CL en Biblioteca de Clases <archivo .dll> y Capa Presentación CP en Formulario Windows CL según diagrama UML que se muestra: Animal <abstract> IVolador + Despegar ( ) + Volar ( ) + Aterrizar ( ) + Comer ( ) Pajaro Superman <sealed> – tipo: string + TpoAnid ( ) : int + DetenerBalas ( ) : int + SaltarEdif ( ) : int Elaborado por JCSoft Aplicaciones Informáticas Ejercicios Propuestos a) Utilice regiones para estructurar el código. b) No codifique el cuerpo de los métodos de la CL CP Codifique eventos para: c) Asignar a la variable tipo el tipo de ave entrada por el usuario en una caja de texto en la IU d) Mostrar en una caja de mensajes el retorno del método DetenerBalas( ) EP_8 Dado el siguiente diagrama de clases UML, codificar considerando una aplicación en dos capas (Capa Lógica <Biblioteca de Clases> y Capa de Presentación <Formulario Windows): AC <abstract> + field1: double <static> # field2: int +A() + MA( ) <static> IC + MC( ) : decimal BC < sealed > - field3: string + field4: decimal + BC ( ) + MB( ) + A( ) c) d) e) f) g) Utilice regiones para estructurar el código. Use la Herencia y Polimorfismo como se señala en el diagrama UML de la CL Implementación: El método MC( ) devolverá el producto de los valores contenidos en el field1 y el valor de field3. No codifique el cuerpo del resto de los métodos de la CL. En la capa de Presentación: Utilice un evento para: Obtener en una caja de mensajes el resultado de invocar el MC( ) . Valide la aplicación asignando, en la capa de presentación mediante cajas de texto, valores a field1 y a field3. Elaborado por JCSoft Aplicaciones Informáticas Ejercicios Propuestos EP_9 Crear una aplicación 2 capas (Capa Lógica CL en Biblioteca de Clases <archivo .dll> y Capa Presentación CP en Formulario Windows CL según diagrama UML que se muestra: Empleado – salBaseDia: decimal <static> – cantDias: byte + Salario( ) : decimal Salario = salBaseDia * cantDias EmpleadoFijo – desctoAFP: double + Salario ( ) : decimal Salario= Salario_CB – desctoAfP CP Evento para mostrar en una caja de mensajes el sueldo devengado de un empleado fijo Entre los datos mediante código en la CP según: salBaseDia = $30 cantDias = 24 desctoAFP = 12.5% sueldo devengado= $630 EP_10 Crear una aplicación 2 capas (Capa Lógica CL en Biblioteca de Clases <archivo .dll> y Capa Presentación CP en Formulario Windows CL según diagrama UML que se muestra: MiClase1 <abstract> + c1: double <static> # c2: int + MiClase1 ( ) + M1(c1 : double ) <static> MiClase2 <abstract> + c3: double <static> + MiClase2 ( ) + M2(c3 : double ) MiClase3 + M3( ) : decimal <static> a) Utilice regiones para estructurar el código. b) Implementación: El método M3( ) devolverá el promedio de los valores contenidos en c1 y el valor de c3. No codifique el cuerpo del resto de los métodos de la CL. En la capa de Presentación: Utilice un evento para: Elaborado por JCSoft Aplicaciones Informáticas Ejercicios Propuestos Obtener el resultado de invocar el M3( ). Valide la aplicación asignando, en la capa de presentación mediante cajas de texto, valores a c1 y a c3 EP_11 Complete los espacios en blanco con los modificadores que se muestran más abajo. a) Una _________________ solo contiene operaciones. b) Una clase ___________________ no puede contener métodos instanciados c) Un método _________________ no contiene implementación. d) Una clase ___________________ impide que se deriven clase de ella. e) Un método _____________ en la clase derivada se considera un método polimórfico virtual | abstract | sealed | interface | static | public const | override | new. EP_12 Dado el siguiente diagrama de clases UML, codificar considerando una aplicación en dos capas (Capa Lógica en una Biblioteca de Clases y Capa de Presentación en un Formulario): Global <abstract> + nombres : string <static> - sal : double + Retiros (cant : decimal ) : bool + Depositos (cant : decimal ) Cuentas <sealed> + Retiros (cant : decimal ) : bool + Depositos (cant : decimal ) + Saldo( ) : double a) b) c) d) e) f) Utilice regiones para estructurar el código. Utilice la Herencia y el Polimorfismo según se señala en el diagrama UML El método Saldo( ) devuelve el saldo del titular de la cuenta (sal) El método Retiros ( ) retira la cantidad especificada en su argumento y devuelve true si es posible efectuar el retiro (cant <= al saldo del cliente), caso contrario devolverá false y Depositos ( ) aumenta el saldo del cliente en la cantidad especificada en su argumento, En la capa de Presentación Codifique un evento donde se asigne mediante código a nombres el nombre del alumno y que se muestre en una caja de mensajes el retorno del método Saldo( ). En la Interfaz de Usuario cree controles para efectuar depósitos y extracciones. Elaborado por JCSoft Aplicaciones Informáticas