Перейти к основному содержанию
EDU-MMCS
Вы используете гостевой доступ (Вход)

Язык программирования C#

  1. В начало
  2. Курсы
  3. Весенний семестр
  4. Магистратура
  5. Язык программирования C#
  6. Объектно-ориентированное программирование
  7. Лабораторная работа №9. Классы и объекты

Лабораторная работа №9. Классы и объекты

Требуемые условия завершения
Открыто с: четверг, 11 апреля 2019, 11:55
Срок сдачи: четверг, 11 апреля 2019, 13:30
Классы в C# Модификаторы доступа Конструкторы

В данном проекте требуется разработать программу, ведущую учёт заказов в магазине.

  1. Каждый класс помещаются в отдельном файле и должны иметь открытые (public) методы печати с заголовком

    public override string ToString()

    Слово override требуется для того, чтобы объект класса можно было печать с помощью обычных Write и WriteLine. В реализации следует печатать информацию о всех полях.

    Не забывайте о комментариях.

  2. [1.5 балла] Реализацию проекта следует начать с класса Customer (Покупатель) с тремя атрибутами: имя (string), адрес (string), скидка (double). Атрибуты реализуются свойствами (property), которые соответствуют закрытым (private) полям. 

    Замечание. Описание свойств можно посмотреть по ссылке. Если в свойстве не требуется дополнительных проверок или действий, а реализуется только свойство на чтение, можно воспользоваться автоматическими свойствами.

    Конструкторы указанных классов должны инициализировать значения всех полей из своих параметров. Они должны быть открытыми (public). В конструкторе класса Customer следует реализовать проверку двух условий: имя - не пустая строка и скидка принадлежит отрезку [0,1]. Для проверки используем или Debug.Assert или бросаем исключение типа ArgumentOutOfRangeException (для имени - ArgumentException)

    В основной программе должны создаваться несколько объектов каждого класса (параметры конструкторов могут задаваться непосредственно в коде, без взаимодействия с пользователем).

  3. Определите класс Product (Товар). Для них потребуется определить закрытые (private) поля, соответствующие названию (string) и цене (decimal), и соответствующие им открытые (public) свойства на чтение.

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

  4. [2.5 балла] Создать класс ProductDatabase (база данных товаров), хранящий ассоциативный массив («словарь») с информацией о товарах, доступ к которым осуществляется по строковому коду (строки вида ‘X634’): Dictionary<string, Product>.

    В конструкторе класса должен создаваться пустой словарь.

    В классе должен присутствовать метод добавления товара:

    public void AddProduct(Product product)

    Он должен генерировать случайную строку-ключ вида X123 и добавлять по этому ключу данный продукт в словарь. Генерировать случайную строку следует в цикле до тех пор, пока не получится строка, отсутствующая в словаре. Случайную латинскую букву можно получать, к примеру, так:

    var c = (char)((int)'A' + random.Next(26));

    Заполнение словаря следует выполнять непосредственно в коде основной программы.
    Добавить перегрузку метода

    public void AddProduct(IEnumerable<Product> products)
    продемонстрировать использование

  5. [3 балла] Определить класс OrderLine с  полями количество (int) и продукт (Product), свойствами на чтения для них, конструктором для инициализации полей и методом ToString. Добавьте открытый метод TotalPrice(decimal discount), который возвращает стоимость товара с учётом скидки.

    Создать и распечатать в коде основной программы несколько объектов класса OrderLine.

  6. [3.5 балла] Определить класс Order с полями номер заказа (int), клиент (Customer), скидка (decimal), общая стоимость (decimal) и строки заказа (List<OrderLIne>). Определить конструктор, который принимает номер заказа и объект класса Customer. Добавить метод AddOrderLine(Product product, int quantity)

  7. [4 балла] Реализовать следующую логику основной программы:
    1. Создаётся и заполняется база данных товаров (ассоциативный массив).
    2. В консоли вводятся данные по конкретному покупателю, создаётся соответствующий объект.
    3. Создаётся заказ для введённого ранее покупателя с номером 10001. Устанавливается скидка на заказ в соответствии со скидкой покупателя.
    4. В цикле формируются необходимое количество строк заказа: вводятся коды товаров и количества их единиц.
    5. Полная информация о заказе сохраняется в файле с заданным именем (метод Print).

◄ Домашнее задание №7.
Домашнее задание №8 ►
Пропустить Навигация
Навигация
  • В начало

    • Страницы сайта

      • Мои курсы

      • Теги

    • Мои курсы

    • Курсы

      • Весенний семестр

        • Прикладная математика и информатика

        • Фундаментальная информатика и ИТ

        • Математика, механика

        • Педагогическое образование

        • Магистратура

          • Разработка мобильных приложений и компьютерных игр

          • Научные вычисления - 2025

          • ИАБолДанн

          • История инф

          • Data Scince и АД

          • МО (маг ИИ)

          • NLP

          • M1. Artificial Intelligence

          • CSm2Research

          • Мат. модели в МСС

          • НИС

          • Свертки

          • Язык программирования C#

            • Общее

            • Основы языка C#

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

              • ЗаданиеЛабораторная работа №9. Классы и объекты

              • ЗаданиеДомашнее задание №8

              • ЗаданиеЛабораторная работа №10

              • ЗаданиеДомашнее задание №9. Интерфейсы, сортировка с комп...

              • ЗаданиеЛабораторная работа №11. Наследование, виртуальные...

              • ЗаданиеДомашнее задание № 10. Крестики-нолики

              • ЗаданиеЛабораторная работа №12. Решение уравнения

              • ЗаданиеДомашнее задание №12

              • ЗаданиеЛабораторная работа №13. Исключения

            • Индивидуальное задание

        • Аспирантура

        • Вечернее отделение

        • Другое

        • ОИИ

      • Осенний семестр

        • Прикладная математика и информатика

        • Фундаментальная информатика и ИТ

        • Математика, механика

        • Педагогическое образование

        • Магистратура

          • Разработка мобильных приложений и компьютерных игр

        • Аспирантура

        • Вечернее отделение

        • Другое

      • Воскресная компьютерная школа

        • Пользователь компьютера плюс

        • Пользователь прикладных программ

        • Программирование I ступень

        • Программирование II ступень

        • Программирование III ступень

        • Архив

      • Воскресная математическая школа

        • Открытое тестирование РНОМЦ и мехмата ЮФУ - 2025

        • Олимпиадная математическая школа

        • Повышение квалификации

        • Доступная математика

        • Лаборатория математического онлайн-образования мех...

        • Осенняя универсиада

        • Научно-практическая конференция

        • ВМШ

          • ВМШ - 24

        • Летняя олимпиадная математическая школа РНОМЦ и ме...

      • Государственная итоговая аттестация

      • Дополнительное образование

      • Олимпиады

      • Видеолекции

      • Разное

      • Архив курсов

      • Заочная школа мехмата ЮФУ

Служба поддержки сайта
Вы используете гостевой доступ (Вход)
Язык программирования C#
Сводка хранения данных
Скачать мобильное приложение Яндекс.Метрика