Otchet Po 9 Lab [PDF]

1. Постановка задачи Часть 1. Реализовать (в отдельном файле) определение нового класса (закрытые атрибуты, свойства, ко

37 0 177KB

Report DMCA / Copyright

DOWNLOAD PDF FILE

Otchet Po 9 Lab [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

1. Постановка задачи Часть 1. Реализовать (в отдельном файле) определение нового класса (закрытые атрибуты, свойства, конструкторы, инициализация и вывод атрибутов). 2. Для демонстрации работы с объектами написать главную функцию, в которой создаются объекты класса и выводится информация, которая содержится в атрибутах. 3. Написать функцию, реализующую указанное в варианте действие. Рассмотреть два варианта: 1) статическую функцию; 1.

2) метод класса. В основной функции продемонстрировать работу функции. Используя статическую компоненту класса подсчитать количество созданных в программе объектов. Постановка для указанного варианта 4.

Часть 2. 1. Добавить к реализованному классу указанные в варианте перегруженные операции. 2. Написать демонстрационную программу, в которой создаются объекты пользовательских классов и выполняются указанные операции. Постановка для указанного варианта:

Часть 3 1. Реализовать класс (в отдельном файле), полем которого является одномерный массив из элементов заданного в варианте типа. Например, для класса Fraction нужно создать класс FractionArray следующим образом: class FractionArray { Fraction[] arr; int size; . . . . }

В классе реализовать  конструктор без параметров,  конструктор с параметрами, заполняющий элементы случайными значениями,  конструктор с параметрами, позволяющий заполнить массив элементами, заданными пользователем с клавиатуры,  индексатор (для доступа к элементам массива),  метод для просмотра элементов массива. 2. Написать демонстрационную программу, позволяющую создать массив разными способами и распечатать элементы массива. Подсчитать количество созданных объектов. 3. Выполнить указанное в варианте задание (если необходимо, перегрузить нужные для выполнения задачи операции или функции). Для указанного варианта:

2. Диаграмма классов

3. Код для реализации поставленной задачи namespace _9_лаба { class Program { static void Main(string[] args) { int menu = 0; Console.WriteLine("Выберите один из пунктов меню"); Console.WriteLine("1 - Работа с одним объектом Time"); Console.WriteLine("2 - Работа с массив объектов Time"); Console.WriteLine("0 - выход"); while (!(int.TryParse(Console.ReadLine(), out menu)&&(menu>=0)&&(menu= 0) && (podmenu 0))) { Console.WriteLine("Введите корректное кол-во минут"); } timeFirst = timeFirst.IncreaseMinutes(timeFirst, min); break; case 5: timeFirst++; break; case 6: timeFirst--; break; case 7: Console.WriteLine($"Явное приведение к типу Int: {(int)timeFirst}"); break; case 8: bool t = timeFirst; Console.WriteLine($"Неявное приведение к типу Bool: {t}"); break; case 9: Console.WriteLine("Введите кол-во минут, которое хотите добавить"); int amountOfMin; while(!(int.TryParse(Console.ReadLine(), out amountOfMin)&&(amountOfMin>0))) {

Console.WriteLine("Введите корректное кол-во минут"); } timeFirst += amountOfMin; break; case 10: Console.WriteLine("Введите кол-во минут, которое хотите добавить"); while (!(int.TryParse(Console.ReadLine(), out amountOfMin) && (amountOfMin > 0))) { Console.WriteLine("Введите корректное кол-во минут"); } timeFirst = amountOfMin + timeFirst; break; case 11: Console.WriteLine("Введите кол-во минут, которое хотите вычесть"); while (!(int.TryParse(Console.ReadLine(), out amountOfMin) && (amountOfMin > 0))) { Console.WriteLine("Введите корректное кол-во минут"); } timeFirst -= amountOfMin; break; case 12: Console.WriteLine("Введите кол-во минут, из которого хотите вычесть"); while (!(int.TryParse(Console.ReadLine(), out amountOfMin) && (amountOfMin > 0))) { Console.WriteLine("Введите корректное кол-во минут"); } timeFirst = amountOfMin - timeFirst; break; case 13: timeFirst.Show(); break; default: break; } Console.WriteLine("Выберите один из пунктов меню"); Console.WriteLine("1 - 1) часть Главная функция"); Console.WriteLine("2 - 1) часть кол-во созданных объектов"); Console.WriteLine("3 - 1) часть Добавление минут к объекту через статическую функцию"); Console.WriteLine("4 - 1) часть Добавление минут к объекту через метод класса"); Console.WriteLine("5 Console.WriteLine("6 Console.WriteLine("7 Console.WriteLine("8 Console.WriteLine("9

-

2) 2) 2) 2) 2)

часть часть часть часть часть

Добавление 1 минуты"); Убавление 1 минуты"); Явное приведение к типу Int"); Неявное приведение к типу Bool"); Бинарная операция сложения лево-

стороняя"); Console.WriteLine("10 - 2) часть Бинарная операция сложения правостороняя"); Console.WriteLine("11 - 2) часть Бинарная операция вычитания левостороняя"); Console.WriteLine("12 - 2) часть Бинарная операция вычитания правостороняя"); Console.WriteLine("13 - вывод атрибутов объекта"); Console.WriteLine("0 - назад"); while (!(int.TryParse(Console.ReadLine(), out podmenu) && (podmenu >= 0) && (podmenu = 0) && (podmenu = 0) && (podmenu1 = 0) && (podmenu1 = 0) && (podmenu1 = 0) && (podmenu1 = 0) && (podmenu = 0) && (menu 0))) { Console.WriteLine("Введите корректное кол-во объектов"); } Time[] arr = new Time[amountOfObjects]; for (int i = 0; i < arr.Length; i++) { arr[i] = new Time(); arr[i].CorrectHours(); arr[i].CorrectMinutes(); } for(int i =0;i 0))) { Console.WriteLine("Введите корректный размер массива"); } return size; } } }

4. Тесты для функции namespace _9_лаба { [TestClass] public class TimeTest { [TestMethod] public void IncreaseMinutes_15plus10_25returned() { // arrange int minutes = 10; int expected = 25; // act Time t = new Time { Hours = 0, Minutes = 15 }; int actual = t.IncreaseMinutes(t, 10).Minutes; // assert Assert.AreEqual(expected, actual); } [TestMethod] public void OperatorPlusPlus_59plus01_00returned() { // arrange int expected = 0; // act Time t = new Time { Hours=5, Minutes = 59 }; t++; // assert Assert.AreEqual(t.Minutes, expected); } [TestMethod] public void OperatorMinusMInus_00minus01_59returned() { // arrange int expected = 59; // act Time t = new Time { Hours = 5, Minutes = 0 }; t--; // assert Assert.AreEqual(t.Minutes, expected); } [TestMethod] public void ShowTime_1() {

Time t = new Time(36, 34); System.Diagnostics.Debug.WriteLine("Test Show_1"); t.Show(); } [TestMethod] public void ShowTime_2() { Time t = new Time(36, 5); System.Diagnostics.Debug.WriteLine("Test Show_2"); t.Show(); } [TestMethod] public void ShowTime_3() { Time t = new Time(6, 34); System.Diagnostics.Debug.WriteLine("Test Show_3"); t.Show(); } [TestMethod] public void ShowTime_4() { Time t = new Time(6, 4); System.Diagnostics.Debug.WriteLine("Test Show_4"); t.Show(); } [TestMethod] public void OperatorPlus_10plus34_44returned_v1() { // arrange int minutes = 34; int expected = 44; // act Time t = new Time(0, 10); t += minutes; // assert Assert.AreEqual(t.Minutes, expected); } [TestMethod] public void OperatorPlus_10plus34_44returned_v2() { // arrange int minutes = 34; int expected = 44; // act Time t = new Time(0, 10); t = minutes + t; // assert Assert.AreEqual(t.Minutes, expected); } [TestMethod] public void OperatorMinus_44minus14_30returned_v1() { // arrange int minutes = 14; int expected = 30; // act Time t = new Time(0, 44); t -= minutes; // assert Assert.AreEqual(t.Minutes, expected); } [TestMethod] public void OperatorMinus_44minus14_30returned_v2() { // arrange int minutes = 44; int expected = 30; // act Time t = new Time(0, 14); t = minutes - t; // assert Assert.AreEqual(t.Minutes, expected); } [TestMethod] public void OperatorBool() { // arrange bool b; // act Time t = new Time(4, 23); b = t; // assert Assert.IsFalse(b); } [TestMethod] public void OperatorInt() {

// arrange int hour = 4; // act Time t = new Time(4, 35); // assert Assert.AreEqual((int)t, hour); } } }

Тестирование покрыло лишь 25% кода, в связи с тем, что большая часть кода это меню из Main(), также протестировать вывод данных через юнит тесты нельзя.