
Лаб_2 Головков И.Е. 12002108 ООП
.docx
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ БЕЛОГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ (НИУ «БелГУ») ИНСТИТУТ ИНЖЕРЕНЕРНЫХ И ЦИФРОВЫХ ТЕХНОЛОГИЙ
КАФЕДРА ИНФОРМАЦИОННЫХ И РОБОТОТЕХНИЧЕСКИХ СИСТЕМ
Отчет по лабораторной работе №2
Вариант №5 Тема работы «Конструкторы и полиморфизм» по дисциплине «Объектно-ориентированное программирование»
студента очного отделения
2 курса группы 12002108
Головкова Игоря Евгеньевича
Проверил:
Резников Н. Г.
Белгород 2022
Цель работы: познакомиться с созданием конструкторов для классов.
Изучить механизм полиморфизма.
Общая постановка задачи:
1. Изучить предлагаемый теоретический материал, а также лекционный материал по данной теме.
2. В класс, разработанный Вами в предыдущей лабораторной работе необходимо добавить четыре конструктора: конструктор без параметров, конструктор с одним параметром, конструктор с полным набором параметров и конструктор копирования.
3. В программе должна выполняться проверка всех разработанных конструкторов. Для проверки необходимо создать отдельный класс с методом main. В методе main создать 4-е объекта, созданных разными конструкторами. Вывести информацию о каждом объекте на консоль.
4. Набрать программу и отладить её работу в среде NetBeans IDE.
5. Подобрать тестовые данные. Протестировать.
6. Оформить отчет по лабораторной работе, включающий:
o титульный лист;
o цель работы;
o постановку задачи для Вашего варианта;
o текст программы на языке Java;
o скриншоты результатов выполнения тестовых примеров;
o ответы на контрольные вопросы.
Индивидуальные данные для выполнения работы:
Вариант №5. Состав класса Dictionary (словарь): язык, количество слов, наличие транскрипции.
Листинг программы:
Файл 1:
public class Dictionary { private String language; private int amountWords; private boolean transcription; public String getLanguage() { return language; } public void setLanguage(String language) { this.language = language; } public int getAmountWords() { return amountWords; } public void setAmountWords(int amountWords) { this.amountWords = amountWords; } public boolean getTranscription() { return transcription; } public void setTranscription(boolean transcriprion) { this.transcription = transcriprion; } public Dictionary(){ language = ""; amountWords = 0; transcription = false; } public Dictionary(String language){ this.language = language; amountWords = 1; transcription = false; } public Dictionary(String language, int amountWords, boolean transcription){ this.language = language; this.amountWords = amountWords; this.transcription = transcription; } public Dictionary(Dictionary slovar){ language = slovar.language; amountWords = slovar.amountWords; transcription = slovar.transcription; } public void toConsole(){ if (transcription) { System.out.println("Язык: " + language + "\nКоличество слов: " + amountWords + "\nТранскрипция присутствует: Да\n"); } else { System.out.println("Язык: " + language + "\nКоличество слов: " + amountWords + "\nТранскрипция присутствует: Нет\n"); } } }
Файл 2:
public class Lab1 { public static void main(String[] args) { Dictionary slOne = new Dictionary(); Dictionary slTwo = new Dictionary("Немецкий"); Dictionary slThree = new Dictionary("Французский", 5455, true); Dictionary slFour = new Dictionary(slOne); slOne.toConsole(); slTwo.toConsole(); slThree.toConsole(); slFour.toConsole(); } }
Результаты работы java-приложения:
Ответы на контрольные вопросы:
1. Что такое конструктор?
Конструктор – специальный метод объекта
2. Зачем нужен конструктор?
Конструктор решает задачу начальной инициализации полей объекта
3. Что такое полиморфизм?
Полиморфизм – механизм, позволяющий использовать одно имя для
реализации схожих, но технически разных задач
4. Какие виды конструкторов бывают?
Конструктор по умолчанию, с аргументами и копирования
5. Что такое перегрузка метода?
Перегрузка метода заключается в создании метода с таким же именем, но с другим набором параметров.
6. Приведите примеры перегруженных методов.
Например, методы умножения, принимающие int- и double-аргументы: multiply(int a, int b){…}, multiply (double a, double b){…} или multiply(double a, int b){…}.