Лаб 7 - Валюта - СФ
.pdfМинистерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего
образования ТОМСКИЙ ГОСУДАРСТВЕЕНЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И
РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра комплексной информационной безопасности электронно-вычислительных систем (КИБЭВС)
Полиморфизм
Лабораторная работа №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 с.