Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ezM0YUQ7Uv

.pdf
Скачиваний:
6
Добавлен:
13.02.2021
Размер:
414.88 Кб
Скачать

11

Упражнение 1. Создание классов. Необходимо преобразовать структуру, описывающую банковский счет, в класс. В этом упражнении изучаются механизмы инкапсуляции.

1.Откройте Visual Studio. В меню File выберите New, затем выберите Project. Из списка шаблонов выберите Console Application. Впишите название проекта, например FileDetails.

2.Изучите программу в файле BankAccount.cs. BankAccount имеет тип struct.

3.Откомпилировав программу, запустите ее. Программа предложит ввести номер счета и баланс, затем еще раз то же самое для другого счета.

4.Модифицируйте программу BankAccount.cs, превратив структуру в класс. Откомпилировав программу, получите ошибку.

5.Откройте файл CreateAccount.cs и посмотрите определение класса CreateAccount. Класс выглядит так:

class CreateAccount

{

static BankAccount NewBankAccount( )

{

BankAccount created;

created.accNo = number; // Error here

}

..

}

6.Измените объявление переменной created и создайте новый объект

BankAccount.

7.Откомпилируйте программу. Откорректируйте ошибки и сохраните результат. Убедитесь, что данные вводятся корректно.

8.Выполните инкапсуляцию класса BankAccount. Все члены класса BankAccount имеют модификатор public. Поменяйте его на private.

9.Откомпилировав программу, получите ошибку.

10.Необходимо написать нестатический public метод в BankAccount. Назовите его Populate. Этот метод должен быть void и иметь 2 параметра: number и balance. Первый должен обозначать номер счёта и иметь тип long, а второй – баланс и иметь тип decimal. В теле метода необходимо назначить параметр с типом long полю accNo, а параметр с

12

типом decimal – полю accBal. Полю accType надо установить

AccountType.Checking.

11.В файле BankAccount.cs закомментируйте назначения переменной created в методе NewBankAccount. Добавьте выражение, которое вызывает метод Populate, и передайте number и balance как аргументы.

12.Откомпилировав программу, получите ошибки. Это происходит из-за того, что метод Write пытается непосредственно обратиться к полям BankAccount, объявленным с модификаторами private.

13.Добавьте в BankAccount 3 метода c модификатором доступа public. Эти методы должны возвращать значения трех полей. Назовите методы Number, Balance и Type. Методы должны быть объявлены как public, не иметь параметров и возвращать данные типа long, decimal и string соответственно.

14.Замените в методе Write в классе CreateAccount 3 выражения, которые пытаются непосредственно обращаться к полям BankAccount, объявленным private. Вместо этого надо вызвать 3 метода, созданные в п. 13.

15.Откомпилируйте программу. Откорректируйте ошибки и сохраните результат. Убедитесь, что данные вводятся корректно. Полученный листинг упражнения 1 сохраните для отчета.

Упражнение 2. Использование методов со ссылочными параметрами. Необходимо внести изменения в программу, написанную в предыдущем упражнении.

1.Откройте в Visual Studio проект, с которым работали в предыдущем упражнении.

2.В классе BankAccount добавьте nextAccNo как private static long.

3.Добавьте метод NextNumber как public static в класс BankAccount. Метод не имеет параметров и должен возвращать тип long. Метод должен возвращать значение поля nextAccNo, увеличенное на 1.

4.Закомментируйте в файле CreateAccount строчки

//Console.Write("Enter the account number : "); //long number = long.Parse(Console.ReadLine());

5.Инициализируйте number как результат работы метода NextNumber().

6.Откомпилируйте программу. Откорректируйте ошибки и сохраните результат. Убедитесь, что данные вводятся корректно.

13

7.Явно инициализируйте значение поля nextAccNo равным 123.

8.Откомпилируйте программу. Откорректируйте ошибки и сохраните результат. Убедитесь, что данные вводятся корректно. Проверьте, что 2 созданных счета имеют номера 123 и 124.

9.Выполните дальнейшую инкапсуляцию класса BankAccount. Измените метод Populate. Оставьте только один параметр decimal balance. Внутри метода сделайте назначение полю accNo с помощью статического метода NextNumber.

10.Измените модификатор метода NextNumber на private.

11.Закомментируйте объявление и инициализацию number в методе

NewBankAccount.

12.Откомпилируйте программу. Откорректируйте ошибки и сохраните результат. Убедитесь, что данные вводятся корректно. Полученный листинг упражнения 2 сохраните для отчета.

Упражнение 3. Добавление методов Withdraw и Deposit. Необходимо

добавить 2 метода Withdraw и Deposit в класс BankAccount.

1.Откройте в Visual Studio проект, с которым работали в предыдущем упражнении.

2.Добавьте метод Deposit как public в класс BankAccount. Метод должен возвращать значение типа decimal и иметь параметр amount тоже типа decimal. Этот параметр добавляется к балансу счета (переменная accBal).

3.Добавьте метод TestDeposit как public static void в класс CreateAccount.

Метод должен иметь параметр типа BankAccount. Назовите его acc. Метод должен включать подсказку пользователю, чтобы он ввел «Enter amount to deposit: ». Введенное пользователем значение должно быть прочитано и преобразовано в десятичное значение, которое присваивается переменной amount. Затем должен вызываться метод Deposit с параметром amount в качестве аргумента.

4.Добавьте в метод Main вызов метода TestDeposit с параметром berts. Добавьте метод Write с параметром berts, чтобы отобразить счет после размещения депозита. Напишите аналогичный код для параметра freds.

5.Откомпилируйте программу. Откорректируйте ошибки и сохраните результат. Убедитесь, что данные вводятся корректно.

6.Добавьте метод Withdraw как public в класс BankAccount. Метод должен возвращать значение типа bool и иметь параметр amount типа decimal.

14

7.Добавьте в метод Main вызов метода Test Withdraw. Используйте метод Write для отображения информации о счете.

8.Откомпилируйте программу. Откорректируйте ошибки и сохраните результат. Убедитесь, что данные вводятся корректно. Полученный листинг упражнения 3 сохраните для отчета.

Лабораторная работа № 5 ИСПОЛЬЗОВАНИЕ ПЕРЕМЕННЫХ ССЫЛОЧНОГО ТИПА

Упражнение 1. Добавление методов с параметрами в класс.

Необходимо внести изменения в программу (файлы BankAccount.cs, Test.cs и AccountType.cs). В класс BankAccount надо добавить метод TransferFrom,

обеспечивающий перевод денег с одного счета на другой. Необходимо написать программу проверки корректности перевода денег.

1.Откройте Visual Studio. В меню File выберите New, затем выберите Project. Из списка шаблонов выберите Console Application. Впишите название проекта, например Bank.

2.Изучите описание класса BankAccount, представленного в файле

BankAccount.cs,

3.Отредактируйте класс. Добавьте метод TransferFrom. В методе должно быть 2 входных параметра: accForm и amount. Параметр accForm – это ссылка на объект BankAccount. Параметр amount имеет значение типа decimal. В теле метода напишите 2 выражения, которые выполняют следующие действия: дебетуйте значение amount из баланса accForm с использованием метода Withdraw и проверьте, было ли успешным снятие денег со счета.

4.Проверьте работу программы. Откройте файл Test.cs. Он содержит класс

Test.

5.В метод Main добавьте код, который создает 2 объекта b1 и b2 на основе класса BankAccount. Инициализируйте значение баланса для каждого объекта равным $100. Для инициализации используйте метод Populate. Добавьте код, который отображает на консоль тип, номер и баланс для каждого счета (объекты b1 и b2) до перевода денег.

6.Добавьте код вызова метода TransferFrom и переведите $10 с одного счета на другой.

15

7.Добавьте код, который отображает на консоль тип, номер и баланс для каждого счета (объекты b1 и b2) после перевода денег.

8.Откомпилируйте программу. Откорректируйте ошибки и сохраните результат. Убедитесь, что данные вводятся корректно. Полученный листинг упражнения 1 сохраните для отчета.

Упражнение 2. Использование методов со ссылочными параметрами. Необходимо внести изменения в программу, находящуюся в файле Utils.cs. Нужно добавить статический метод Reverse в класс Utils. Метод читает строку символов и переносит ее в другую переменную в обратном порядке.

1.Откройте Visual Studio. В меню File выберите New, затем выберите Project. Из списка шаблонов выберите Console Application. Впишите название проекта, например Bank.

2.Добавьте метод Reverse как public static в класс BankAccount. Метод не возвращает значение и имеет единственный параметр-ссыку s типа string.

3.В методе Reverse создайте переменную типа string sRev. Она предназначена для сохранения результата обработки данных. Инициализируйте переменную sRev как "".

4.Напишите код, который преобразует строку. Для этого напишите цикл for, в котором надо выделять по одному символу из строки s, начиная с конца. Для этого используйте свойство Length, последовательно переходя от конца строки к началу. Для обозначения строки можно использовать нотацию массива, выделяя из нее по одному символу. Последний символ массива находится в позиции Length-1, а первый в позиции 0. Добавляйте символ в конец sRev.

5.Протестируйте метод Reverse. Для этого отредактируйте класс Test.

6.В методе Main класса Test объявите переменную message типа string. Прочитайте ее значение с консоли и присвойте его переменной message. Передайте значение строки в метод Reverse как ссылочный параметр. Отобразите результат на консоль.

7.Откомпилируйте программу. Откорректируйте ошибки и сохраните результат. Убедитесь, что данные вводятся корректно. Покажите результат преподавателю. Полученный листинг упражнения 2 сохраните для отчета.

16

Упражнение 3. Преобразование символов файла в верхний регистр.

Необходимо написать программу, которая считывает текст из одного файла и переписывает в другой файл, переводя все буквы в верхний регистр.

1.Откройте Visual Studio, если она не была открыта. В меню File выберите New, затем выберите Project. Из списка шаблонов выберите Console Application. Впишите название проекта, например CopyFileUpper.

2.Отредактируйте файл CopyFileUpper.cs. Добавьте выражение using для пространства имен System.IO.

3.Добавьте в метод Main объявление двух переменных типа string sFrom и sTo. В этих переменных будут находиться имена входного и выходного файлов.

4.Объявите переменную типа StreamReader и назовите ее srFrom. Эта переменная предназначена для хранения ссылки на входной файл.

5.Объявите переменную типа StreamWriter и назовите ее swTo. Эта переменная предназначена для хранения ссылки на выходной поток.

6.Напишите подсказку пользователю, чтобы он (она) ввел(а) имя входного файла, напишите команду чтения введенного имени и сохранения его в переменной sFrom типа string.

7.Напишите подсказку пользователю, чтобы он (она) ввел(а) имя выходного файла, напишите команду чтения введенного имени и сохранения его в переменной sTo типа string.

8.Создайте блок try-catch. Он необходим для выявления различных исключений. Первый блок catch FileNotFoundException должен реагировать на несуществующий файл. Второй блок Exception должен реагировать на все остальные исключения. Напишите сообщения пользователям для каждого типа исключений.

9.В блоке try-catch создайте новый объект StreamReader, используя имя входного файла в переменной sFrom, и сохраните его в переменной-

ссылке srFrom.

10.Аналогично создайте новый объект StreamWriter, используя имя входного файла в переменной sTo, и сохраните его в переменной-ссылке swTo.

11.Добавьте цикл while, который работает до тех пор, пока метод Peek() из входного потока не возвратит значение –1. Внутри цикла используйте метод ReadLine() для обработки данных из входного потока, результат

17

чтения каждой следующей строки записывается в переменную sBuffer типа string. Примените метод ToUpper к переменной sBuffer. Используйте метод WriteLine, чтобы отправить переменную sBuffer в выходной поток.

12.Откомпилируйте программу. Откорректируйте ошибки и сохраните результат. Убедитесь, что данные вводятся корректно. Полученный листинг упражнения 3 сохраните для отчета.

13.Проверьте работу программы. Откройте командную строку и перейдите в каталог, где находится рабочий проект, в папку bin\debug. Запустите программу CopyFileUpper. В качестве имени входного файла укажите CopyFileUpper.cs. Имя выходного файла Test.cs. Убедитесь, что весь текст программы в этом файле представлен буквами в верхнем регистре.

14.Полученный листинг упражнения 3 сохраните для отчета.

Упражнение 4. Проверка реализации интерфейса. Необходимо

написать программу, которая будет добавлять статический метод

IsItFormattable в класс Utils.

1.Откройте Visual Studio, если она не была открыта. В меню File выберите New, затем выберите Project. Из списка шаблонов выберите Console Application. Впишите название проекта, например InterfaceTest.

2.Отредактируйте класс Utils. Создайте метод IsItFormattable как public static. Метод должен возвращать тип bool и иметь один параметр x типа object. Используйте оператор is, чтобы определить, передается ли

объект, поддерживающий System.IFormattable. Если да, то возвратить true, если нет, то false.

3. Протестируйте метод IsItFormattable. Отредактируйте класс Test. В методе Main объявите и инициализируйте 3 переменные i, ul и s типов int, ulong и string соответственно. Значения для инициализации 0, 0 и «Test». Передайте каждую переменную в Utils.IsItFormattable() и выведите на консоль результат каждого вызова.

4.Откомпилируйте программу. Откорректируйте ошибки и сохраните результат. Убедитесь, что для переменных типов int и ulong выводится значение true, а для string – false.

5.Полученный листинг упражнения 4 сохраните для отчета.

18

Упражнение 5. Работа с интерфейсами. Необходимо написать метод

Display, который использует оператор as для определения передачи объекта как параметра в интерфейс IPrintable.

1.Откройте Visual Studio, если она не была открыта. В меню File выберите New, затем выберите Project. Из списка шаблонов выберите Console Application. Впишите название проекта, например TestDisplay.

2.Используйте исходный код, который находится в файлах Test.cs, Utils.cs, IPrintable.cs и Coordinate.cs. В файле IPrintable.cs представлено описание интерфейса IPrintable, вызывающего метод Print. В классе Coordinate применяется интерфейс IPrintable. В объекте Coordinate есть пара чисел, которые определяют позицию в двумерном пространстве.

3.Отредактируйте класс Utils. Добавьте метод Display как public static void. У этого метода должен быть один параметр item типа object, передаваемый как значение. В методе Display объявите переменную интерфейса ip типа IPrintable. Конвертируйте параметр item в ссылку на основе интерфейса IPrintable, используя оператор as. Сохраните результат в переменной ip. Если значение переменной ip не null, то используйте интерфейс IPrintable для вызова метода Print. Если значение переменной ip null, то используйте Console.WriteLine для отображения результата с помощью метода ToString() вместо параметра.

4.Протестируйте метод Display. Отредактируйте класс Test. В методе Main создайте переменную num типа int. Присвойте ей значение 65. Создайте переменную msg типа string. Присвойте ей значение «A String». Инициализируйте переменную типа Coordinate как конструктор Coordinate c = new Coordinate(21.0,68.0). Передайте эти 3 переменные в

Utils.Display.

5.Откомпилируйте программу. Откорректируйте ошибки и сохраните результат. Полученный листинг упражнения 5 сохраните для отчета.

Лабораторная работа № 6 ПРИМЕНЕНИЕ КОНСТРУКТОРОВ

Упражнение 1. Добавление методов с параметрами в класс.

Необходимо внести изменения в программу, написанную в предыдущей лабораторной работе (откройте файлы BankAccount.cs, AccountType.cs и CreateAccount.cs).

19

1.Откройте Visual Studio. В меню File выберите New, затем выберите Project. Из списка шаблонов выберите Console Application. Впишите название проекта, например Constructors.

2.Изучите программу в файле BankAccount.cs. В файле дано описание класса BankAccount.

3.Отредактируйте класс BankAccount.

4.Удалите метод Populate.

5.Добавьте конструктор по умолчанию. Назовите его BankAccount. Он должен иметь модификатор public, не иметь параметров и не возвращать тип. Тело конструктора должно генерировать номер счета с помощью метода NextNumber. Применить AccountType.Checking для установления типа счета accType и инициализировать баланс счета accBal в 0. Перейдите к созданию оставшихся конструкторов.

6.Создайте еще один конструктор BankAccount. У него должен быть один параметр aType, определенный как AccountType. Этот конструктор должен генерировать номер счета с помощью метода NextNumber (как в предыдущем конструкторе). Установить accType в aType и инициализировать баланс счета accBal в 0 (как в предыдущем конструкторе).

7.Создайте следующий конструктор BankAccount. У него должен быть один параметр aBal, имеющий тип decimal. Этот конструктор должен генерировать номер счета с помощью метода NextNumber. Применить

AccountType.Checking для установления типа счета accType и

установить accBal в aBal.

8.Создайте последний конструктор BankAccount. У этого конструктора должно быть 2 параметра aType и aBal, имеющих типы AccountType и decimal соответственно. Этот конструктор должен генерировать номер счета с помощью метода NextNumber. Установить accType в aType и accBal в aBal.

9.Проверьте работу конструкторов. В методе Main класса CreateAccount для BankAccount определите 4 переменные. Назовите их acc1, acc2, acc3, acc4.

10.Инициализируйте переменную acc1 с помощью конструктора по умолчанию.

20

11.Присвойте значение переменной acc2 с помощью конструктора, который имеет только один параметр, определенный как AccountType.

Установите тип acc2 как AccountType.Deposit.

12.Присвойте значение переменной acc3 с помощью конструктора, который имеет один параметр – баланс типа decimal. Установите значение равным 100.

13.Присвойте значение переменной acc4 с помощью конструктора, имеющего 2 параметра. Установите тип acc4 как AccountType.Deposit и значение для баланса 500.

14.Используйте метод Write 4 раза для отображения значения каждого счета.

15.Откомпилируйте программу. Откорректируйте ошибки и сохраните результат. Полученный листинг упражнения 1 сохраните для отчета.

Упражнение 2. Преобразование символов файла в верхний регистр.

Необходимо добавить в проект новый класс BankTransaction.

1.Откройте Visual Studio, если она не была открыта. В проект Constructors добавьте новый класс BankTransaction.

2.Удалите команду namespace вместе с открывающейся фигурной скобкой. Удалите закрывающуюся фигурную скобку в конце модуля.

3.Добавьте переменную amount и определите ее как private readonly decimal.

4.Аналогично добавьте переменную when и определите ее как private readonly DateTime.

5.Добавьте 2 метода доступа Amount и When. Эти методы должны возвращать значения экземпляров переменных amount и when соответственно.

6.Определите конструктор для класса BankTransaction как public. У него должен быть параметр tranAmount, определенный как decimal. Этот

параметр используется для передачи значения переменной amount.

В конструкторе инициализируйте when как DateTime.Now.

7.Откомпилируйте программу. Откорректируйте ошибки.

8.Перейдите к созданию транзакции. Транзакция должна создаваться в классе BankAccount и сохраняться в очереди всякий раз, когда вызываются методы Deposit и Withdraw. В модуле BankAccount добавьте using System.Collections.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]