SlideShare una empresa de Scribd logo
1 de 14
Descargar para leer sin conexión
Universidad
San Ignacio
de Loyola
LABORATORIO
CURSO : Construcción de Software I
No. : Laboratorio No.01
TEMA : Aplicación con múltiples clases de asociación y polimorfismo.
DURACIÓN ESTIMADA : 01:40 horas.
I. OBJETIVOS
El presente laboratorio tiene por objetivos:
• Revisar el IDE de Microsoft Visual C# 2008.
• Crear un proyecto nuevo y una aplicación simple.
• Construir y ejecutar una aplicación de múltiples clases.
II. RESUMEN
En una institución financiera se tiene información de cuentas de sus clientes. Dicha
información está registrada como cuentas de ahorrros y cuentas corrientes. Para lo cual, se
pide administrar esta información de las cuentas en forma eficiente haciendo uso de la
informática. En primer lugar, se implementa mediante un lenguaje de programación
orientada a objetos. En esta práctica usted explorara un proyecto completo en Microsoft
Visual C# con múltiples clases.
III. CONSTRUCCIÓN DE LA APLICACIÓN
1. Crear el Proyecto
• En esta sección crearemos nuestra aplicación. Para ello crearemos una nueva
aplicación.
o Para crear un nuevo proyecto seleccionamos la opción de menú Project, de
la opción New y del menú principal File.
o En la ventana de dialogo New Project, seleccione la plantilla Windows
Forms Application y modifique el nombre por defecto que aparece por el de
AccountProject. Finalmente realice clic en el botón OK.
Carrera de Ingeniería Informática y de Sistemas Pág. 1
Universidad
San Ignacio
de Loyola
o A continuación aparecerá la siguiente ventana, con el nombre de Solution
Explorer con un formulario a la izquierda.
2. Agregar al Proyecto de nuestra primera Clase
• En esta sección crearemos la Clase Account.
o Clic derecho en el nodo AccountProject en el Solution Explorer y
seleccione la opción Add del menú contextual. Para seleccionar la opción
Class. Finalmente haga clic izquierdo.
o En la caja de dialogo Add New Item, seleccione la opción Class y cambie el
nombre por el de Account. Haga clic en Add.
Carrera de Ingeniería Informática y de Sistemas Pág. 2
Universidad
San Ignacio
de Loyola
o A continuación aparecerá la ventana de código, con una plantilla estándar de
una clase.
o La nueva clase se abre automáticamente con el editor de código, adicione los
siguientes atributos.
private int _number;
private string _client;
private decimal _balance;
private DateTime _openingDate;
o En la ventana de código, a continuación vamos a implementar el constructor
de la clase.
public Account(int number, string client, decimal balance )
{
_number = number;
_client = client;
_balance = balance;
_openingDate = System.DateTime.Now;
}
Carrera de Ingeniería Informática y de Sistemas Pág. 3
Universidad
San Ignacio
de Loyola
o Luego, procedemos a crear las propiedades de los atributos de esta clase.
Se realiza individualmente por cada atributo, un clic derecho al costado del
atributo y se elcciona Encapsulate Field de la opción de menú Refactor.
o En la ventana Encapsulate Field. Haga clic en OK.
o En la ventana Preview Reference Changes. Haga clic en Apply.
o Como resultado se tiene la siguiente propiedad para el atributo Number.
public int Number
{
get { return _number; }
set { _number = value; }
}
o Realice el mismo procedimiento para el resto de atributos de la clase
Carrera de Ingeniería Informática y de Sistemas Pág. 4
Universidad
San Ignacio
de Loyola
private string _client;
public string Client
{
get { return _client; }
set { _client = value; }
}
private decimal _balance;
public decimal Balance
{
get { return _balance; }
set { _balance = value; }
}
private DateTime _openingDate;
public DateTime OpeningDate
{
get { return _openingDate; }
set { _openingDate = value; }
}
o A continuación, se adiciona los siguientes métodos para realizar operaciones
sobre la cuenta.
abstract class Account {
...
public abstract bool toDeposit(decimal amount);
public abstract bool withdrawal(decimal amount);
public abstract bool computeInterest(float percentage);
}
3. Agregar al Proyecto de la segunda Clase
• En esta sección crearemos la clase CurrentAccount.
Carrera de Ingeniería Informática y de Sistemas Pág. 5
Universidad
San Ignacio
de Loyola
o Clic derecho en el nodo AccountProject en el Solution Explorer y
seleccione la opción Add del menú contextual. Para seleccionar la opción
Class. Finalmente haga clic izquierdo.
o En la caja de dialogo Add New Item, seleccione la opción Class y cambie el
nombre por el de CurrentAccount. Clic en Add.
o A continuación aparecerá la ventana de código, con una plantilla estándar de
una clase. En el cual adicionaremos el siguiente código para realizar la
herencia.
class CurrentAccount : Account
o La nueva clase se abre automáticamente con el editor de código, adicione el
siguiente atributo.
private decimal _overdraft;
Carrera de Ingeniería Informática y de Sistemas Pág. 6
Universidad
San Ignacio
de Loyola
o En la ventana de código, a continuación vamos a implementar el constructor
de la clase.
public CurrentAccount(int number, string client,
decimal balance, decimal overdraft)
: base(number, client, balance)
{
_overdraft = overdraft;
}
o Luego, procedemos a crear la propiedad del atributo de esta clase.
private decimal _overdraft;
public decimal Overdraft
{
get { return _overdraft; }
set { _overdraft = value; }
}
o A continuación, se adiciona el siguiente método para realizar la operación de
depositar.
public override bool toDeposit(decimal amount)
{
Balance = Balance + amount;
return true;
}
o A continuación, se adiciona el siguiente método para realizar la operación de
retirar.
public override bool withdrawal(decimal amount) {
if( amount <= Balance + _overdraft )
{
if (amount <= Balance)
Balance = Balance - amount;
else
{
_overdraft = Balance + _overdraft - amount;
Balance = 0;
}
return true;
}
else
Carrera de Ingeniería Informática y de Sistemas Pág. 7
Universidad
San Ignacio
de Loyola
return false;
}
o A continuación, se adiciona el siguiente método para realizar el cálculo del
interés.
public override bool computeInterest(float percentage) {
decimal interest = Balance * (decimal)percentage;
Balance = Balance + interest;
return true;
}
4. Agregar al Proyecto de la tercera Clase
• En esta sección crearemos la Clase TimeAccount.
o Clic derecho en el nodo AccountProject en el Solution Explorer y
seleccione la opción Add del menú contextual. Para seleccionar la opción
Class. Finalmente haga clic izquierdo.
o En la caja de dialogo Add New Item, seleccione la opción Class y cambie el
nombre por el de TimeAccount. Clic en Add.
Carrera de Ingeniería Informática y de Sistemas Pág. 8
Universidad
San Ignacio
de Loyola
o A continuación aparecerá la ventana de código, con una plantilla estándar de
una clase. En la ventana de código agregue el siguiente código para realizar
la herencia.
Class TiemAccount : Account
o La nueva clase se abre automáticamente con el editor de código, adicione los
siguientes atributos.
private int _monthPeriod;
private DateTime _finishingDate;
o En la ventana de código, a continuación vamos a implementar el constructor
de la clase.
public TimeAccount(int number, string client, decimal balance,
int monthPeriod): base(number, client, balance)
{
_monthPeriod = monthPeriod;
_finishingDate = OpeningDate.AddMonths(monthPeriod);
}
o Luego, procedemos a crear lpropiedades de los atributos de esta clase.
private int _monthPeriod;
Carrera de Ingeniería Informática y de Sistemas Pág. 9
Universidad
San Ignacio
de Loyola
public int MonthPeriod
{
get { return _monthPeriod; }
set { _monthPeriod = value; }
}
private DateTime _finishingDate;
public DateTime FinishingDate
{
get { return _finishingDate; }
set { _finishingDate = value; }
}
o A continuación, se adiciona el siguiente método para realizar la operación de
depositar.
public override bool toDeposit(decimal amount)
{
DateTime date = System.DateTime.Now;
if (date >= _finishingDate)
{
Balance = Balance + amount;
return true;
}
else
return false;
}
o A continuación, se adiciona el siguiente método para realizar la operación de
retirar.
public override bool withdrawal(decimal amount)
{
DateTime date = System.DateTime.Now;
if (date >= _finishingDate)
{
if (amount <= Balance )
{
Balance = Balance - amount;
return true;
}
else
Carrera de Ingeniería Informática y de Sistemas Pág. 10
Universidad
San Ignacio
de Loyola
return false;
}
else
return false;
}
o A continuación, se adiciona el siguiente método para realizar el cálculo del
interés.
public override bool computeInterest(float percentage)
{
DateTime date = System.DateTime.Now;
if (date >= _finishingDate)
{
decimal interest = Balance * (decimal)percentage;
Balance = Balance + interest;
return true;
}
else
return false;
}
5. Modificaremos la clase de la interfaz del proceso electoral
o En el Form, seleccionamos la ventana Properties; cambie la propiedad
Name con el nombre por AccountForm, y cambie la propiedad Text con el
título a Managment Account.
o En la ventana se adicionará cinco objetos Label a los cuales se les cambia
la propiedad Text a: Number, Client, Balance, Overdraft y Period. y cinco
objetos TextBox a los cuales se les cambia la propiedad Name en la
ventana Propiedad a: textBoxNumber, textBoxClient, textBoxBalance,
Carrera de Ingeniería Informática y de Sistemas Pág. 11
Universidad
San Ignacio
de Loyola
textBoxOverdraft y textBoxPeriod. Tambien dos objetos RadioButton a los
que se le cambia la propiedad Name a radioButtonCurrent, radioButtonTime
y seleccionar la propiedad Checked del primer objeto a true. Finalmente dos
objetos Button a los cuales se les cambia la propiedad Name en la ventana
de Propiedad a: buttonAdd, buttonShow; además de la propiedad Text a:
Add y Show. Al finalizar tendrá la siguiente apariencia.
o Realizamos clic derecho sobre la ventana para seleccionar View Code, en la
cual adicionaremos un arreglo de objetos de la clase Account con el
siguiente código:
private Array _accounts = Array.CreateInstance(typeof(Account), 10);
private int _position = -1;
o En la ventana seleccionamos el botón Add, luego en la ventana de
Propiedades realizamos doble clic y automáticamente se apertura el área
de código como respuesta al evento Click. A continuación en dicho método
escriba el siguiente código:
private void buttonAdd_Click(object sender, EventArgs e)
{
_position++;
if (_position < _accounts.Length)
{
int number = Convert.ToInt32(textBoxNumber.Text);
string client = textBoxClient.Text;
decimal balance = Convert.ToDecimal(textBoxBalance.Text);
Carrera de Ingeniería Informática y de Sistemas Pág. 12
Universidad
San Ignacio
de Loyola
if (radioButtonCurrent.Checked)
{
decimal overdraft =
Convert.ToDecimal(textBoxOverdraft.Text);
_accounts.SetValue( new CurrentAccount(number,
client, balance, overdraft) , _position);
}
else
{
int period = Convert.ToInt32(textBoxPeriod.Text);
_accounts.SetValue( new TimeAccount(number, client,
balance, period), _position);
}
MessageBox.Show(this, "Adiciono correctamente",
"Nuevo cliente", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
else
MessageBox.Show(this, "No hay espacio", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
o En la ventana seleccionamos el botón Show, luego en la ventana de
Propiedades realizamos doble clic y automáticamente se apertura el área
de código como respuesta al evento Click. A continuación en dicho método
escriba el siguiente código:
private void buttonShow_Click(object sender, EventArgs e)
{
int number, period;
string name, message = "";
decimal balance, overdraft;
DateTime dateOpening, dateFinish;
foreach (Account account in _accounts)
{
if (account != null)
{
number = account.Number;
name = account.Client;
Carrera de Ingeniería Informática y de Sistemas Pág. 13
Universidad
San Ignacio
de Loyola
balance = account.Balance;
dateOpening = account.OpeningDate;
message = message + " Number: " + number + " Name: "
name " Balance: " + balance + " Opening Date: "
+ dateOpening;
if (account is CurrentAccount)
{
overdraft = ((CurrentAccount)account).Overdraft;
message = message + " Overdraf: " + overdraft +
"n";
}
else
{
period = ((TimeAccount)account).MonthPeriod;
dateFinish =
((TimeAccount)account).FinishingDate;
message = message + " Month period: " + period +
" Finish Date: " + dateFinish + "n";
}
}
}
MessageBox.Show(this, message, "Accounts",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
6. Tarea.
Proceda a implementar en el Frame los botones para realizar las operaciones bancarias de
depósito, retiro y cálculo de su interés.
Carrera de Ingeniería Informática y de Sistemas Pág. 14

Más contenido relacionado

La actualidad más candente (16)

Computación 3 ps9013
Computación 3 ps9013Computación 3 ps9013
Computación 3 ps9013
 
Proyecto final visual c engargolado
Proyecto final visual c engargoladoProyecto final visual c engargolado
Proyecto final visual c engargolado
 
Guia practicaiuprg3
Guia practicaiuprg3Guia practicaiuprg3
Guia practicaiuprg3
 
Macros
MacrosMacros
Macros
 
Macros para combinar
Macros   para combinarMacros   para combinar
Macros para combinar
 
Fundamentos de programación
Fundamentos de programaciónFundamentos de programación
Fundamentos de programación
 
Macros
MacrosMacros
Macros
 
Introduccion a Windows Form
Introduccion a Windows FormIntroduccion a Windows Form
Introduccion a Windows Form
 
Fundamentos de programacion
Fundamentos de programacionFundamentos de programacion
Fundamentos de programacion
 
Ejercicios lab view
Ejercicios lab viewEjercicios lab view
Ejercicios lab view
 
6. windows forms
6.  windows forms6.  windows forms
6. windows forms
 
Macros
MacrosMacros
Macros
 
Macros
MacrosMacros
Macros
 
Fundamentos de programacion ss14
Fundamentos de programacion ss14Fundamentos de programacion ss14
Fundamentos de programacion ss14
 
Guia7
Guia7Guia7
Guia7
 
Compilador para calcular el área de figuras Triangulo, Cuadrado y Rectángulo.
Compilador para calcular el área de figuras Triangulo, Cuadrado y Rectángulo.Compilador para calcular el área de figuras Triangulo, Cuadrado y Rectángulo.
Compilador para calcular el área de figuras Triangulo, Cuadrado y Rectángulo.
 

Similar a Laboratorio 1 (20)

Tema2 ado net
Tema2 ado netTema2 ado net
Tema2 ado net
 
Como construir un DSS
Como construir un DSSComo construir un DSS
Como construir un DSS
 
Laboratorio nº 2
Laboratorio nº 2Laboratorio nº 2
Laboratorio nº 2
 
bases de datos desde visual basic
bases de datos desde visual basicbases de datos desde visual basic
bases de datos desde visual basic
 
Visual studio 2010
Visual studio 2010Visual studio 2010
Visual studio 2010
 
Tutorial net beans
Tutorial net beansTutorial net beans
Tutorial net beans
 
Conectar con bases de datos
Conectar con bases de datosConectar con bases de datos
Conectar con bases de datos
 
PLC y Electroneumática: Codesys Grafcet
PLC y Electroneumática: Codesys GrafcetPLC y Electroneumática: Codesys Grafcet
PLC y Electroneumática: Codesys Grafcet
 
Examen programación
Examen programaciónExamen programación
Examen programación
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetos
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetos
 
Computación 2 java
Computación 2 javaComputación 2 java
Computación 2 java
 
Bases de datos_angelina_monetti
Bases de datos_angelina_monettiBases de datos_angelina_monetti
Bases de datos_angelina_monetti
 
Metodos numericos s14
Metodos numericos s14Metodos numericos s14
Metodos numericos s14
 
Fundamentos de programación
Fundamentos de programaciónFundamentos de programación
Fundamentos de programación
 
Computación 3 ps9013
Computación 3 ps9013Computación 3 ps9013
Computación 3 ps9013
 
Computación 3
Computación 3Computación 3
Computación 3
 
Tutorial de visual c++
Tutorial de visual c++Tutorial de visual c++
Tutorial de visual c++
 
Ejemplo 1 -_calculo_simple (1)
Ejemplo 1 -_calculo_simple (1)Ejemplo 1 -_calculo_simple (1)
Ejemplo 1 -_calculo_simple (1)
 
Aplicación zirconia
Aplicación zirconiaAplicación zirconia
Aplicación zirconia
 

Último

ADMINISTRACION FINANCIERA CAPITULO 4.pdf
ADMINISTRACION FINANCIERA CAPITULO 4.pdfADMINISTRACION FINANCIERA CAPITULO 4.pdf
ADMINISTRACION FINANCIERA CAPITULO 4.pdfguillencuevaadrianal
 
MARKETING SENSORIAL -GABRIELA ARDON .pptx
MARKETING SENSORIAL -GABRIELA ARDON .pptxMARKETING SENSORIAL -GABRIELA ARDON .pptx
MARKETING SENSORIAL -GABRIELA ARDON .pptxgabyardon485
 
Plan General de Contabilidad Y PYMES pdf
Plan General de Contabilidad Y PYMES pdfPlan General de Contabilidad Y PYMES pdf
Plan General de Contabilidad Y PYMES pdfdanilojaviersantiago
 
PIA MATEMATICAS FINANCIERAS SOBRE PROBLEMAS DE ANUALIDAD.pptx
PIA MATEMATICAS FINANCIERAS SOBRE PROBLEMAS DE ANUALIDAD.pptxPIA MATEMATICAS FINANCIERAS SOBRE PROBLEMAS DE ANUALIDAD.pptx
PIA MATEMATICAS FINANCIERAS SOBRE PROBLEMAS DE ANUALIDAD.pptxJosePuentePadronPuen
 
CULTURA EN LA NEGOCIACIÓN CONCEPTOS Y DEFINICIONES
CULTURA EN LA NEGOCIACIÓN CONCEPTOS Y DEFINICIONESCULTURA EN LA NEGOCIACIÓN CONCEPTOS Y DEFINICIONES
CULTURA EN LA NEGOCIACIÓN CONCEPTOS Y DEFINICIONESMarielaAldanaMoscoso
 
EGLA CORP - Honduras Abril 27 , 2024.pptx
EGLA CORP - Honduras Abril 27 , 2024.pptxEGLA CORP - Honduras Abril 27 , 2024.pptx
EGLA CORP - Honduras Abril 27 , 2024.pptxDr. Edwin Hernandez
 
Buenas Practicas de Almacenamiento en droguerias
Buenas Practicas de Almacenamiento en drogueriasBuenas Practicas de Almacenamiento en droguerias
Buenas Practicas de Almacenamiento en drogueriasmaicholfc
 
Modelo de convenio de pago con morosos del condominio (GENÉRICO).docx
Modelo de convenio de pago con morosos del condominio (GENÉRICO).docxModelo de convenio de pago con morosos del condominio (GENÉRICO).docx
Modelo de convenio de pago con morosos del condominio (GENÉRICO).docxedwinrojas836235
 
LIC-ZIEGLER-Planificación y Control de Gestión
LIC-ZIEGLER-Planificación y Control de GestiónLIC-ZIEGLER-Planificación y Control de Gestión
LIC-ZIEGLER-Planificación y Control de GestiónBahamondesOscar
 
Gestion de rendicion de cuentas viaticos.pptx
Gestion de rendicion de cuentas viaticos.pptxGestion de rendicion de cuentas viaticos.pptx
Gestion de rendicion de cuentas viaticos.pptxignaciomiguel162
 
INTERESES Y MULTAS DEL IMPUESTO A LA RENTA POWER POINT.pptx
INTERESES Y MULTAS DEL IMPUESTO A LA RENTA POWER POINT.pptxINTERESES Y MULTAS DEL IMPUESTO A LA RENTA POWER POINT.pptx
INTERESES Y MULTAS DEL IMPUESTO A LA RENTA POWER POINT.pptxRENANRODRIGORAMIREZR
 
Presentacion III ACTIVIDADES DE CONTROL. IV UNIDAD..pdf
Presentacion III ACTIVIDADES DE CONTROL. IV UNIDAD..pdfPresentacion III ACTIVIDADES DE CONTROL. IV UNIDAD..pdf
Presentacion III ACTIVIDADES DE CONTROL. IV UNIDAD..pdfLuisAlbertoAlvaradoF2
 
el impuesto genera A LAS LAS lasventas IGV
el impuesto genera A LAS  LAS lasventas IGVel impuesto genera A LAS  LAS lasventas IGV
el impuesto genera A LAS LAS lasventas IGVTeresa Rc
 
gua de docente para el curso de finanzas
gua de docente para el curso de finanzasgua de docente para el curso de finanzas
gua de docente para el curso de finanzassuperamigo2014
 
diseño de redes en la cadena de suministro.pptx
diseño de redes en la cadena de suministro.pptxdiseño de redes en la cadena de suministro.pptx
diseño de redes en la cadena de suministro.pptxjuanleivagdf
 
Presentación Final Riesgo de Crédito.pptx
Presentación Final Riesgo de Crédito.pptxPresentación Final Riesgo de Crédito.pptx
Presentación Final Riesgo de Crédito.pptxIvnAndres5
 
informacion-finanTFHHETHAETHciera-2022.pdf
informacion-finanTFHHETHAETHciera-2022.pdfinformacion-finanTFHHETHAETHciera-2022.pdf
informacion-finanTFHHETHAETHciera-2022.pdfPriscilaBermello
 
Contabilidad universitaria Septima edición de MCGrawsHill
Contabilidad universitaria Septima edición de MCGrawsHillContabilidad universitaria Septima edición de MCGrawsHill
Contabilidad universitaria Septima edición de MCGrawsHilldanilojaviersantiago
 
cuadro sinoptico tipos de organizaci.pdf
cuadro sinoptico tipos de organizaci.pdfcuadro sinoptico tipos de organizaci.pdf
cuadro sinoptico tipos de organizaci.pdfjesuseleazarcenuh
 
Ejemplo Caso: El Juego de la negociación
Ejemplo Caso: El Juego de la negociaciónEjemplo Caso: El Juego de la negociación
Ejemplo Caso: El Juego de la negociaciónlicmarinaglez
 

Último (20)

ADMINISTRACION FINANCIERA CAPITULO 4.pdf
ADMINISTRACION FINANCIERA CAPITULO 4.pdfADMINISTRACION FINANCIERA CAPITULO 4.pdf
ADMINISTRACION FINANCIERA CAPITULO 4.pdf
 
MARKETING SENSORIAL -GABRIELA ARDON .pptx
MARKETING SENSORIAL -GABRIELA ARDON .pptxMARKETING SENSORIAL -GABRIELA ARDON .pptx
MARKETING SENSORIAL -GABRIELA ARDON .pptx
 
Plan General de Contabilidad Y PYMES pdf
Plan General de Contabilidad Y PYMES pdfPlan General de Contabilidad Y PYMES pdf
Plan General de Contabilidad Y PYMES pdf
 
PIA MATEMATICAS FINANCIERAS SOBRE PROBLEMAS DE ANUALIDAD.pptx
PIA MATEMATICAS FINANCIERAS SOBRE PROBLEMAS DE ANUALIDAD.pptxPIA MATEMATICAS FINANCIERAS SOBRE PROBLEMAS DE ANUALIDAD.pptx
PIA MATEMATICAS FINANCIERAS SOBRE PROBLEMAS DE ANUALIDAD.pptx
 
CULTURA EN LA NEGOCIACIÓN CONCEPTOS Y DEFINICIONES
CULTURA EN LA NEGOCIACIÓN CONCEPTOS Y DEFINICIONESCULTURA EN LA NEGOCIACIÓN CONCEPTOS Y DEFINICIONES
CULTURA EN LA NEGOCIACIÓN CONCEPTOS Y DEFINICIONES
 
EGLA CORP - Honduras Abril 27 , 2024.pptx
EGLA CORP - Honduras Abril 27 , 2024.pptxEGLA CORP - Honduras Abril 27 , 2024.pptx
EGLA CORP - Honduras Abril 27 , 2024.pptx
 
Buenas Practicas de Almacenamiento en droguerias
Buenas Practicas de Almacenamiento en drogueriasBuenas Practicas de Almacenamiento en droguerias
Buenas Practicas de Almacenamiento en droguerias
 
Modelo de convenio de pago con morosos del condominio (GENÉRICO).docx
Modelo de convenio de pago con morosos del condominio (GENÉRICO).docxModelo de convenio de pago con morosos del condominio (GENÉRICO).docx
Modelo de convenio de pago con morosos del condominio (GENÉRICO).docx
 
LIC-ZIEGLER-Planificación y Control de Gestión
LIC-ZIEGLER-Planificación y Control de GestiónLIC-ZIEGLER-Planificación y Control de Gestión
LIC-ZIEGLER-Planificación y Control de Gestión
 
Gestion de rendicion de cuentas viaticos.pptx
Gestion de rendicion de cuentas viaticos.pptxGestion de rendicion de cuentas viaticos.pptx
Gestion de rendicion de cuentas viaticos.pptx
 
INTERESES Y MULTAS DEL IMPUESTO A LA RENTA POWER POINT.pptx
INTERESES Y MULTAS DEL IMPUESTO A LA RENTA POWER POINT.pptxINTERESES Y MULTAS DEL IMPUESTO A LA RENTA POWER POINT.pptx
INTERESES Y MULTAS DEL IMPUESTO A LA RENTA POWER POINT.pptx
 
Presentacion III ACTIVIDADES DE CONTROL. IV UNIDAD..pdf
Presentacion III ACTIVIDADES DE CONTROL. IV UNIDAD..pdfPresentacion III ACTIVIDADES DE CONTROL. IV UNIDAD..pdf
Presentacion III ACTIVIDADES DE CONTROL. IV UNIDAD..pdf
 
el impuesto genera A LAS LAS lasventas IGV
el impuesto genera A LAS  LAS lasventas IGVel impuesto genera A LAS  LAS lasventas IGV
el impuesto genera A LAS LAS lasventas IGV
 
gua de docente para el curso de finanzas
gua de docente para el curso de finanzasgua de docente para el curso de finanzas
gua de docente para el curso de finanzas
 
diseño de redes en la cadena de suministro.pptx
diseño de redes en la cadena de suministro.pptxdiseño de redes en la cadena de suministro.pptx
diseño de redes en la cadena de suministro.pptx
 
Presentación Final Riesgo de Crédito.pptx
Presentación Final Riesgo de Crédito.pptxPresentación Final Riesgo de Crédito.pptx
Presentación Final Riesgo de Crédito.pptx
 
informacion-finanTFHHETHAETHciera-2022.pdf
informacion-finanTFHHETHAETHciera-2022.pdfinformacion-finanTFHHETHAETHciera-2022.pdf
informacion-finanTFHHETHAETHciera-2022.pdf
 
Contabilidad universitaria Septima edición de MCGrawsHill
Contabilidad universitaria Septima edición de MCGrawsHillContabilidad universitaria Septima edición de MCGrawsHill
Contabilidad universitaria Septima edición de MCGrawsHill
 
cuadro sinoptico tipos de organizaci.pdf
cuadro sinoptico tipos de organizaci.pdfcuadro sinoptico tipos de organizaci.pdf
cuadro sinoptico tipos de organizaci.pdf
 
Ejemplo Caso: El Juego de la negociación
Ejemplo Caso: El Juego de la negociaciónEjemplo Caso: El Juego de la negociación
Ejemplo Caso: El Juego de la negociación
 

Laboratorio 1

  • 1. Universidad San Ignacio de Loyola LABORATORIO CURSO : Construcción de Software I No. : Laboratorio No.01 TEMA : Aplicación con múltiples clases de asociación y polimorfismo. DURACIÓN ESTIMADA : 01:40 horas. I. OBJETIVOS El presente laboratorio tiene por objetivos: • Revisar el IDE de Microsoft Visual C# 2008. • Crear un proyecto nuevo y una aplicación simple. • Construir y ejecutar una aplicación de múltiples clases. II. RESUMEN En una institución financiera se tiene información de cuentas de sus clientes. Dicha información está registrada como cuentas de ahorrros y cuentas corrientes. Para lo cual, se pide administrar esta información de las cuentas en forma eficiente haciendo uso de la informática. En primer lugar, se implementa mediante un lenguaje de programación orientada a objetos. En esta práctica usted explorara un proyecto completo en Microsoft Visual C# con múltiples clases. III. CONSTRUCCIÓN DE LA APLICACIÓN 1. Crear el Proyecto • En esta sección crearemos nuestra aplicación. Para ello crearemos una nueva aplicación. o Para crear un nuevo proyecto seleccionamos la opción de menú Project, de la opción New y del menú principal File. o En la ventana de dialogo New Project, seleccione la plantilla Windows Forms Application y modifique el nombre por defecto que aparece por el de AccountProject. Finalmente realice clic en el botón OK. Carrera de Ingeniería Informática y de Sistemas Pág. 1
  • 2. Universidad San Ignacio de Loyola o A continuación aparecerá la siguiente ventana, con el nombre de Solution Explorer con un formulario a la izquierda. 2. Agregar al Proyecto de nuestra primera Clase • En esta sección crearemos la Clase Account. o Clic derecho en el nodo AccountProject en el Solution Explorer y seleccione la opción Add del menú contextual. Para seleccionar la opción Class. Finalmente haga clic izquierdo. o En la caja de dialogo Add New Item, seleccione la opción Class y cambie el nombre por el de Account. Haga clic en Add. Carrera de Ingeniería Informática y de Sistemas Pág. 2
  • 3. Universidad San Ignacio de Loyola o A continuación aparecerá la ventana de código, con una plantilla estándar de una clase. o La nueva clase se abre automáticamente con el editor de código, adicione los siguientes atributos. private int _number; private string _client; private decimal _balance; private DateTime _openingDate; o En la ventana de código, a continuación vamos a implementar el constructor de la clase. public Account(int number, string client, decimal balance ) { _number = number; _client = client; _balance = balance; _openingDate = System.DateTime.Now; } Carrera de Ingeniería Informática y de Sistemas Pág. 3
  • 4. Universidad San Ignacio de Loyola o Luego, procedemos a crear las propiedades de los atributos de esta clase. Se realiza individualmente por cada atributo, un clic derecho al costado del atributo y se elcciona Encapsulate Field de la opción de menú Refactor. o En la ventana Encapsulate Field. Haga clic en OK. o En la ventana Preview Reference Changes. Haga clic en Apply. o Como resultado se tiene la siguiente propiedad para el atributo Number. public int Number { get { return _number; } set { _number = value; } } o Realice el mismo procedimiento para el resto de atributos de la clase Carrera de Ingeniería Informática y de Sistemas Pág. 4
  • 5. Universidad San Ignacio de Loyola private string _client; public string Client { get { return _client; } set { _client = value; } } private decimal _balance; public decimal Balance { get { return _balance; } set { _balance = value; } } private DateTime _openingDate; public DateTime OpeningDate { get { return _openingDate; } set { _openingDate = value; } } o A continuación, se adiciona los siguientes métodos para realizar operaciones sobre la cuenta. abstract class Account { ... public abstract bool toDeposit(decimal amount); public abstract bool withdrawal(decimal amount); public abstract bool computeInterest(float percentage); } 3. Agregar al Proyecto de la segunda Clase • En esta sección crearemos la clase CurrentAccount. Carrera de Ingeniería Informática y de Sistemas Pág. 5
  • 6. Universidad San Ignacio de Loyola o Clic derecho en el nodo AccountProject en el Solution Explorer y seleccione la opción Add del menú contextual. Para seleccionar la opción Class. Finalmente haga clic izquierdo. o En la caja de dialogo Add New Item, seleccione la opción Class y cambie el nombre por el de CurrentAccount. Clic en Add. o A continuación aparecerá la ventana de código, con una plantilla estándar de una clase. En el cual adicionaremos el siguiente código para realizar la herencia. class CurrentAccount : Account o La nueva clase se abre automáticamente con el editor de código, adicione el siguiente atributo. private decimal _overdraft; Carrera de Ingeniería Informática y de Sistemas Pág. 6
  • 7. Universidad San Ignacio de Loyola o En la ventana de código, a continuación vamos a implementar el constructor de la clase. public CurrentAccount(int number, string client, decimal balance, decimal overdraft) : base(number, client, balance) { _overdraft = overdraft; } o Luego, procedemos a crear la propiedad del atributo de esta clase. private decimal _overdraft; public decimal Overdraft { get { return _overdraft; } set { _overdraft = value; } } o A continuación, se adiciona el siguiente método para realizar la operación de depositar. public override bool toDeposit(decimal amount) { Balance = Balance + amount; return true; } o A continuación, se adiciona el siguiente método para realizar la operación de retirar. public override bool withdrawal(decimal amount) { if( amount <= Balance + _overdraft ) { if (amount <= Balance) Balance = Balance - amount; else { _overdraft = Balance + _overdraft - amount; Balance = 0; } return true; } else Carrera de Ingeniería Informática y de Sistemas Pág. 7
  • 8. Universidad San Ignacio de Loyola return false; } o A continuación, se adiciona el siguiente método para realizar el cálculo del interés. public override bool computeInterest(float percentage) { decimal interest = Balance * (decimal)percentage; Balance = Balance + interest; return true; } 4. Agregar al Proyecto de la tercera Clase • En esta sección crearemos la Clase TimeAccount. o Clic derecho en el nodo AccountProject en el Solution Explorer y seleccione la opción Add del menú contextual. Para seleccionar la opción Class. Finalmente haga clic izquierdo. o En la caja de dialogo Add New Item, seleccione la opción Class y cambie el nombre por el de TimeAccount. Clic en Add. Carrera de Ingeniería Informática y de Sistemas Pág. 8
  • 9. Universidad San Ignacio de Loyola o A continuación aparecerá la ventana de código, con una plantilla estándar de una clase. En la ventana de código agregue el siguiente código para realizar la herencia. Class TiemAccount : Account o La nueva clase se abre automáticamente con el editor de código, adicione los siguientes atributos. private int _monthPeriod; private DateTime _finishingDate; o En la ventana de código, a continuación vamos a implementar el constructor de la clase. public TimeAccount(int number, string client, decimal balance, int monthPeriod): base(number, client, balance) { _monthPeriod = monthPeriod; _finishingDate = OpeningDate.AddMonths(monthPeriod); } o Luego, procedemos a crear lpropiedades de los atributos de esta clase. private int _monthPeriod; Carrera de Ingeniería Informática y de Sistemas Pág. 9
  • 10. Universidad San Ignacio de Loyola public int MonthPeriod { get { return _monthPeriod; } set { _monthPeriod = value; } } private DateTime _finishingDate; public DateTime FinishingDate { get { return _finishingDate; } set { _finishingDate = value; } } o A continuación, se adiciona el siguiente método para realizar la operación de depositar. public override bool toDeposit(decimal amount) { DateTime date = System.DateTime.Now; if (date >= _finishingDate) { Balance = Balance + amount; return true; } else return false; } o A continuación, se adiciona el siguiente método para realizar la operación de retirar. public override bool withdrawal(decimal amount) { DateTime date = System.DateTime.Now; if (date >= _finishingDate) { if (amount <= Balance ) { Balance = Balance - amount; return true; } else Carrera de Ingeniería Informática y de Sistemas Pág. 10
  • 11. Universidad San Ignacio de Loyola return false; } else return false; } o A continuación, se adiciona el siguiente método para realizar el cálculo del interés. public override bool computeInterest(float percentage) { DateTime date = System.DateTime.Now; if (date >= _finishingDate) { decimal interest = Balance * (decimal)percentage; Balance = Balance + interest; return true; } else return false; } 5. Modificaremos la clase de la interfaz del proceso electoral o En el Form, seleccionamos la ventana Properties; cambie la propiedad Name con el nombre por AccountForm, y cambie la propiedad Text con el título a Managment Account. o En la ventana se adicionará cinco objetos Label a los cuales se les cambia la propiedad Text a: Number, Client, Balance, Overdraft y Period. y cinco objetos TextBox a los cuales se les cambia la propiedad Name en la ventana Propiedad a: textBoxNumber, textBoxClient, textBoxBalance, Carrera de Ingeniería Informática y de Sistemas Pág. 11
  • 12. Universidad San Ignacio de Loyola textBoxOverdraft y textBoxPeriod. Tambien dos objetos RadioButton a los que se le cambia la propiedad Name a radioButtonCurrent, radioButtonTime y seleccionar la propiedad Checked del primer objeto a true. Finalmente dos objetos Button a los cuales se les cambia la propiedad Name en la ventana de Propiedad a: buttonAdd, buttonShow; además de la propiedad Text a: Add y Show. Al finalizar tendrá la siguiente apariencia. o Realizamos clic derecho sobre la ventana para seleccionar View Code, en la cual adicionaremos un arreglo de objetos de la clase Account con el siguiente código: private Array _accounts = Array.CreateInstance(typeof(Account), 10); private int _position = -1; o En la ventana seleccionamos el botón Add, luego en la ventana de Propiedades realizamos doble clic y automáticamente se apertura el área de código como respuesta al evento Click. A continuación en dicho método escriba el siguiente código: private void buttonAdd_Click(object sender, EventArgs e) { _position++; if (_position < _accounts.Length) { int number = Convert.ToInt32(textBoxNumber.Text); string client = textBoxClient.Text; decimal balance = Convert.ToDecimal(textBoxBalance.Text); Carrera de Ingeniería Informática y de Sistemas Pág. 12
  • 13. Universidad San Ignacio de Loyola if (radioButtonCurrent.Checked) { decimal overdraft = Convert.ToDecimal(textBoxOverdraft.Text); _accounts.SetValue( new CurrentAccount(number, client, balance, overdraft) , _position); } else { int period = Convert.ToInt32(textBoxPeriod.Text); _accounts.SetValue( new TimeAccount(number, client, balance, period), _position); } MessageBox.Show(this, "Adiciono correctamente", "Nuevo cliente", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else MessageBox.Show(this, "No hay espacio", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } o En la ventana seleccionamos el botón Show, luego en la ventana de Propiedades realizamos doble clic y automáticamente se apertura el área de código como respuesta al evento Click. A continuación en dicho método escriba el siguiente código: private void buttonShow_Click(object sender, EventArgs e) { int number, period; string name, message = ""; decimal balance, overdraft; DateTime dateOpening, dateFinish; foreach (Account account in _accounts) { if (account != null) { number = account.Number; name = account.Client; Carrera de Ingeniería Informática y de Sistemas Pág. 13
  • 14. Universidad San Ignacio de Loyola balance = account.Balance; dateOpening = account.OpeningDate; message = message + " Number: " + number + " Name: " name " Balance: " + balance + " Opening Date: " + dateOpening; if (account is CurrentAccount) { overdraft = ((CurrentAccount)account).Overdraft; message = message + " Overdraf: " + overdraft + "n"; } else { period = ((TimeAccount)account).MonthPeriod; dateFinish = ((TimeAccount)account).FinishingDate; message = message + " Month period: " + period + " Finish Date: " + dateFinish + "n"; } } } MessageBox.Show(this, message, "Accounts", MessageBoxButtons.OK, MessageBoxIcon.Information); } 6. Tarea. Proceda a implementar en el Frame los botones para realizar las operaciones bancarias de depósito, retiro y cálculo de su interés. Carrera de Ingeniería Informática y de Sistemas Pág. 14