Скачиваний:
0
Добавлен:
07.06.2026
Размер:
82.54 Кб
Скачать

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

Факультет информационных систем и технологий

Кафедра безопасности информационных систем

ОТЧЕТ

по практике №6

по дисциплине «Кросс-платформенное программирование»,

по теме: «Проектирование и использование обобщенных классов».

Выполнил студент группы ИСТ-223:

Хакова Ю.М.

Принял:

Бородянский Ю. М.

(подпись)

Цель работы:

Получение практических навыков проектирования обобщений в Java и их использования для различных типов данных.

Задание:

В соответствии с индивидуальным заданием (Рис.1) разработать обобщенный класс, реализация которого обеспечивает определение двух вычисляемых показателей.

Рис.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();

}

}

Соседние файлы в папке ЛР