laboratorio 1

14
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

Upload: ronald-guerra-olivares

Post on 31-Jul-2015

32 views

Category:

Business


0 download

TRANSCRIPT

UniversidadSan Ignaciode Loyola

LABORATORIO

CURSO : Construcción de Software INo. : Laboratorio No.01TEMA : 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

UniversidadSan Ignaciode 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

UniversidadSan Ignaciode 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

UniversidadSan Ignaciode 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

UniversidadSan Ignaciode 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

UniversidadSan Ignaciode 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

UniversidadSan Ignaciode 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

UniversidadSan Ignaciode 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

UniversidadSan Ignaciode 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

UniversidadSan Ignaciode 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

UniversidadSan Ignaciode Loyola

return false;}

elsereturn 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 electoralo 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

UniversidadSan Ignaciode 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

UniversidadSan Ignaciode 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

UniversidadSan Ignaciode 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