
laba6
.pdf
Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования
«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР)
Кафедра безопасности информационных систем (БИС)
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАМИРОВАНИЕ
Отчет по лабораторной работе №6 по дисциплине «Языки программирования»
Выполнил:
Студент гр. 730-2
____Подойницын К.В.
23.04.2022
Принял:
Преподаватель кафедры КИБЭВС
Полюга В.А. 23.04.2022
Томск 2022
2
1 Введение Цель работы: знакомство с основными концепциями и приемами
объектно-ориентированного анализа и проектирования, выработка практических навыков в построении модели предметной области и элементов модели проектирования.

3
2 Ход работы
В данной лабораторной работе производится изучение основы ООП и реализация основных методов. В качестве языка программирования был выбран
C#.
2.1 Модель предметной области и модель проектирования
Модель предметной области – описание объектов задачи, такое как если бы мы и не собирались писать никакую программу. На модели предметной области приводятся типы объектов, их атрибуты, связи между объектами разных типов.
Модель проектирования – это описание объектов системы,
приближенное к реализации в выбранной среде программирования (на конкретном языке программирования) с учетом применяемых технологий
(например, базы данных)
UML диаграмма предметной области представлена на рисунке 2.1
Рисунок 2.1 – UML диаграмма ПО

4
2.2 Наследование и абстрактный класс
Наследование – это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым или родительским. Новый класс – потомком, наследником или производным классом.
Абстрактный класс – это класс, который не может иметь экземпляров. В
них присутствуют функции члены, которые объявлены, но не определены. Эти функции определяются в наследниках, которые уточняют данную абстракцию.
На рисунке 2.2.1 приведён результат работы с абстрактным классом.
Рисунок 2.2.1 – Абстрактный класс На рисунке 2.2.2 представлено наследование
Рисунок 2.2.2 – Наследование
2.3 Полиморфизм Полиморфизм – это свойство системы использовать объекты с
одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
На рисунке 2.3.1 представлен фрагмент кода демонстрирующий полиморфизм.
Рисунок 2.3.1 – Фрагмент кода, демонстрирующий полиморфизм

5
Результат работы программы представлен на рисунке 2.3.2.
Рисунок 2.3.2 – Результат работы программы
2.4 Инкапсуляция
Инкапсуляция – это свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе и скрыть детали реализации от пользователя.
Инкапсуляция представлена на рисунке 2.4
Рисунок 2.4 – Инкапсуляция
6
Заключение
В ходе лабораторной работы были изучены основные концепции и приемы объектно-ориентированного анализа и проектирования, реализованы абстрактный класс, принципы наследования и полиморфизма, а также построена
UML-диаграмма.
7
Приложение А
(Обязательное)
using System;
namespace laba6_YAP
{
class Program
{
static void Main(string[] args)
{
Scytale S = new Scytale(); Console.Write("Введите текст сообщения: "); var m = Console.ReadLine(); Console.Write("Введите диаметр: ");
var d = Convert.ToInt32(Console.ReadLine()); var encText = S.ScytaleE(m, d);
Console.WriteLine("Зашифрованный текст: {0}", encText); S.End();
Console.ReadLine();
}
}
abstract class Base // создание абстрактного класса
{
protected string text; protected int d;
public abstract string ScytaleE(string text, int d);
}
class Scytale : Base // наследование
{
public override string ScytaleE(string text, int d) // полиморфизм
{
var k = text.Length % d; if (k > 0)
{
//дополняем строку пробелами text += new string(' ', d - k);
}
var c = text.Length / d; string result = "";
for (int i = 0; i < c; i++) // строка
{
for (int j = 0; j < d; j++) // столбец
{
result += text[i + c * j].ToString();
}
}
return result;
}
private string result; // инкапсуляция public string get()
{
return result;
}
public void set()
{
Console.WriteLine("Изменение сообщения: "); string result = Console.ReadLine();
}
public void End()
{
set();
}
}
}