Главная страница
Навигация по странице:

  • Лабораторная работа №4 Тема: Обработка строк. Использование регулярных выражений Цель работы

  • Порядок выполнения работы

  • Требования

  • Контрольные

  • метод. к лаб. работам (ООП). Основы языка java


    Скачать 205 Kb.
    НазваниеОсновы языка java
    Анкорabpbrf
    Дата13.10.2021
    Размер205 Kb.
    Формат файлаdoc
    Имя файламетод. к лаб. работам (ООП).doc
    ТипЛабораторная работа
    #247006
    страница3 из 5
    1   2   3   4   5

    Лабораторная работа №3


    Тема: Интерфейсы и абстрактные классы

    Цель работы:


    1. Изучить и освоить механизм создания иерархической структуры классов.

    2. Изучить и освоить особенности разработки, наследования и применения интерфейсов.



    Порядок выполнения работы:


    Ориентируясь на вариант задания:

      • Разработать иерархию классов и интерфейсов заданной предметной области;

      • Для каждого класса и интерфейса разработать состав полей (констант для интерфейсов) и методов, руководствуясь основными принципами объектно-ориентированного проектирования;

      • Определить, какими модификаторами доступа должны быть помечены все классы, поля и методы;

      • Разработать совокупность конструкторов для всех классов из иерархии, желательно, чтобы классы реализовывали минимум один из разработанных интерфейсов;

      • Освоить использование ключевых слов super и this в конструкторах и методах классов;

      • Разработать реализацию одноименных методов в классах иерархии, освоить перегрузку и замещение методов;

      • В разработанных методах реализовать определение, инициализацию, создание и использование объектов ссылочного типа (классов, импортируемых из пакетов JRE, классов собственной разработки).



    Требования к содержанию отчета:


    Отчет готовится в электронном виде и должен содержать:

    • цель работы;

    • описание разработанной иерархии классов и интерфейсов заданной предметной области;

    • листинги классов и интерфейсов;

    • документацию, подготовленную с использованием утилиты javadoc;

    • выводы и заключение.

    Контрольные вопросы (примерный перечень):


      1. Что делает операция new?

      2. Может ли переменная иметь тип «интерфейс»?

      3. Что такое поле класса? Чем оно отличается от поля объекта?

      4. Что такое сигнатура метода? А контракт метода?

      5. Что такое интерфейс?

      6. Что можно сделать при помощи переменной super?

      7. В чем отличие результата применения модификатора final к классу и к переменной?

      8. Что такое абстрактный метод?

      9. Будет ли ошибка выдана компилятором, если класс реализует два интерфейса, имеющих методы с одинаковой сигнатурой?

      10. Чем абстрактный класс отличается от интерфейса?

      11. Что делает конструктор класса? Должен ли он обязательно явно присутствовать в объявлении класса?

      12. Какие в существуют виды ссылочных типов? Как реализуются ссылочные переменные?

      13. Как переменные различных видов передаются в качестве параметров методам?

      14. Что можно сделать при помощи переменной this?

      15. Что такое элементы класса и элементы экземпляра класса, чем они отличаются друг от друга? Как нужно указывать, что переменная или метод является элементом класса, а не экземпляра?

      16. Для чего используются модификаторы доступа? Какие существуют модификаторы доступа, как они ограничивают доступ к элементам?

      17. Что позволяет делать процесс наследования?

      18. Что такое суперкласс и подкласс?

      19. Как ведут себя строковые переменные при передаче их в качестве параметров?

      20. Что такое повторное использование кода?

      21. Что такое скрытие переменной, затемнение переменной и замещение метода?

      22. Как импортировать классы из пакетов?

      23. Как использовать явные ссылки на классы из пакетов?

      24. Как добавить класс в пакет?

    Варианты задания


    1. Разработать иерархию классов «Отрезок», «Квадрат», «Куб». Реализовать методы задания и доступа и изменения параметров объектов этих классов. Задать интерфейсный объект, который умеет графически отображать в 3D эти объекты в задаваемых ракурсе и областях своего рабочего окна (сдвиг и повороты).

    2. Разработать иерархию классов «Данное», «Байт» - целое число размера 1 байт, «Слово» - целое число размера 4 байта, «Число» - вещественное число в 8 байт. Разработать класс «FIFO буфер заданной длины», позволяющий записывать данные указанных типов в произвольном порядке, обеспечивая контроль переполнения, и извлекать их по указанной процедуре обслуживания, обеспечивая контроль наличия.

    3. Разработать иерархию и протоколы классов «Квадрат», «Ромб», «Прямоугольник» и «Параллелограмм». Определить методы для изменения размеров, расчета периметра и площади фигур.

    4. Реализовать иерархию классов, представляющих геометрические фигуры - окружность, ромб, параллелограмм, трапецию, треугольник. Реализовать методы вычисления площади, периметра, длины ребер, диаметров вписанной и описанной окружности. В качестве основы иерархии описать интерфейс или абстрактный класс Figure, являющийся абстракции геометрической фигуры. Необходимо реализовать следующие методы -вычисление площади, периметра, высоты, длины ребер(для многоугольников), радиуса, диаметра (для окружности), медиан, биссектрис. Для указания вершин использовать координаты декартовой системы координат. Предусмотреть конструкторы с параметрами.

    5. Реализовать иерархию классов представляющих собой абстракцию организационной структуры предприятия. Разработать следующие классы – «Человек», «Сотрудник», «Подразделение», «Должность», соответствующие следующим требованиям: Класс «Человек» должен обладать как минимум следующими свойствами - фамилия, имя, отчество, дата рождения, пол. Класс «Сотрудник» должен расширять класс «Человек» обладать как минимум следующими свойствами – подразделение, должность, зарплата. Для сотрудника, должны быть доступны прием и увольнение на работу. Классы подразделения должны иметь иерархическую структуру, то есть каждое подразделение может иметь главное и подчиненные подразделение. Должны быть доступны ввод/вывод подразделения организации.

    6. Спроектировать и реализовать классы, для операций над банковскими счетами – банковский счет, владелец счета, история операций. Должны быть доступны следующие операции: депонирование некоторой суммы на счет; снятие некоторой суммы со счета; передача суммы с одного счета на другой; открытие счета и закрытие счета; получение истории операций; регистрация клиента; получение баланса по счету; формирование сводной информации по всем счетам;

    7. Реализовать иерархию классов для склада. Реализовать классы «Склад», «Товар», «Покупатель», «Поставщик». Должны быть реализованы следующие функции: добавление единицы товара; отпуск товара покупателю; получение информации о доступных позициях товара; получение информации о наличии товара на складе; группировка товаров по видам; получение информации по поставщикам; получение информации по покупателям;

    8. Создать базовый класс Car (машина), характеризуемый торговой маркой (строка), числом цилиндров, мощностью. Определить методы переназначения и изменения мощности. Создать производный класс Lorry (грузовик), характеризуемый также грузоподъемностью кузова. Определить функции переназначения марки и изменения грузоподъемности.

    9. Создать класс Liquid (жидкость), имеющий поля названия и плотности. Определить методы переназначения и изменения плотности. Создать производный класс Alcohol (спирт), имеющий крепость. Определить методы переназначения и изменения крепости.

    10. Создать класс Pair (пара чисел); определить методы изменения полей и вычисления произведения чисел. Определить производный класс Rectangle (прямоугольник) с полями−сторонами. Определить методы вычисления периметра и площади прямоугольника.

    11. Создать класс Man (человек), с полями: имя, возраст, пол и вес. Определить методы переназначения имени, изменения возраста и изменения веса. Создать производный класс Student, имеющий поле года обучения. Определить методы переназначения и увеличения года обучения.

    12. Создать класс Triad (тройка чисел); определить методы изменения полей и вычисления суммы чисел. Определить производный класс Triangle с полями−сторонами. Определить методы вычисления углов, вычисления периметра и площади треугольника. Создать производный класс Equilateral (равносторонний). Создать производный класс RightAngled (прямоугольный).

    13. Студент, преподаватель, персона , заведующий кафедрой

    14. Служащий, персона , рабочий, инженер

    15. Рабочий, кадры, инженер, администрация

    16. Деталь, механизм, изделие, узел

    17. Организация, страховая компания, нефтегазовая компания, завод

    18. Журнал, книга , печатное издание, учебник

    19. Тест, экзамен, выпускной экзамен, испытание

    20. Место, область, город, мегаполис

    21. Игрушка , продукт, товар, молочный продукт

    22. Квитанция, накладная, документ, счет

    23. Автомобиль, поезд, транспортное средство, экспресс

    24. Двигатель, двигатель внутреннего сгорания, дизель, реактивный двигатель

    25. Республика , монархия, королевство, государство


    Лабораторная работа №4

    Тема: Обработка строк. Использование регулярных выражений
    Цель работы:

    1. Изучить и освоить механизм создания строк, используя стандартные классы String, StringBuilder и StringBuffer.

    2. Изучить и освоить особенности разработки и применения регулярных выражений.


    Порядок выполнения работы:

    Ориентируясь на вариант задания:

      • Разработать иерархию классов и интерфейсов;

      • Для каждого класса и интерфейса разработать состав полей (констант для интерфейсов) и методов, руководствуясь основными принципами объектно-ориентированного проектирования;

      • Разработать и реализовать совокупность классов для решения поставленной задачи: Символ, Слово, Знак препинания и др. Во всех задачах заменять табуляции и последовательности пробелов одним пробелом.

    Требования к содержанию отчета:

    Отчет готовится в электронном виде и должен содержать:

    • цель работы;

    • описание разработанной иерархии классов и интерфейсов заданной предметной области;

    • листинги классов и интерфейсов;

    • документацию, подготовленную с использованием утилиты javadoc;

    • выводы и заключение.


    Контрольные вопросы (примерный перечень):

    1. Как объявляются и инициализируются строки в языке Java?

    2. Какие виды параметров могут быть заданы в конструкторах класса String?

    3. Как определяется длина строки и как выполняется конкатенация строк в языке Java?

    4. Как выполняется размещение строки в объекте класс StringBuffer?

    5. Какие конструкторы определены для класса StringBuffer?

    6. Как определяется и устанавливается емкость буферной памяти и длина строки для объекта класса StringBuffer?

    7. Какие методы сравнения строк определены в классе String?

    8. Какие методы класса String выполняют поиск в строках?

    9. Какие методы извлечения строк и подстрок из строки определены в классе String?

    10. Какие методы модификации строк определены в классе String?

    11. Как в Java можно создать строки из примитивных типов?

    12. Какие методы модификации строк определены в классе StringBuffer?

    13. Какие типы символов можно задавать в шаблоне регулярного выражения?

    14. Как определяется операция альтернации в шаблоне регулярного выражения?

    15. Как задать любой одиночный символ в шаблоне регулярного выражения?

    16. Как действуют квантификаторы "+", "*" и "?" в шаблоне регулярного выражения?

    17. Как задается точное число повторений символа в шаблоне регулярного выражения?

    18. Как задается класс символов в шаблоне регулярного выражения?

    19. Как задаются классы символов с помощью специальных символов в шаблоне регулярного выражения?

    20. Какие анкеры можно задать в шаблоне регулярного выражения?

    21. Как задается группировка символов и как захватываются символы в шаблоне регулярного выражения?

    22. Как задается группировка символов без захвата в шаблоне регулярного выражения?

    23. Как задается группировка символов с «заглядыванием вперед» в шаблоне регулярного выражения?

    24. Как задается группировка символов с «заглядыванием назад» в шаблоне регулярного выражения?

    25. Что содержит и как создается объект класса Pattern в Java?

    26. Какие флажки и какими способами можно задать в шаблоне регулярного выражения в Java?

    27. Какие методы определены для класса Pattern в Java, и какие действия они выполняют?

    28. Что содержит и как создается объект класса Match в Java?

    29. Какие операции с регионами определены в классе Match в Java, и какие действия они выполняют?

    30. Какие методы поиска соответствия определены в классе Match в Java, и какие действия они выполняют?

    31. Какие методы замены определены в классе Match в Java, и какие действия они выполняют?

    32. В каких случаях генерируется исключение класса PatternSyntaxException и какие методы определены в этом классе?

    33. Какие методы работы с регулярными выражениями определены в классе String в Java, и какие действия они выполняют?

    34. Каков формат определения метода в Java?

    35. Как задается тип возвращаемого значения в определении метода в Java?

    36. Для каких целей используется предложение return в Java?

    37. Как определяются перегруженные методы в Java и как они задаются?

    38. Какие модификаторы можно задать для методов в Java?


    Задания к лабораторной работе

    Задача 1

    1. Написать регулярное выражение, определяющее является ли данная строка строкой "abcdefghijklmnopqrstuv18340" или нет. – пример правильных выражений: abcdefghijklmnopqrstuv18340. – пример неправильных выражений: abcdefghijklmnoasdfasdpqrstuv18340.

    2. Написать регулярное выражение, определяющее является ли данная строка GUID с или без скобок. Где GUID это строчка, состоящая из 8, 4, 4, 4, 12 шестнадцатеричных цифр разделенных тире. – пример правильных выражений: e02fd0e4-00fd-090A-ca30-0d00a0038ba0. – пример неправильных выражений: e02fd0e400fd090Aca300d00a0038ba0.

    3. Написать регулярное выражение, определяющее является ли заданная строка правильным MAC-адресом. – пример правильных выражений: aE:dC:cA:56:76:54. – пример неправильных выражений: 01:23:45:67:89:Az.

    4. Написать регулярное выражение, определяющее является ли данная строчка валидным URL адресом. В данной задаче правильным URL считаются адреса http и https, явное указание протокола также может отсутствовать. Учитываются только адреса, состоящие из символов, т.е. IP адреса в качестве URL не присутствуют при проверке. Допускаются поддомены, указание порта доступа через двоеточие, GET запросы с передачей параметров, доступ к подпапкам на домене, допускается наличие якоря через решетку. Однобуквенные домены считаются запрещенными. Запрещены спецсимволы, например «–» в начале и конце имени домена. Запрещен символ «_» и пробел в имени домена. При составлении регулярного выражения ориентируйтесь на список правильных и неправильных выражений заданных ниже. – пример правильных выражений: http://www.example.com, http://example.com. – пример неправильных выражений: Just Text, http://a.com.

    5. Написать регулярное выражение, определяющее является ли данная строчка шестнадцатиричным идентификатором цвета в HTML. Где #FFFFFF для белого, #000000 для черного, #FF0000 для красного и т.д. – пример правильных выражений: #FFFFFF, #FF3421, #00ff00. – пример неправильных выражений: 232323, f#fddee, #fd2.

    6. Написать регулярное выражение, определяющее является ли данная строчка датой в формате dd/mm/yyyy. Начиная с 1600 года до 9999 года. – пример правильных выражений: 29/02/2000, 30/04/2003, 01/01/2003. – пример неправильных выражений: 29/02/2001, 30-04-2003, 1/1/1899.

    7. Написать регулярное выражение, определяющее является ли данная строчка валидным E-mail адресом согласно RFC под номером 2822. – пример правильных выражений: user@example.com, root@localhost – пример неправильных выражений: bug@@@com.ru, @val.ru, Just Text2.

    8. Составить регулярное выражение, определяющее является ли заданная строка IP адресом, записанным в десятичном виде. – пример правильных выражений: 127.0.0.1, 255.255.255.0. – пример неправильных выражений: 1300.6.7.8, abc.def.gha.bcd.

    9. Проверить, надежно ли составлен пароль. Пароль считается надежным, если он состоит из 8 или более символов. Где символом может быть английская буква, цифра и знак подчеркивания. Пароль должен содержать хотя бы одну заглавную букву, одну маленькую букву и одну цифру. – пример правильных выражений: C00l_Pass, SupperPas1. – пример неправильных выражений: Cool_pass, C00l.

    10. Проверить является ли заданная строка шестизначным числом, записанным в десятичной системе счисления без нулей в старших разрядах. – пример правильных выражений: 123456, 234567. – пример неправильных выражений: 1234567, 12345.

    11. Есть текст со списками цен. Извлечь из него цены в USD, RUR, EU. – пример правильных выражений: 23.78 USD. – пример неправильных выражений: 22 UDD, 0.002 USD.

    12. Проверить существуют ли в тексте цифры, за которыми не стоит «+». – пример правильных выражений: (3 + 5) – 9 × 4. – пример неправильных выражений: 2 * 9 – 6 × 5.

    13. Создать запрос для вывода только правильно написанных выражений со скобками (количество открытых и закрытых скобок должно быть одинаково). – пример правильных выражений: (3 + 5) – 9 × 4. – пример неправильных выражений: ((3 + 5) – 9 × 4


    Задача 2

    1 Удалить из предложения все слова, содержащие заданный символ.

    2 Все лексемы во введенной строке вывести в обратном порядке.

    3 Увеличение кода каждого символа на константу и вывод новой строки. Константа вводится с клавиатуры.

    4 Подсчитать сумму длин лексем во введенном предложении и вывести полученную величину.

    5 Распечатать слова из введенного предложения, у которых либо буквы упорядочены по алфавиту, либо каждая буква входит в слово не менее двух раз (т.е. слова типа BEER, ABBA).

    6 Распечатать введенную строку, удалив из неe лексемы с нечетными номерами и перевернув лексемы с четными номерами.

    7 Сдвиг во введенной строке четных символов на 2 позиции вправо. Сдвиг полагать кольцевым.

    8 Поиск самого длинного слова в строке и вывод этого слова в обратном порядке.

    9 Поменять в лексемах введенного предложения буквы местами (парно).

    10 Поменять в лексемах введенного предложения буквы на нечетных позициях с прописных на строчные.

    11 Дано предложение. Все нечетные лексемы перевернуть и вывести новое предложение.

    12 Дано предложение. Определить, является ли числовая последовательность из длин слов неубывающей.

    13 Вводится строка, содержащая цифры и символы. Подсчитать и вывести сумму квадратов всех чисел в исходной строке.

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

    15 Вводится строка, содержащая цифры и символы. Подсчитать и вывести сумму всех чисел в исходной строке.

    16 Замена во введенной строке S лексемы a на лексему b. Лексемы a и b вводятся с клавиатуры.

    17 Дано предложение. Вывести все слова заданной длины.

    18 Замена в каждой лексеме введенной строки первого символа на второй.

    19 Удалить из предложения все символы, стоящие на четных позициях в лексемах.

    20 Подсчитать суммы кодов символов лексем во введенном предложении и проверить, является ли полученный числовой ряд невозрастающей последовательностью.

    21 Поиск самого короткого слова в строке и вывод количества повторений его в исходной строке.

    22 Подсчет числа слов во введенном предложении. Полагать, что слова разделяются пробелами, число пробелов между словами - произвольное.

    23 Во введенном предложении поменять все символы местами (парно)

    24 Дана строка и символ. Подсчитать число вхождений символа в нечетных лексемах.

    25 Вывести число повторений введенной лексемы в строке. Строка вводится с клавиатуры.

    26 Подсчет в предложении числа слов с четными количеств букв и с нечетным количеством букв.

    27 Распечатать, начиная с последнего, перевёрнутые слова введенного предложения.

    28 Вводится две строки. В первой строке все буквы сделать прописными, во второй - заменить символ 'a' на 'b'. Вывести строку, полученную в результате слияния преобразованных строк.

    29 Из введенной строки удаляем все вхождения лексемы. Лексема вводится с клавиатуры.

    30 Удалить из предложения все пробелы между лексемами. Вывести новое предложение.

    31 Во введенной строке найти самое длинное симметричное слово и вывести его.

    32 По заданному натуральному числу определить и вывести его последнюю и первую цифры.
    1   2   3   4   5


    написать администратору сайта