Вы находитесь на странице: 1из 9

Material de trabajo de construcción de software

Practica de construcción de software N° 2


TEMA: Refactorización

Apellidos : ………………………..……………….
Sección : ………………………..………………...
Nombres : …………………………………………….
Fecha : .…../……/2018 Duración: 60 minutos
Docente : Daniel Gamarra Moreno
Tipo de Práctica: Individual ( ) Grupal (X)

Instrucciones: Desarrolle las actividades solicitadas.

I. Propósito

Utiliza las herramientas de refactorización del Entorno Integrado de Desarrollo (IDE) del Visual
Studio en la implementación del algoritmo que calcula la edad de una persona en años.

II. Actividades

Para el algoritmo que calcula la edad de una persona en años, desarrolle las siguientes
actividades:
2.1. Explore las herramientas de refactorización de Visual Studio (anexo).
2.2. Implemente las pruebas para el algoritmo.
2.3. Crea la solución en Visual Studio llamado Fechas e implemente en C# el algoritmo que
debe incluir la validación de la fecha (anexo).
2.4. Realice la refactorización de la implementación.

III. Indicaciones para entregar las actividades

Un integrante del equipo:

3.1. Crea un directorio en Google Drive; con el siguiente nombre: FechaXX, las XX lo
reemplaza por su código de matrícula.
3.2. Comparte el directorio, como puede ver únicamente, a la cuenta
dgamarra@continental.edu.pe.
3.3. Copie la lista de integrantes y el proyecto en Visual Studio.

Referencias bibliográficas consultadas y/o enlaces recomendados


● Roodyn, N. (2005). Extreme .NET : introducing eXtreme programming techniques to .NET developers. Upper Saddle
River, N.J.: Addison-Wesley.

ANEXOS

ANEXO 1 HERRAMIENTAS DE REFACTORIZACIÓN DE VISUAL STUDIO.


Desde el menú se puede accesar a las opciones de refactorización que nos proporciona Visual
Studio

1
Material de trabajo de construcción de software

Figura 1. Menú Refactorizar del Visual Studio.

Usando unas partes de código se demostrará la refactorización.


static void Main(string[] args)
{
string msg = "Hola";
if (msg != string.Empty)
{
Console.WriteLine(msg);
}
}

CAMBIAR NOMBRE
Puede renombrar un miembro dentro del alcance; por ejemplo, la variable msg a mensaje. Para
renombrar este miembro ubique el cursor en el nombre del miembro y haga clic en el menú
Refactorizar  Cambiar nombre o pulse F2.
Ingrese el nuevo nombre, en este caso, mensaje. Asegúrese que la casilla “Vista previa de los
cambios de referencia” este activada.

Figura 2. Cuadro de dialogo para cambiar el nombre.

Pre visualice los cambios, confirme los cambios y clic en aceptar.

2
Material de trabajo de construcción de software

Figura 3. Pre visualización de los cambios.

El nuevo contenido es:


static void Main(string[] args)
{
string mensaje = "Hola";
if (mensaje != string.Empty)
{
Console.WriteLine(mensaje);
}
}

EXTRAER MÉTODO
Extraer método extrae un método fuera de un o muchas sentencias. Puedo extraer un método del
código que tiene una sentencia if.
Seleccione la línea “Console.WriteLine(mensaje)”, del menú seleccione RefactorizarExtraer
Método.

Figura 4. Pre visualización de los cambios.

Ingrese el nombre del nuevo método, por ejemplo: ImprimirConsola, luego clic en Aceptar.
El resultado del código es:
static void Main(string[] args)
{
string mensaje = "Hola";
if (mensaje != string.Empty)
{
ImprimirConsola(mensaje);

3
Material de trabajo de construcción de software

}
}

private static void ImprimirConsola(string mensaje)


{
Console.WriteLine(mensaje);
}

ENCAPSULAR CAMPO
El siguiente código tiene dos campos y un método.
public class Cliente
{
private string nombre;
private string direccion;
public void ImprimirInformacionCliente()
{
string resultado =
string.Format("Nombre = {0}\nDirección = {1}\n", Nombre,
Direccion);
}
}

Esta refactorización convierte una variable privada en una propiedad pública.


Seleccione la variable nombre, seleccione del menú RefactorizarEncapsular campo.

Figura 5. Cuadro de dialogo para Encapsular Campo.

Ingrese el nombre de la propiedad; por ejemplo: Nombre. Asegúrese que la casilla “Vista previa
de los cambios de referencia” este activada, clic en Aceptar.

4
Material de trabajo de construcción de software

Figura 6. Pre visualización - Encapsular Campo.

Si está de acuerdo con la pre visualización, clic en Aplicar.

Figura 7. Resultado de la comprobación - Encapsular Campo.

Clic en Aceptar.
Hacer lo mismo con el campo “direccion”.
El resultado del código es:
public class Cliente
{
private string nombre;

public string Nombre


{
get { return nombre; }

5
Material de trabajo de construcción de software

set { nombre = value; }


}
private string direccion;

public string Direccion


{
get { return direccion; }
set { direccion = value; }
}
public void ImprimirInformacionCliente()
{
string resultado =
string.Format("Nombre = {0}\nDirección = {1}\n", Nombre,
Direccion);
}
}

EXTRAER INTERFACE
Extraer la interface escogiendo los miembros. Para este ejemplo, se seleccionará los miembros:
Dirección, Nombre y ImprimirInformacionCliente; la interface se llamará ICliente.
Ubique el cursor en la clase Cliente, del menú seleccione RefactorizarExtraer interfaz.

Figura 8. Resultado de la comprobación - Encapsular Campo.

Seleccione los componentes y clic en Aceptar.


Al aplicar la refactorización crea otro archivo con la interface ICliente, el código resultante es:
using System;
namespace Clientes
{
interface ICliente
{
string Direccion { get; set; }
void ImprimirInformacionCliente();
string Nombre { get; set; }
}
}

También se modifica la clase cliente obteniéndose el siguiente código:

6
Material de trabajo de construcción de software

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Clientes
{

public class Cliente : Clientes.ICliente


{
private string nombre;

public string Nombre


{
get { return nombre; }
set { nombre = value; }
}
private string direccion;

public string Direccion


{
get { return direccion; }
set { direccion = value; }
}
public void ImprimirInformacionCliente()
{
string resultado =
string.Format("Nombre = {0}\nDirección = {1}\n", Nombre,
Direccion);
}
}
}

ANEXO 2 ALGORTIMO (SEUDOCODIGO) PARA DETERMINAR LA EDAD DE UNA PERSONA EN AÑOS.


Proceso EdadPersona

Definir dia_actual como entero;


Definir mes_actual como entero;
Definir anio_actual como entero;
Definir dia como entero;
Definir mes como entero;
Definir anio como entero;
Definir edad_base como entero;
Definir edad como entero;

Escribir "Ingrese el dia actual [1-31] y presione Entrar";


Leer dia_actual;

Escribir "Ingrese el mes actual [1-12] y presione Entrar";


Leer mes_actual;

Escribir "Ingrese el año y presione Entrar";


Leer anio_actual;

Escribir "Ingrese el dia en que nacio la persona [1-31] y presione Entrar";


Leer dia;

7
Material de trabajo de construcción de software

Escribir "Ingrese el mes en que nacio la persona [1-12] y presione Entrar";


Leer mes;

Escribir "Ingrese el año en que nacio la persona [1-12] y presione Entrar";


Leer anio;

edad_base <- anio_actual - anio;

Si (mes_actual < mes) Entonces


edad_base <- edad_base - 1;
FinSi

Si mes_actual = mes Entonces

Si (dia_actual < dia) Entonces


edad_base <- edad_base - 1;
FinSi

FinSi

edad <- edad_base;


Escribir "La edad actual de la persona es de: ",edad_base," años";

FinProceso

ANEXO 3 IMPLEMENTACIÓN EN C PARA VALIDAR SI UNA FECHA (DD/MM/AAAA) ES CORRECTA.


main(){
int anno,mes,dia,ok=0,bisiesto=0;

clrscr();
printf("Fecha (dd/mm/aaaa)");
scanf("%d/%d/%d",&dia,&mes,&anno);
if(anno % 4==0) {
bisiesto=1;
if(anno%100==0&&anno%400!=400) bisiesto=0;
}
switch(mes){
case 1: case 3: case 5: case 7: case 8: case 10:
case 12: if(dia>=1&&dia<=31) ok=1; break;
case 4: case 6: case 9:
case 11: if(dia>=1&&dia<=30) ok=1; break;
case 2: if(bisiesto){
if(dia>=1&&dia<=29) ok=1;
} else
if(dia>=1&&dia<=28) ok=1;
break;
}
if(ok) printf("\nFecha Correcta");
else printf("\nFecha incorrecta");
getch();
}

8
Material de trabajo de construcción de software

ANEXO 4 VALIDAR FECHA TRYPARSE.


if (DateTime.TryParse("texto a validar", out fecha))
{

}

ANEXO 5 VALIDAR FECHA CON EXPRESIONES REGULARES.


System.Text.RegularExpressions.

Regex re = new Regex("^(0?[1-9]|1[0-9]|2|2[0-9]|3[0-1])/(0?[1-9]|1[0-
2])/(d{2}|d{4})$");

if(re.IsMatch("Texto a validar"))
{

}

Вам также может понравиться