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(); } }
Заметим, что метод 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)
Популярное: Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (471)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |