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