You are on page 1of 11

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

СУМСЬКИЙ ДЕРЖАВНИЙ УНІВЕРСИТЕТ

Практична робота №4
з дисципліни
“Об’єктно-орієнтоване програмування на мові Java”
на тему:
«Опис класів, модифікатори доступу, збірка сміття»
11 варіант

Виконав: студент групи ІН-64-8


Столяр М.Ю.

Перевірив: Берест О.Б.

СУМИ 2019
Мета завдання

Навчитися працювати з класами та створювати і ініціалізувати об’єкти.

Постановка завдання

Ознайомитися з лекційним теоретичним матеріалом та створити і


запустити проект.

Завдання 1

Створити клас Student, який містить наступні поля:


- ідентифікаційний номер (int id)
- статичне поле int nextId, яке зберігає наступний id студента;
- ім’я (String name);
- прізвище (String surname);
- група (String group);
- масив предметів (Subject [] subjects), які вивчав студент за семестр
(кількість предметів 5);
- гетери та сетери для всіх полів;
- конструктор за замовчуванням і з параметрами.

Лістинг програми

public class Student {

private int id;

private static int nextId = 0;

private String name;

private String surname;

private String group;

private Subject[] subject;


public int getId() {

return id;

public void setId(int k) {

this.id = k;

public int getNextId() {

return nextId;

public void setNextId(int nextId) {

this.nextId = nextId;

public String getName() {

return name;

public void setName(String name) {

this.name = name;

public String getSurname() {


return surname;

public void setSurname(String surname) {

this.surname = surname;

public String getGroup() {

return group;

public void setGroup(String group) {

this.group = group;

public Subject[] setSubjects(){

for(int k=0; k<subject.length; k++) {

subject[k] = new Subject(k);

int m = (int) (Math.random() * 8);

int n = (int) (Math.random() * 100);

subject[k].setNameSubject(m);

subject[k].setMark(n);

subject[k].setPassed(m>2);

}
return subject; }

public Student(){

subject = new Subject[5];

setSubjects();

public Student( int r_id, String r_name, String r_surname, String r_group, int
r_nextId){

subject = new Subject[5];

setId(val_id);

nextId ++;

this.id = nextId;

setName(r_name);

setSurname(r_surname);

setGroup(r_group);

setNextId(r_nextId);

setSubjects();

void print_all(){

P.rint(getId()+1 + ", ");

P.rint(getNextId()+1 + ", ");

P.rint(getName() + " ");

P.rint(getSurname() + ", ");

P.rint(getGroup());

Результат створення головного класу Student до першого завдання.


Завдання 2

Створити клас Subject з полями:


- назва предмета (String nameSubject);
- оцінка (змінюється від 2-5 и заповнюється за допомогою
Math.random()) (Float mark);
- зданий предмет або ні (якщо оцінка <= 2) (boolean passed).
Для назв предметів створити окремий масив рядків (String[]
nameSubjects). При створенні об’єкта Subject та ініціалізації поля назва
предмета (String nameSubject), використовувати назву предмета з масиву
String[] nameSubjects.

Лістинг програми

public class Subject {

private String nameSubject;

private float mark;

private boolean passed;

public Subject(){}

public Subject(int i) {

setNameSubject(i);

public String getNameSubject() {

return nameSubject;

public void setNameSubject(int i) {

String[]namesSubjects={"Biology","Math","Ph.t","Physic","English","ТСПП","Ukrainian”,
“Programming"};
this.nameSubject = namesSubjects[i];

public float getMark() {

return mark;

public void setMark(float mark) {

this.mark = mark;

public boolean isPassed() {

return passed;

public void setPassed(boolean passed) {

this.passed = passed;

Результат створення класу Subject до другого завдання.

Завдання 3

Створити клас з іменем P та двома статичними методами rint(String str)


та rintln(String str), які друкують рядки без переведення рядка і з
переведенням рядка відповідно, таким чином зробивши обгортки над
методами System.out.print() і System.out.println(). Використовувати ці методи
для друку рядків, замість System.out.print() та System.out.println().

Лістинг програми
public class P {

public String str ="Liverpool";

static void rint(String str){

System.out.print(str);

static void rintln(String str){

System.out.println(str);

}}

Результат створення класу P до третього завдання.

public class Main {

public static void main(String[] args) {

P lfc = new P();

lfc.rintln(lfc.str);

lfc.rint(lfc.str);

Результат створення головного класу Main до третього завдання.

Завдання 4

Створити окремий утилітарний клас Utils із статичними методами, які


визначали б саму «успішну» дисципліну (середній бал по якій найбільший)
String getTheBestSubject(Students[] student), самого успішного (не успішного)
студента Student getTheBestStudent(Students[] student).

Лістинг програми

public class Utils {


public Utils(){}

public Student Utils_Stud(Student []student){

return getTheBestStudent(student);

public Subject Utils_Sub(Subject []subject) {

return getTheBestSubject(subject);

private static Subject getTheBestSubject(Subject[] subject){

float maxsum=-32000;

int sum;

Subject bestSubject = new Subject();

for(int i=0;i<subject.length;i++){

sum = getSum(subject, i,1);

if(sum>maxsum) {

maxsum = sum;

bestSubject = subject[i];

return bestSubject;

Результат створення класу Utils до четвертого завдання.

Завдання 5

В функції main() створити масив студентів (Student [] students)


(кількість студентів в групі 5), проініціалізувати кожного студента в масиві
відповідними значеннями (ім’я, фамілія, група і масив предметів).
Порахувати середній бал кожного студента по результатам сесії. Для
кожного студента роздрукувати оцінки, середній бал за семестр, зданий або
не зданий предмет, а також визначити, кому буде нараховуватися звичайна
стипендія, а кому підвищена (звичайна стипендія нараховується для
студентів з середнім балом 4.0-4.9, підвищена – 5.0).

Лістинг програми

public class Main {

public static void main(String[] args) {

Student []st = new Student[5];

st[0] = new Student(0, "Ronaldo", "Cristiano", "KB-71", 1);

st[1] = new Student(1, "Messi", "Lionel", "IT-62", 2);

st[2] = new Student(2, "Mane", "Sadio", "IN-64-8", 3);

st[3] = new Student(3, "Salah", "Mohammed", "IN-64-8", 4);

st[4] = new Student(4, "Firmino", "Roberto", "IN-64-8", 0);

for (int i = 0; i<5; i++) {

st[i].setSubjects();

P p = new P();

Utils best = new Utils();

Student stud = best.Utils_Stud(st);

p.rintln("" + stud.getName() + " " + stud.getSurname() + ", summa: " +


best.getSum(stud.subject,0,0));
for( int i = 0; i < st.length; i++) {

Subject sub = best.Utils_Sub(st[i].subject);

p.rintln("" + sub.getNameSubject() + ", summa: " +


best.getSum(st[i].subject,i,1));

for(int j=0;j<st.length;j++) {

p.rintln(j+1 +" student:");

st[j].print_all();

p.rintln("\n");

Результат створення головного класу Main до п’ятого завдання.

Висновки: під час виконання цієї практичної роботи я навчився на


практиці працювати з класами, а також створювати та ініціалізувовувати
різноманітні об’єкти.

You might also like