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

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

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

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

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

  1. {0.75 балла} [Класс: LinePrinter] Определите класс LinePrinter — «принтер длинных строк» — с единственным методом void Print(string line).

    • Метод печати void Print(string line) должен печатать строку line (не содержит переходов на новую строку, это можно не проверять) следующим образом: lineразбивается на набор строк по N символов в каждой строке; каждая строка длины N выводится на консоль в отдельной строке; последняя строка набора может содержать меньше N символов, если длина line не кратна N.
      Замечание. Выводить строки посимвольно запрещается, используйте подходящие методы класса string!

    • Конструктор класса должен принимать N > 0 — максимальное число символов в печатаемой строке.

    Пример:

    Исходная строка: 'Meantime we shall express our darker purpose.'
    
    Печать принтером для N = 11:
    
    Meantime we
     shall expr
    ess our dar
    ker purpose
    .
    
    Печать принтером для N = 5:
    Meant
    ime w
    e sha
    ll ex
    press
     our 
    darke
    r pur
    pose.

    Демонстрация. Проверьте работу принтера в основной программе. Проверьте принтер с параметром N = 1.

  2. {1.75 балла} [Класс: NumberedLinePrinter] Определите класс NumberedLinePrinter, который действует аналогично LinePrinter, но выводит номера печатаемых строк.
    Указание. Используйте наследование.

    Пример:

    Исходная строка: "Meantime we shall express our darker purpose."
    
    Печать принтером для N = 8:
    
    1. Meantime
    2. we shal
    3. l expres
    4. s our da
    5. rker pur
    6. pose.

    Демонстрация. Проверьте работу принтера в основной программе.

  3. {2.75 балла} [Класс: HidingLinePrinter] Определите класс принтера строки HidingLinePrinter, который кроме N принимает ещё один параметр — строку символов hiddenChars. Этот принтер печатает строку аналогично NumberedLinePrinter, но все символы из массива hiddenChars заменяет звёздочками.

    Пример:

    Исходная строка: "Meantime we shall express our darker purpose."
    
    Печать принтером для N = 8, hiddenChars = "eoapt":
    
    1. M**n*im*
    2. w* sh*l
    3. l *x*r*s
    4. s *ur d*
    5. rk*r *ur
    6. **s*.

    Демонстрация. Проверьте работу принтера в основной программе.

  4. {3.25 балла}

    Cоздать коллекцию List<LinePrinter> объектов-принтеров, которая содержит все три вида принтеров. С помощью каждого принтера из этой коллекции распечатайте одну и ту же строку.

    Указание Чтобы заставить нашу программу использовать Print того класса принтера, к которому каждый объект-принтер из коллекции относится на самом деле (на этапе выполнения программы), необходимо «активировать» для метода Print позднее связывание. Для этого в базовом классе Print нужно объявить виртуальным с помощью ключевого слова virtual, а при переопределении метода в классе-потомке следует указать ключевое слово override.

  5. {4 балла} Добавьте в класс LinePrinter два метода:

    1. процедуру FancyPrint, который принимает вектор (или любую другую коллекцию) строк (строки не содержат символов перехода на новую строку, это можно не проверять).
    2. protected-функцию PadFancy, которая принимает строку line и натуральное число N > 0, и возвращает строку, которая представляет собой line, возможно дополненную символами решётки (#) до длины N (если длина line < N).

    Метод FancyPrint должен печатать строки массива, преобразованные с помощью PadFancy, где в качестве N берётся длина самой длинной строки массива.

    Сделайте так, чтобы FancyPrint класса HidingLinePrinter дополнял строки вектора не решётками, а случайной последовательностью цифр. 

    Указание. Переопределять метод FancyPrint запрещается.

  6. Демонстрация. Вызовите FancyPrint для каждого принтера из коллекции

Дополнительные задачи

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

◄ Домашнее задание №9. Интерфейсы, сортировка с компаратором.
Домашнее задание № 10. Крестики-нолики ►
Пропустить Навигация
Навигация
  • В начало

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

      • Мои курсы

      • Теги

    • Мои курсы

    • Курсы

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

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

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

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

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

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

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

          • Научные вычисления - 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#
Сводка хранения данных
Скачать мобильное приложение Яндекс.Метрика