Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаба 6.docx
Скачиваний:
1
Добавлен:
15.03.2025
Размер:
132.77 Кб
Скачать

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

«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР) Кафедра комплексной информационной безопасности электронно-вычислительных систем (КИБЭВС)

Объектно-ориентированное программирование (ООП)

Отчет по лабораторной работе №6

по дисциплине «Языки программирования»

Студент гр. 723-1

________

__.__.2025

Руководитель

младший научный сотрудник

_______ А.В. Куртукова

__.__.2025

Введение

Цель работы:

Изучение различных видов исключительных ситуаций и методов их

обработки.

Задание:

  1. Ознакомиться с основными концепциями объектноориентированного анализа и проектирования.

  2. Изучить основные приемы объектно-ориентированного программирования, разобраться в технологии их реализации для выбранного языка и среды программирования.

  3. Выбрать предметную область в соответствии с вариантом, составить для неё модель проектирования и модель предметной области, используя UML. 21

  4. Реализовать в программе операции бизнес-логики, соответствующие предметной области варианта задания, с применением наследования и полиморфизма:

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

    2. Разработать производный класс, осуществив его наследование от разработанного абстрактного класса, с реализацией всех чисто виртуальных функций.

    3. В каждом варианте помимо представленных методов, необходимо определить один дополнительный метод для класса самостоятельно.

  5. Написать отчет и защитить у преподавателя.

Ход работы

Для данной работы, необходимо было реализовать программу с помощью ООП, одной из составляющих задания является UML-диаграмма (рисунок 1.1).

Рисунок 1.1 - UML-диаграмма

Заключение

В результате работы были получены знания об объектно-ориентированном программировании и его основных концепциях, а также навыки для построения модели предметной области и элементов модели проектирования.

Приложение а

(обязательное)

Листинг программы

using System.Collections.Generic;

using System;

using System.Xml;

using System.Linq.Expressions;

public abstract class TrendAnalyzer : IAnalysisOptions

{

public abstract void AnalyzeTrends();

public void DisplayData(List<string> data)

{

foreach (var item in data)

{

Console.WriteLine(item);

}

}

public void ShowAnalysisOptions()

{

Console.WriteLine("Пожалуйста, выберите тип анализа:");

Console.WriteLine("1. Циклический анализ");

Console.WriteLine("2. Линейный анализ");

Console.WriteLine("3. Сетевой анализ");

}

//полиморфизм

public void RunAnalysis()

{

ShowAnalysisOptions();

int analysisChoice = Convert.ToInt32(Console.ReadLine());

TrendAnalyzer analyzer;

if (analysisChoice == 1)

{

analyzer = new CyclicalTrendAnalyzer();

}

else if (analysisChoice == 2)

{

analyzer = new LinearTrendAnalyzer();

}

else if (analysisChoice == 3)

{

analyzer = new NetworkTrendAnalyzer();

}

else

{

Console.WriteLine("Неверный выбор. Выход из программы.");

Console.ReadLine();

return;

}

Console.WriteLine();

analyzer.AnalyzeTrends();

Console.WriteLine();

}

public void EndMessage()

{

throw new NotImplementedException();

}

}

public abstract class ChangePredictor : IAnalysisOptions

{

public abstract void PredictChanges();

public void DisplayData(List<string> data)

{

foreach (var item in data)

{

Console.WriteLine(item);

}

}

public void ShowAnalysisOptions()

{

Console.WriteLine("Пожалуйста, выберите тип анализа:");

Console.WriteLine("1. Циклический прогноз");

Console.WriteLine("2. Линейный прогноз");

Console.WriteLine("3. Сетевой прогноз");

}

public void RunPrediction()

{

ShowAnalysisOptions();

int predictionChoice = Convert.ToInt32(Console.ReadLine());

ChangePredictor predictor;

if (predictionChoice == 1)

{

predictor = new CyclicalChangePredictor();

}

else if (predictionChoice == 2)

{

predictor = new LinearChangePredictor();

}

else if (predictionChoice == 3)

{

predictor = new NetworkChangePredictor();

}

else

{

Console.WriteLine("Неверный выбор. Выход из программы.");

Console.ReadLine();

return;

}

Console.WriteLine();

predictor.PredictChanges();

Console.WriteLine();

}

public void EndMessage()

{

throw new NotImplementedException();

}

}

public class CyclicalTrendAnalyzer : TrendAnalyzer

{

public override void AnalyzeTrends()

{

List<string> trends = new List<string> { "Циклическая социологическая динамика — это повторяющийся процесс изменений в обществе. Она характеризуется периодическими колебаниями или циклами, которые могут быть связаны с экономическими, политическими или культурными факторами. Например, это может быть чередование периодов экономического подъема и спада или смена политических режимов.\r\n" };

Console.WriteLine("Анализ текущих трендов циклической динамики:");

DisplayData(trends);

}

}

public class LinearTrendAnalyzer : TrendAnalyzer

{

public override void AnalyzeTrends()

{

List<string> trends = new List<string> { "Линейная социологическая динамика предполагает постепенное, последовательное развитие общества.Эта динамика характеризуется изменениями и сдвигами, происходящими линейно во времени.Например, это может быть постепенное развитие технологий или изменение социальных норм с течением времени. "};

Console.WriteLine("Анализ текущих трендов линейной динамики:");

DisplayData(trends);

}

}

public class NetworkTrendAnalyzer : TrendAnalyzer

{

public override void AnalyzeTrends()

{

List<string> trends = new List<string> { "Сетевая социологическая динамика основана на концепции ризомы — сети, состоящей из взаимосвязанных элементов без иерархической структуры. Такая динамика характеризуется нелинейными и неоднородными изменениями, где влияние одного элемента может распространяться по всей сети. Например, это может быть распространение идеи или тренда через социальные сети или формирование городской субкультуры." };

Console.WriteLine("Анализ текущих сетевых трендов.:");

DisplayData(trends);

}

}

public class CyclicalChangePredictor : ChangePredictor

{

public override void PredictChanges()

{

List<string> predictions = new List<string> { "В ближайшем будущем ожидается изменение экономической ситуации, сопровождающееся периодом снижения инвестиций и роста безработицы. Однако после этого периода начнется новый этап экономического развития и роста." };

Console.WriteLine("Прогноз для циклической динамики.:");

DisplayData(predictions);

}

}

public class LinearChangePredictor : ChangePredictor

{

public override void PredictChanges()

{

List<string> predictions = new List<string> { "В ближайшие несколько лет будет наблюдаться устойчивый технологический прогресс, внедрение новых инноваций и модернизация производственных процессов. Это приведет к повышению эффективности и качества жизни в обществе." };

Console.WriteLine("Прогноз для линейной динамики.:");

DisplayData(predictions);

}

}

public class NetworkChangePredictor : ChangePredictor

{

public override void PredictChanges()

{

List<string> predictions = new List<string> { "В ближайшем будущем сетевое взаимодействие между людьми будет продолжать набирать обороты, что приведет к усилению влияния социальных сетей на формирование общественного мнения и поведения. Этот процесс будет усиливаться и оказывать всё большее воздействие на различные сферы жизни людей, включая политику и экономику." };

Console.WriteLine("Прогноз для сетевой динамики:");

DisplayData(predictions);

}

}

class Program

{

static void Main()

{

var socialAnalyst = new SocialAnalyst(); // Переименовано для ясности

socialAnalyst.ShowAnalysisOptions();

socialAnalyst.RunAnalysis();

}

}

interface IAnalysisOptions

{

public void ShowAnalysisOptions();

void EndMessage();

}

interface IAnalyzer

{

public void RunAnalysis();

void EndMessage();

}

public abstract class AnalysisBase

{

public void EndMessage()

{

Console.WriteLine("Конец:");

}

}

public class SocialAnalyst : AnalysisBase, IAnalysisOptions, IAnalyzer

{

public void ShowAnalysisOptions()

{

Console.WriteLine("Выберете:");

Console.WriteLine("1. Социальный анализ");

Console.WriteLine("2. Социальный прогноз");

}

public void RunAnalysis()

{

int analysisChoice = Convert.ToInt32(Console.ReadLine());

TrendAnalyzer analyzer;

ChangePredictor analysis2;

if (analysisChoice == 1)

{

analyzer = new CyclicalTrendAnalyzer();

analyzer.RunAnalysis();

}

else if (analysisChoice == 2)

{

analysis2 = new CyclicalChangePredictor();

analysis2.RunPrediction();

}

else

{

Console.WriteLine("Неверный выбор. Завершение программы.");

Console.ReadLine();

return;

}

EndMessage();

}

public new void EndMessage()

{

Console.WriteLine("Конец.");

}

}

Томск 2025

Соседние файлы в предмете Языки программирования