Public Student(int num_z,String name

double ball, String hobby){

this.num_z=num_z; this.name=name;

this.ball=ball; this.hobby=hobby;

}

//возвращает строку описания объекта

//(экземпляра класса Student)

public String toString(){

return "Студент: "+num_z+", "+name+", "+ball+

", предпочитает "+hobby;

}

} //class

public class Group { //Сущность - Студенческая группа

//поля

private String name; //шифр группы

private Student [ ] studArr; // список студентов

private int num; //количество студентов в группе

// конструктор

public Group(String name, int numMax){

//с учетом numMax - максимально возможного

//числа студентов

this.name=name;

num=0; //пока список не заполнен

studArr = new Student[numMax]; //выделяется

//память под максимально возможное число

// студентов – реализация списка на основе

//массива фиксированной длины

}

//метод-сеттер – меняет шифр группы

public void setGroupName(String name) {

this.name=name;}

//методы-геттеры

// возвращает шифр группы:

public String getGroupName() {return name;}

// возвращает число студентов в группе:

public int getStudNum(){return num;}

// возвращает студента с заданным номером зачетки (id):

public Student getStud (int id){

int i;

for (i=0; i<num; i++)

if (studArr[i].num_z == id) break;

if (i == num) return null; //студент с заданным id не найден

else return studArr[i]; //возвращаем ссылку на объект

}

//геттер − возвращает список студентов:

public Student [ ] getStudArr(){

Student [ ] A=new Student[num];

// получаем копию массива ссылок для

// реального, а не максимального числа

// студентов в группе

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

A[i]=studArr[i];

return A; //возвращаем ссылку на массив ссылок на объекты

}

// другие методы

// вывести список студентов

public void putStudArr(){

for (int i=0; i<num; i++)

System.out.println(studArr[i]); // используется метод

// toString() студента

}

//добавить студента в список группы:

public boolean addStud(Student stud){

//студента нельзя вставить, если

//уже вставлено максимально возможное

//количество студентов или

//его id уже упомянут в списке

if (num == studArr.length) return false;

for (int i=0; i<num; i++)

if (studArr[i].num_z == stud.num_z) return false;

studArr[num]=stud;

num=num+1;

return true;

}

//удалить студента из списка группы:

public boolean delStud(int id){

int i;

for (i=0; i<num; i++)

if (studArr[i].num_z == id) break;

if (i==num)

return false; //если студента с таким id нет

for (i=i+1; i<num; i++)

studArr[i-1]=studArr[i]; //удалить студента

studArr[i-1]=null;

// в массиве стало на 1 студента меньше

num=num-1;

return true;

}

} //class Group

public class GroupStudentDemo{ // Взаимодействие студентов и групп

public static void main (String[ ] args){

//создаем группы

Group gr1=new Group ("ИВТБ-11д",25);

Group gr2=new Group ("ИВТБ-12д",25);

// добавляем студентов в первую группу

gr1.addStud(new Student (25534, "Журавлев",4.5,"баскетбол"));

gr1.addStud(new Student (25535, "Лебедев",4.3,"плавание"));

gr1.addStud(new Student (25536, "Орлов",5.0,"литература"));

gr1.addStud(new Student (25537, "Воробьев",3.5,"театр"));

gr1.addStud(new Student (25538, "Синицын",4.4,"плавание"));

// добавляем студентов во вторую группу

gr2.addStud(new Student (25539, "Иванов",4.5,"волейбол"));

gr2.addStud(new Student (25540, "Ветров",4.3,"плавание"));

gr2.addStud(new Student (25541, "Солнцев",5.0,"театр"));

gr2.addStud(new Student (25542, "Туманов",3.5,"театр"));

gr2.addStud(new Student (25543, “Петров",4.4,"скалолазание"));

//возвращаем и выводим студентов

int n=25534;

Student s1=gr1.getStud(n);

if (s1==null) System.out.println ("В группе "+gr1.getGroupName()+

" нет студента с номером зачетки "+n);

else System.out.println(s1);

n=25600;

s1=gr1.getStud(n);

if (s1==null) System.out.println ("В группе "+gr1.getGroupName()+

" нет студента с номером зачетки "+n);

else System.out.println(s1);

n=25540;

s1=gr2.getStud(n);

if (s1==null) System.out.println ("В группе "+gr2.getGroupName()+

" нет студента с номером зачетки "+n);

else System.out.println(s1);

n=25700;

s1=gr2.getStud(n);

if (s1==null) System.out.println ("В группе "+gr2.getGroupName()+

" нет студента с номером зачетки "+n);

else System.out.println(s1);

// выводим списки групп

System.out.println("Список группы "+gr1.getGroupName()+":");

gr1.putStudArr();

System.out.println("Список группы "+gr2.getGroupName()+":");

gr2.putStudArr();

//отчисление студентов

gr1.delStud(25536);

gr2.delStud(25541);

// выводим списки групп

System.out.println("После отчисления студентов:");

System.out.println("Список группы "+gr1.getGroupName()+":");

gr1.putStudArr();

System.out.println("Список группы "+gr2.getGroupName()+":");

gr2.putStudArr();

}

}

Public Student(int num_z,String name - student2.ru

Заметим, что метод addStud() класса Group возвращает значение простого типа boolean (true, если студент успешно добавлен к группе и false, если не добавлен). При этом мы не можем указать причину, почему не добавлен, хотя таких причин может быть две. Если стоит задача вернуть в вызывающий метод не только результат добавления (добавлен/не добавлен), но и текстовое сообщение, возвращать нужно не простой тип, а объектный.

Усовершенствуем проект, добавив в него еще один класс – Status (проект 10_9).

public class Status{ //код завершения метода

//поля

public boolean flag; //флаг завершения

public String msg; //сообщение

// конструкторы

public Status () {flag=true; msg="";}

public Status (boolean flag, String msg){

this.flag=flag; this.msg=msg;}

}

Перепишем метод addStud() класса Group

//добавить студента в список группы:

public Status addStud(Student stud){

//студента нельзя вставить, если

//уже вставлено максимально возможное

//количество студентов или

//его id уже упомянут в списке

if (num==studArr.length)

Наши рекомендации