Переопределение операций

Автор работы: Пользователь скрыл имя, 29 Апреля 2013 в 10:32, лабораторная работа

Краткое описание

Задание. В программах требуется описать базовый класс (возможно, абстрактный), в котором с помощью виртуальных методов ИЛИ И абстрактных свойств задается интерфейс ДЛЯ производных классов. Целью лабораторной работы является максимальное использование наследования, даже если для конкретной задачи оно не дает выигрыша в объеме программы. Во всех классах следует переопределить метод Equals, чтобы обеспечить сравнение значений.
Функция Главный должна содержать массив из элементов базового класса, заполненный ссылками на производные классы. В этой функции должно демонстрироваться использование всех разработанных элементов классов.

Прикрепленные файлы: 1 файл

C#. Переопределение операций.doc

— 127.50 Кб (Скачать документ)

Задание

В программах требуется описать  базовый класс (возможно, абстрактный), в котором с помощью виртуальных  или абстрактных методов и  свойств задается интерфейс для  производных классов. Целью лабораторной работы является максимальное использование  наследования, даже если для конкретной задачи оно не дает выигрыша в объеме программы. Во всех классах следует переопределить метод Equals, чтобы обеспечить сравнение значений.

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

    • Создать абстрактный класс Pair (пара значений) с арифметическими операциями и методом вывода на экран. На его основе реализовать классы Money (деньги) и Complex (комплексное число).
    • В классе Money денежная сумма представляется в виде двух целых, в которых хранятся рубли и копейки соответственно. При выводе части числа снабжаются словами "руб." и "коп.". В классе Complex предусмотреть при выводе символ мнимой части (i).
    • В классе Program создать массив (или список) объектов этих классов. Предусмотреть возможность вывода информации обо всех объектах массива. Разбить исходный массив на два массива, в которых будут храниться однотипные элементы. Написать программу, в которой будут использоваться все методы классов.

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

    • Написать демонстрационную программу, в которой будут использоваться все методы классов.

 

 

 

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

//Основной  код

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace Lab2

{

 

    class Program

    {

 

        static Pair[] series;

 

        public static void Task1()

        {

            Console.WriteLine("======== Денежные операции ========");

            Console.WriteLine("Выберите пункт:");

            Console.WriteLine("1 - для сложения");

           Console.WriteLine("2 - для произведения");

            Console.WriteLine("3 - для вывода");

            Console.WriteLine("4 - для сравнения на равенство");

            Console.WriteLine("5 - для расширенного сравнения");

            string s1 = Console.ReadLine();

            switch (s1)

            {

                case "1":

                    {

                        Console.WriteLine("Вводите первую деньгу: ");

                        int boof11 = Int32.Parse(Console.ReadLine());

                        int boof12 = Int32.Parse(Console.ReadLine());

                        Money money1 = new Money(boof11, boof12);

                        Console.WriteLine("Вводите вторую деньгу: ");

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

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

                        Money money2 = new Money(boof21, boof22);

                        Money moneyResult = money1 + money2;

                        Console.WriteLine(moneyResult.OutPut());

                        Console.ReadLine();

                    } break;

                case "2":

                    {

                        Console.WriteLine("Вводите первую деньгу: ");

                        int boof11 = Int32.Parse(Console.ReadLine());

                        int boof12 = Int32.Parse(Console.ReadLine());

                        Money money1 = new Money(boof11, boof12);

                       Console.WriteLine("Вводите вторую деньгу: ");

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

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

                        Money money2 = new Money(boof21, boof22);

                        Money moneyResult = money1 * money2;

                        Console.WriteLine(moneyResult.OutPut());

                        Console.ReadLine();

                    } break;

                case "3":

                    {

                        Console.WriteLine("Вводите первую деньгу: ");

                        int boof11 = Int32.Parse(Console.ReadLine());

                        int boof12 = Int32.Parse(Console.ReadLine());

                        Money money1 = new Money(boof11, boof12);

                       Console.WriteLine("Вводите вторую деньгу: ");

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

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

                        Money money2 = new Money(boof21, boof22);

                        Console.WriteLine("Деньга 1:" + money1.OutPut());

                        Console.WriteLine("Деньга 2:" + money2.OutPut());

                    } break;

                case "4":

                    {

                        Console.WriteLine("Вводите первое число: ");

                        int boof11 = Int32.Parse(Console.ReadLine());

                        int boof12 = Int32.Parse(Console.ReadLine());

                        Money money1 = new Money(boof11, boof12);

                        Console.WriteLine("Вводите второе число: ");

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

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

                        Money money2 = new Money(boof21, boof22);

                        if (money1.Equals(money2) == true)

                            Console.WriteLine("Равны");

                        else

                            Console.WriteLine("Не равны");

                    } break;

                case "5":

                    {

                        Console.WriteLine("Вводите первое число: ");

                        int boof11 = Int32.Parse(Console.ReadLine());

                        int boof12 = Int32.Parse(Console.ReadLine());

                        Money money1 = new Money(boof11, boof12);

                        Console.WriteLine("Вводите второе число: ");

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

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

                        Money money2 = new Money(boof21, boof22);

                        switch (money1.CompareTo(money2))

                        {

                            case (0):

                                {

                                    Console.WriteLine("Равны");

                                } break;

                            case (1):

                                {

                                    Console.WriteLine("Первое больше второго");

                                } break;

                            case (-1):

                                {

                                    Console.WriteLine("Второе больше первого");

                                } break;

                        }

                    } break;

            }

            Console.WriteLine("Нажмите ENTER для продолжения");

            Console.ReadLine();

           

        }

        public static void Task2()

        {

            Console.WriteLine("======== Операции с комплексными числами ========");

            Console.WriteLine("Выберите пункт:");

            Console.WriteLine("1 - для сложения");

            Console.WriteLine("2 - для произведения");

            Console.WriteLine("3 - для вывода");

            Console.WriteLine("4 - для проверки на равенство");

            Console.WriteLine("4 - для расширенного сложения");

            string s1 = Console.ReadLine();

            switch (s1)

            {

                case "1":

                    {

                        Console.WriteLine("Вводите первое число: ");

                        Console.WriteLine("Вводите действительную часть первого числа: ");

                        int boof11 = Int32.Parse(Console.ReadLine());

                        Console.WriteLine("Вводите мнимую часть первого числа: ");

                        int boof12 = Int32.Parse(Console.ReadLine());

                        Complex complex1 = new Complex(boof11, boof12);

                        Console.WriteLine("Вводите второе число: ");

                        Console.WriteLine("Вводите действительную часть второго числа: ");

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

                        Console.WriteLine("Вводите мнимую часть второго числа: ");

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

                        Complex complex2 = new Complex(boof21, boof22);

                        Console.WriteLine((complex1 + complex2).OutPut());

                        Console.ReadLine();

                    } break;

                case "2":

                    {

                        Console.WriteLine("Вводите первое число: ");

                        Console.WriteLine("Вводите действительную часть первого числа: ");

                        int boof11 = Int32.Parse(Console.ReadLine());

                        Console.WriteLine("Вводите мнимую часть первого числа: ");

                        int boof12 = Int32.Parse(Console.ReadLine());

                        Complex complex1 = new Complex(boof11, boof12);

                        Console.WriteLine("Вводите второе число: ");

                        Console.WriteLine("Вводите действительную часть второго числа: ");

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

                        Console.WriteLine("Вводите мнимую часть второго числа: ");

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

                        Complex complex2 = new Complex(boof21, boof22);

                        Console.WriteLine((complex1 * complex2).OutPut());

                        Console.ReadLine();

                    } break;

                case "3":

                    {

                        Console.WriteLine("Вводите первое число: ");

                        Console.WriteLine("Вводите действительную часть первого числа: ");

                        int boof11 = Int32.Parse(Console.ReadLine());

                        Console.WriteLine("Вводите мнимую часть первого числа: ");

                        int boof12 = Int32.Parse(Console.ReadLine());

                        Complex complex1 = new Complex(boof11, boof12);

                        Console.WriteLine("Вводите второе число: ");

                        Console.WriteLine("Вводите действительную часть второго числа: ");

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

                        Console.WriteLine("Вводите мнимую часть второго числа: ");

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

                        Complex complex2 = new Complex(boof21, boof22);

                        Console.WriteLine("Число 1:" + complex1.OutPut());

                        Console.WriteLine("Число 2:" + complex2.OutPut());

                    } break;

                case "4":

                    {

                        Console.WriteLine("Вводите первое число: ");

                        Console.WriteLine("Вводите действительную часть первого числа: ");

                        int boof11 = Int32.Parse(Console.ReadLine());

                        Console.WriteLine("Вводите мнимую часть первого числа: ");

                        int boof12 = Int32.Parse(Console.ReadLine());

                        Complex complex1 = new Complex(boof11, boof12);

                        Console.WriteLine("Вводите второе число: ");

                        Console.WriteLine("Вводите действительную часть второго числа: ");

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

                        Console.WriteLine("Вводите мнимую часть второго числа: ");

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

                        Complex complex2 = new Complex(boof21, boof22);

                        if (Complex.Equals(complex1, complex2) == true)

                            Console.WriteLine("Равны");

                        else

                            Console.WriteLine("Не равны");

                    } break;

                case "5":

                    {

                        Console.WriteLine("Вводите первое число: ");

                        Console.WriteLine("Вводите действительную часть первого числа: ");

                        int boof11 = Int32.Parse(Console.ReadLine());

                        Console.WriteLine("Вводите мнимую часть первого числа: ");

                        int boof12 = Int32.Parse(Console.ReadLine());

                        Complex complex1 = new Complex(boof11, boof12);

                        Console.WriteLine("Вводите второе число: ");

                        Console.WriteLine("Вводите действительную часть второго числа: ");

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

                        Console.WriteLine("Вводите мнимую часть второго числа: ");

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

                        Complex complex2 = new Complex(boof21, boof22);

                        switch (complex1.CompareTo(complex2))

                        {

                            case (0):

                                {

                                    Console.WriteLine("Равны");

                                } break;

                            case (1):

                                {

                                    Console.WriteLine("Первое больше второго");

                                } break;

                            case (-1):

                                {

                                    Console.WriteLine("Второе больше первого");

                                } break;

                        }

                    } break;

            }

        }

        public static void Task3()

        {

            Console.WriteLine("===== Выбрана работа с массивом пар =====");

            Console.WriteLine("Введите длину массива");

Информация о работе Переопределение операций