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

Лаб 7 - Валюта - СФ

.pdf
Скачиваний:
2
Добавлен:
06.11.2022
Размер:
277.93 Кб
Скачать

Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего

образования ТОМСКИЙ ГОСУДАРСТВЕЕНЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И

РАДИОЭЛЕКТРОНИКИ (ТУСУР)

Кафедра комплексной информационной безопасности электронно-вычислительных систем (КИБЭВС)

Полиморфизм

Лабораторная работа №7 по дисциплине «Основы программирования» Отчет по лабораторной работе

Студент гр. ххххх

________ хххххххх

15.03.2022

Руководитель: Преподаватель КИБЭВС

_________ ________ хххххххх

15.03.2022

Томск 2022

2

Содержание Введение……………………………………………………………………………………. 3

Теоретические сведения…………………………………………………………………… 4

Ход работы для задания ……………………………………………………………………5

Заключение………………………………………………………………………………….8

Список использованной литературы……………………………………………………....9

3

1 Введение

Цель работы: овладеть навыками использования механизмов инкапсуляции,

наследования и полиморфизма.

Задание: Определить абстрактный класс Сurrency для работы с денежными суммами.

Определить в нем методы перевода в рубли и вывода на экран. На его основе реализовать классы Dollar, Euro и Pound (фунт стерлингов) с возможностью пересчета в центы и пенсы соответственно и указанием текущего курса. Создать класс Purse (кошелек), содержащий массив объектов этих классов. В программе продемонстрировать функциональность разработанных классов.

4

2 Теоретические сведения

Метод Main является точкой входа для каждого приложения C# и вызывается общеязыковой средой выполнения (CLR) при запуске программы. В приложении,

использующем инструкции верхнего уровня, метод Main создается компилятором и содержит все инструкции верхнего уровня.

Методы объявляются в классе, структуре или интерфейсе путем указания уровня доступа, такого как public или private, необязательных модификаторов, таких как abstract или sealed, возвращаемого значения, имени метода и всех параметров этого метода. Все эти части вместе представляют собой сигнатуру метода.

Вызов метода в объекте аналогичен доступу к полю. После имени объекта добавьте точку, имя метода и круглые скобки. Аргументы перечисляются в этих скобках и разделяются запятыми. Таким образом, методы класса Motorcycle могут вызываться, как показано в следующем примере:

При передаче в метод объекта ссылочного типа передается ссылка на этот объект. То есть метод получает не сам объект, а аргумент, который указывает расположение объекта. При изменении члена объекта с помощью этой ссылки это изменение отражается в аргументе в вызывающем методе, даже если объект передается по значению.

Методы могут возвращать значение вызывающему объекту. Если тип возврата,

указываемый перед именем метода, не void, этот метод может возвращать значение с помощью ключевого слова return . Инструкция с ключевым словом return , за которым следует значение, соответствующее типу возврата, будет возвращать это значение объекту,

вызвавшему метод.

5

3 Ход работы для задания

Данный алгоритм создает абстрактный класс Currency, в котором создаются методы пересчета одной валюты в другую. Затем создает классы наследники. В основной программе пользователя просится выбрать из какой валюты переводить и в какую, а также сколько.

На рисунке 3.1 представлен результат работы программы.

Ниже представлен сам код программы:

using System; namespace ConsoleApp6

{

abstract class Currency

{

public void DolInRub(double count)

{

double rate = 115.2;

Console.WriteLine($"Перевод равен: {count * rate}");

}

public void EuroInRub(double count)

{

double rate = 127.23;

Console.WriteLine($"Перевод равен: {count * rate}");

}

public void PoundInRub(double count)

{

double rate = 151.52;

Console.WriteLine($"Перевод равен: {count * rate}");

}

public void RubInDol(double count)

{

double rate = 0.008681;

Console.WriteLine($"Перевод равен: {count * rate}, в центах это: {count *

rate*100}");

}

public void EuroInDol(double count)

{

double rate = 1.1;

Console.WriteLine($"Перевод равен: {count * rate}, в центах это: {count * rate * 100}");

}

public void PoundInDol(double count)

{

double rate = 1.3;

Console.WriteLine($"Перевод равен: {count * rate}, в центах это: {count * rate * 100}");

}

public void RubInEuro(double count)

{

double rate = 0.00786;

Console.WriteLine($"Перевод равен: {count * rate}, в центах это: {count * rate * 100}");

}

public void DolInEuro(double count)

{

double rate = 0.90893;

Console.WriteLine($"Перевод равен: {count * rate}, в центах это: {count * rate * 100}");

}

public void PoundInEuro(double count)

{

double rate = 1.19;

6

Console.WriteLine($"Перевод равен: {count * rate}, в центах это: {count * rate * 100}");

}

public void RubInPound(double count)

{

double rate = 0.0066;

Console.WriteLine($"Перевод равен: {count * rate}, в пенсах это: {count * rate * 100}");

}

public void DolInPound(double count)

{

double rate = 0.7674;

Console.WriteLine($"Перевод равен: {count * rate}, в пенсах это: {count * rate * 100}");

}

public void EuroInPound(double count)

{

double rate = 0.83915;

Console.WriteLine($"Перевод равен: {count * rate}, в пенсах это: {count * rate * 100}");

}

}

class Purse : Currency

{

Currency[] purse = { new InRub(), new InDoll(), new InEuro(), new InPound() };

}

class InRub : Currency { } class InDoll : Currency { } class InEuro : Currency { } class InPound : Currency { } class Program

{

static void Main(string[] args)

{

Currency Rub = new InRub(); Currency Doll = new InDoll(); Currency Euro = new InEuro(); Currency Pound = new InPound();

Console.WriteLine("Введите количество денег"); double quantity = int.Parse(Console.ReadLine());

Console.WriteLine("Из какой валюты: \n 1 - Рубль \n 2 - Доллар \n 3 - Евро \n 4 - Фунт");

int choice = int.Parse(Console.ReadLine()); if (choice == 1)

{

Console.WriteLine("В какую валюту перевести: \n 1 - Доллар \n 2 - Евро

\n 3 - Фунт");

int choice2 = int.Parse(Console.ReadLine()); if (choice2 == 1) Rub.RubInDol(quantity);

if (choice2 == 2) Rub.RubInEuro(quantity); if (choice2 == 3) Rub.RubInPound(quantity);

}

if (choice == 2)

{

Console.WriteLine("В какую валюту перевести: \n 1 - Рубль \n 2 - Евро

\n 3 - Фунт");

int choice2 = int.Parse(Console.ReadLine()); if (choice2 == 1) Doll.DolInRub(quantity); if (choice2 == 2) Doll.DolInEuro(quantity); if (choice2 == 3) Doll.DolInPound(quantity);

}

if (choice == 3)

{

7

Console.WriteLine("В какую валюту перевести: \n 1 - Рубль \n 2 -

Доллар \n 3 - Фунт");

int choice2 = int.Parse(Console.ReadLine()); if (choice2 == 1) Euro.EuroInRub(quantity); if (choice2 == 2) Euro.EuroInDol(quantity); if (choice2 == 3) Euro.EuroInPound(quantity);

}

if (choice == 4)

{

Console.WriteLine("В какую валюту перевести: \n 1 - Рубль \n 2 -

Доллар \n 3 - Евро ");

int choice2 = int.Parse(Console.ReadLine()); if (choice2 == 1) Pound.PoundInRub(quantity); if (choice2 == 2) Pound.PoundInDol(quantity); if (choice2 == 3) Pound.PoundInEuro(quantity);

}

}

}

}

}

Рисунок 3.1 - Работа программы 1

Данная программа работает корректно, без каких-либо проблем.

8

5Заключение

Входе работы были получены навыки использования механизмов инкапсуляции,

наследования и полиморфизма.

В данном задании не получилось реализовать динамическое изменение курса валют, но остальные задания были выполнены корректно. Был создан абстрактный класс, были созданы классы валют, был создан класс «Кошелек», в котором был создан массив, содержащий объекты этих классов

9

Список использованной литературы

1. ГОСТ 19.701-90 (ИСО 5807-85) Единая система программной документации (ЕСПД).

Схемы алгоритмов, программ, данных и систем. Обозначения условные и правила выполнения.

2. Документация по C#. [Электронный ресурс]. – Режим доступа: https://docs.microsoft.com/ru-ru/dotnet/csharp (дата обращения: 15.02.2020)

3.Кнут Д.Э. Искусство программирования. – Т. 1: Основные алгоритмы. – 3-е изд.; пер. с

англ. – М.: ИД «Вильямс», 2016. – 720 с.

4.Харченко С.С. Основы программирования: учебно-методическое пособие. – Томск: В-

Спектр, 2020. – XX с.