Фомин Л.А. - ООП -Контрольная работа. - 4170362005 (1). Контрольная работа по дисциплине объектноориентированное программирование Вариант 5 студент 2 курса
Скачать 116.53 Kb.
|
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ Белорусский национальный технический университет Международный институт дистанционного образования Контрольная работа по дисциплине «ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ» Вариант №5 Выполнил: студент 2 курса, группы 41703620 № зачетной книжки 4170362005 Фомин Л.А. Проверил: Преподаватель Радкевич Андрей Сергеевич Минск 2022
БНТУ.Тир.1000.Зак.298.2019 Содержание Задание 1………….. ………...…………………………………...…………………….………...6 Задание 2………………………………………………………………………………………….8 Контрольная работа Задание 1: Создать абстрактный класс Number c виртуальными методами, реализующими арифметические операции. На его основе реализовать классы Integer и Real. Создать класс Series (набор), содержащий параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла. Исходный код: using System; using System.IO; namespace ConsoleApplication { internal class Program { private static void Main() { var series = new Series series[0] = new Real(2.66); series[1] = new Real(2.55); series[2] = new Real(2.77); series.SortASC(); for (var i = 0; i < series.Length; i++) Console.WriteLine(series[i]); series.SortDesc(); for (var i = 0; i < series.Length; i++) Console.WriteLine(series[i]); String pathReal = "C:/OUT/Real.txt"; series.FileSave(series, pathReal); series.FileRead(pathReal); var series1 = new Series series1[0] = new Integer(2); series1[1] = new Integer(1); series1[2] = new Integer(3); series1.SortASC(); for (var i = 0; i < series1.Length; i++) Console.WriteLine(series1[i]); series1.SortDesc(); for (var i = 0; i < series1.Length; i++) Console.WriteLine(series1[i]); String pathInteger = "C:/OUT/Integer.txt"; series1.FileSave(series1, pathInteger); series1.FileRead(pathInteger); Real real1 = new Real(1.05); real1.Sum(new Real(3.55)); Console.WriteLine(real1.Sum(new Real(3.55))); Real real2 = new Real(1.01); real2.Sub(new Real(3.55)); Console.WriteLine(real2.Sub(new Real(3.55))); Real real3 = new Real(1.01); real3.Mul(new Real(3.55)); Console.WriteLine(real3.Mul(new Real(3.55))); Real real4 = new Real(1.01); real4.Div(new Real(3.55)); Console.WriteLine(real4.Div(new Real(3.55))); Integer integer1 = new Integer(1); integer1.Sum(new Integer(3)); Console.WriteLine(integer1.Sum(new Integer(3))); Integer integer2 = new Integer(1); integer2.Sub(new Integer(3)); Console.WriteLine(integer2.Sub(new Integer(3))); Integer integer3 = new Integer(1); integer3.Mul(new Integer(3)); Console.WriteLine(integer3.Mul(new Integer(3))); Integer integer4 = new Integer(1); integer4.Div(new Integer(3)); Console.WriteLine(integer4.Div(new Integer(3))); } public class Series where T : class, IComparable { private T[] array; public Series(int size) { array = new T[size]; } public int Length { get { return array.Length; } } public void SortASC() { Sort((x, y) => x.CompareTo(y) > 0); } public void Sort(IComparer { Sort((x, y) => comparer.Compare(x, y) > 0); } public void SortDesc() { Sort((x, y) => x.CompareTo(y) < 0); } protected void Sort(Func { for (var i = 0; i < Length - 1; i++) for (var j = i + 1; j < Length; j++) if (func(array[i], array[j])) { var temp = array[i]; array[i] = array[j]; array[j] = temp; } } public T this[int index] { get { return array[index]; } set { array[index] = value; } } public void FileSave(Series { StreamWriter f = new StreamWriter(path); for (var i = 0; i < series.Length; i++) { f.WriteLine(series[i]); } f.Close(); } public void FileRead(String path) { StreamReader fs = new StreamReader(path); while (true) { string temp = fs.ReadLine(); if (temp == null) break; String text = ""; text += temp; Console.WriteLine(temp); } } } public class Real : Number { public Real(double value = 0) { Value = value; } public override Number { return new Real(Value + other.Value); } public override Number { return new Real(Value - other.Value); } public override Number { return new Real(Value * other.Value); } public override Number { return new Real(Value / other.Value); } } public class Integer : Number { public Integer(int value = 0) { Value = value; } public override Number { return new Integer(Value + other.Value); } public override Number { return new Integer(Value - other.Value); } public override Number { return new Integer(Value * other.Value); } public override Number { return new Integer(Value / other.Value); } } public abstract class Number where T : struct, IComparable { public T Value { get; protected set; } public abstract Number public abstract Number public abstract Number public abstract Number public int CompareTo(Number { return Value.CompareTo(other.Value); } public override string ToString() { return Value.ToString(); } } } } Скриншот_:__Задание_2'>Скриншот: Задание 2: Класс "Автомобиль". Поля – марка, модель, дата выпуска, объем двигателя, цвет (перечисление). Создать метод, сохраняющий всю информацию в отдельный текстовый файл. Имя файла и каталог – параметры метода. Разработать для своего класса метод, который выводит на экран всю информацию о классе и о подключенных интерфейсах вместе с их Hash-кодами. Исходный код: using System; using System.IO; namespace ConsoleApplication { class Program { static void Main(string[] args) { Car car = new Car(); car.Save("C:/OUT", "C:/OUT/MYCARINFO1.txt"); car.Show(car); } } class Car { public string brand = "SKODA"; public string model = "RAPID"; public string releaseDate = "19.25.2015"; public double engine = 1.6; public string color = "WHITE"; public void Save(string directory, string text) { DirectoryInfo k = new DirectoryInfo(directory); k.Create(); StreamWriter stream = new StreamWriter(text); stream.Write("{0} {1} {2} {3} {4}", brand, model, releaseDate, engine, color); stream.Close(); } public void Show(Car car) { Console.WriteLine("Класс Car состоит из полей:\n" + "brand c HashCode = " + car.brand.GetHashCode()); Console.WriteLine("model c HashCode = " + car.model.GetHashCode()); Console.WriteLine("releaseDate c HashCode = " + car.releaseDate.GetHashCode()); Console.WriteLine("engine c HashCode = " + car.engine.GetHashCode()); Console.WriteLine("color c HashCode = " + car.color.GetHashCode()); } } } Скриншот: |