ЛР / laba_java(6)
.docxФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
Факультет информационных систем и технологий
Кафедра безопасности информационных систем
ОТЧЕТ
по практике №6
по дисциплине «Кросс-платформенное программирование»,
по теме: «Проектирование и использование обобщенных классов».
|
Выполнил студент группы ИСТ-223: Хакова Ю.М.
|
|
|
|
|
|
Принял: Бородянский Ю. М. |
|
|
(подпись) |
|
|
|
|
|
|
|
Цель работы:
Получение практических навыков проектирования обобщений в Java и их использования для различных типов данных.
Задание:
В соответствии с индивидуальным заданием (Рис.1) разработать обобщенный класс, реализация которого обеспечивает определение двух вычисляемых показателей.
Рис.1. Вариант задания
Ход работы:
Созданный код представляет собой программу для вычисления документа, выданного раньше всех других и отображения количества документов определенного типа.
Класс Document1<T> представляет собой обобщенный класс, то есть параметризованный типом T, который будет определять тип данных для поля issueDate, представляющее дату выдачи документа. Конструктор Document1(T issueDate) принимает дату выдачи в качестве аргумента и устанавливает её в поле issueDate.
2. Методы getIssueDate() и setIssueDate(T issueDate) предоставляют доступ к полю issueDate.
3. В методе f1(Document1<Integer>[] docf) принимается массив объектов типа Document1<Integer>. Метод находит наибольшую дату выдачи среди всех документов, обходя массив и сравнивая даты между собой. Затем возвращает наибольшую дату.
4. В методе f2(Document1<String>[] docf, String type) принимается массив объектов типа Document1<String> и строка type, представляющая тип документа. Метод считает количество документов заданного типа, обходя массив и сравнивая типы документов с переданным `type`. Затем возвращает количество документов указанного типа.
5. В методе main(String[] args) создаются массивы документов различных типов и их дат выдачи, затем вызывается метод f1 для поиска самой ранней даты выдачи, результат выводится на экран, после вызывается метод f2 для подсчета количества документов каждого типа и вывод результатов на экран.
Рис.2. Вывод программы
Вывод:
Данный код может использоваться для управления массивом документов, таких как паспорта, удостоверения личности и другие типы документов, содержащих информацию о дате выдачи и идентификационных характеристиках. Работники государственных органов или предприятий могут создавать документы для каждого экземпляра, отслеживая их дату выдачи и типы документов. После этого они могут использовать этот код для анализа данных, определения количества различных типов документов и сбора статистики на основе имеющихся данных.
Приложение.
Листинг кода:
import java.io.*;
class Document1<T> {
private T issueDate;
public Document1(T issueDate) {
this.issueDate = issueDate;
}
public T getIssueDate() {
return issueDate;
}
public void setIssueDate(T issueDate) {
this.issueDate = issueDate;
}
}
public class lab6 {
public static Document1<Integer> f1(Document1<Integer>[] docf) {
Document1<Integer> earliestDoc = docf[0];
for (Document1<Integer> p : docf) {
if (p.getIssueDate().compareTo(earliestDoc.getIssueDate()) < 0) {
earliestDoc = p;
}
}
return earliestDoc;
}
public static int f2(Document1<String>[] docf, String type) {
int acm = 0;
for (Document1<String> p : docf) {
if (p.getIssueDate().equals(type)) {
acm++;
}
}
return acm;
}
public static void main(String[] args) {
PrintWriter writer = new PrintWriter(System.out, true);
Document1<String>[] documents = new Document1[]{
new Document1<>("Passport"),
new Document1<>("Passport"),
new Document1<>("IDcard"),
new Document1<>("Passport")
};
Document1<Integer>[] dates = new Document1[]{
new Document1<>(20210203),
new Document1<>(20211215),
new Document1<>(20191028),
new Document1<>(20200312)
};
writer.println("Документ, выданный раньше всех других: " + f1(dates).getIssueDate());
writer.println("Количество документов типа Passport: " + f2(documents, "Passport"));
writer.println("Количество документов типа IDcard: " + f2(documents, "IDcard"));
writer.close();
}
}
