Add files via upload

This commit is contained in:
dima0808
2023-02-22 20:28:48 +01:00
committed by GitHub
parent 9112df275b
commit 716b463e99
41 changed files with 538 additions and 0 deletions

11
lab4/lab4.iml Normal file
View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

40
lab4/src/lab4/Main.java Normal file
View File

@@ -0,0 +1,40 @@
package lab4;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
// Створення об'єктів класу Student.
Student First = new Student("Михайло", "Гордун", 21, "ІПСА", true);
Student Second = new Student("Дмитро", "Шарій", 19, "ТЕФ", false);
Student Third = new Student("Аліна", "Шарій", 18, "ЕФ", false);
Student Fourth = new Student("Назар", "Лоленко", 17, "ФІОТ", true);
Student Fifth = new Student("Олександра", "Зеленська", 18, "ФМВ", true);
// Створення масиву об'єктів класу Student.
Student[] ObjArray = new Student[] {First, Second, Third, Fourth, Fifth};
// Сортування по алфавіту (прізвище ім'я).
Arrays.sort(ObjArray, new Sorting.SortByAlphabet());
System.out.println("\nСортування за алфавітом (зростання):");
for (Student Student : ObjArray) {
System.out.println(Student.lastName + " " + Student.firstName);
}
/* Сортування по віці (спадання).
Масив сортує масив по зростанню, але в циклі ітерація
проходить навпаки, тим самим виводячи елементи з кінця
до початку.
*/
Arrays.sort(ObjArray, new Sorting.SortByAge());
System.out.println("\nСортування за віком (спадання):");
for (int i = ObjArray.length-1; i >= 0; i--) {
System.out.print(ObjArray[i].lastName + " ");
System.out.print(ObjArray[i].firstName);
System.out.println(", вік: " + ObjArray[i].age);
}
}
}

View File

@@ -0,0 +1,52 @@
package lab4;
import java.util.Comparator;
public class Sorting {
// Непорушний клас, створений на основі абстратного класу Comparator.
public static class SortByAlphabet implements Comparator<Student> {
/* Реалізація методу compare().
Метод compare(Object o1, Object 02) є одним із абстрактних методів
класу Comparator. Нам потрібно або зробити наш клас абстактним, або
реалізувати даний метод. Якщо ж оголосити клас SortByAlphabet
абстрактним, ми не зможемо створити на основі його об'єкт, тому
вибір очевидний - реалізація методу.
*/
@Override
public int compare(Student st1, Student st2) {
/* Якщо в нас буде 2 однакових прізвища на порівняння, нам потрібно
порівнювати імена аби сортування по алфавіту було правильним.
*/
if (st1.lastName.compareTo(st2.lastName) == 0) {
return st1.firstName.compareTo(st2.firstName);
} else {
return st1.lastName.compareTo(st2.lastName);
}
}
}
// Непорушний клас, створений на основі абстратного класу Comparator.
public static class SortByAge implements Comparator<Student> {
// Аналогічно тут, реалізуємо метод compare().
@Override
public int compare(Student st1, Student st2) {
/* Метод compareTo() приймає лише дані типу String, тому
ми перетворюємо вік з int в String. Звісно ж це може привести
до неточності. Числа будуть порівнюватись спочатку по перших
цифрах, потім по других і тд. Якщо в нас буде, наприклад вік
107 і 18 на порівнянні, прогрма порахує, що 18 > 107 по
порядку. Тут цим знехтується, адже я сумніваюсь що існують
студенти яким >100 років.
*/
String age1 = Integer.toString(st1.age);
String age2 = Integer.toString(st2.age);
return age1.compareTo(age2);
}
}
}

View File

@@ -0,0 +1,44 @@
package lab4;
public class Student {
// Створення полів класу.
public String firstName;
public String lastName;
public int age;
private String faculty;
private boolean hasStipend;
// Конструктор класу.
public Student(String fn, String ln, int age, String fac, boolean wealth) {
setValues(fn, ln, age, fac, wealth);
getValues();
}
/* Метод, який нічого не повертає.
Визначає поля класу.
*/
private void setValues(String fn, String ln, int age, String fac, boolean wealth) {
this.firstName = fn;
this.lastName = ln;
this.age = age;
this.faculty = fac;
this.hasStipend = wealth;
}
/* Метод, який нічого не повертає.
Виводить значення полів.
*/
private void getValues() {
System.out.println("Прізвище та ім'я: " + this.lastName + " " + this.firstName);
System.out.println("Вік: " + this.age);
System.out.println("Факультет: " + this.faculty);
System.out.print("Наявність стипендії: ");
if (this.hasStipend)
System.out.println("є");
else
System.out.println("немає");
System.out.println("~".repeat(40));
}
}

BIN
lab4/ООП lab4.pdf Normal file

Binary file not shown.