Вывести иерархию персонала

Автор: r**************@yandex.ru, 27 Ноября 2011 в 16:03, лабораторная работа

Описание работы

В ходе выполнения второй лабораторной работы было создано 2 пакета:
1) dateutils1 содержащий класс Date с помощью которого организовано поле burn_date (дата рождения) в данной лабораторной работе;
2) employers который содержит иерархию классов показанную на рисунке 1. (Суперкласс – Персоналии (Personalities) является суперклассом для класа Сотрудники (Cooperator), который в свою очередь является суперклассом для класса Преподаватели (Professor). Класс Студенты (Students) наследует класс Персоналии.)
3) Main, который содержит основной класс реализующий метод main, в котором производится тестирование всех методов и классов.

Работа содержит 1 файл

ООП Лабораторная работа №2.docx

— 70.07 Кб (Скачать)

            Ход работы

    1. Создаём новый пакет dateutils1 и перемещаем в него класс Date разработанный на предыдущей работе.

      Сделать это действие можно как непосредственно кодом прописав в классе: 

      package dateutils1; 

      Или использовать контекстное меню.

    1. Создан пакет employers, содержащий иерархию классов представленную на рис. 1.

      Класс Персоналии (Personalities) является суперклассом для класса Сотрудники (Cooperator), который в свою очередь является суперклассом для класса Преподаватели (Professor). Класс Студенты (Students) наследует класс Персоналии. Также класс Персоналии был создан абстрактным, так как он является верхом иерархии остальных классов и имеет недостаточно информации, чтобы создавать объект данного класса: 

      public abstract class Personalities { 

           /*Так как класс персоналии будет являться родительским для классов, содержащих информацию о людях, создаём поле содержащее данные об имени фамилии и отчестве человека*/ 

          public String FIO;  

      /*Создадим  метод возвращающий ФИО*/ 

                public String shortFio () {

              return FIO;

                  } 

      /*Создаём  абстрактный метод вывода данных  о персоналии, который позже будет  переопределён в каждом из  классов наследников*/ 

          public abstract void printInfo ();

      }

          Создаём класс Сотрудники (Cooperator)

/*Так как класс Cooperator входит в пакет employers  прописываем это в классе, также импортируем класс Date, который находится в пакете  dateutils1*/ 

    package employers;

    import dateutils1.Date; 

    /*Поскольку  класс Cooperator  наследует класс Personalities  используем зарезервированное слово extends*/ 

    public class Cooperator extends Personalities {

        String post;  //Должность

        int casing;  //Оклад

        Date burn_date; //Дата рождения 

    /*Создаём  конструктор по умолчанию*/ 

       public Cooperator () {

            FIO="Ололо Василий Иванович";

            burn_date = new Date();

            post="доцент";

            casing=0;

        } 

    /*Создаём  конструктор Задающий объект  заданными значениями*/ 

       public  Cooperator (String FIO, String post, int casing, Date burn_date) {

          this.FIO=FIO;

          this.burn_date = new Date(burn_date);

          this.post=post;

          this.casing=casing;

        } 

    /*Создаём  конструктор задающий  новый объект посредством существующего*/ 

      public  Cooperator (Cooperator coop) {

           FIO=coop.FIO;

           burn_date = coop.burn_date;

           post=coop.post;

           casing=coop.casing;

        } 

       /*Исспользуем анотацию @Override,  указывая компилятору что мы переопределяем абстрактный метод суперкласса printInfo */ 

    @Override

         public void printInfo(){

        System.out.println("ФИО: "+FIO);

        System.out.println("Дата рождения: "+burn_date.printDate());

        System.out.println("Должность: "+post);

        System.out.println("Оклад: "+casing);

} 

        Создаём класс Преподаватели (Professor) 

/*Так как класс Professor входит в пакет employers  прописываем это в классе, также импортируем класс Date, который находится в пакете  dateutils1*/ 

 package employers;

 import dateutils1.Date; 

/*Поскольку  класс Professor  наследует класс Cooperator  используем зарезервированное слово extends*/ 

public class Professor extends Cooperator {

  String notd; //название кафедры;

  String degree; //учёная степень;

  Date burn_date; 

/*Создаём  конструктор по умолчанию, с правами доступа public с целью сделать его доступным с другого пакета*/ 

  public  Professor(){

        FIO="Unnoun";

        burn_date = new Date();

        notd="unnoun";

        degree="к.т.н.";

        casing=1500;

    } 
 
 
 
 
 
 

/*Создаём  конструктор Задающий объект  заданными значениями*/ 

   public Professor (String ff, String n,String post, String d,int casing, Date burn_date) {

        FIO=ff;

        this.burn_date = new Date(burn_date);

        this.notd=n;

        this.post=post;

        this.degree=d;

        this.casing=casing;

    } 

/*Создаём  конструктор задающий  новый объект посредством существующего*/ 

    public Professor (Professor p) {

        FIO=p.FIO;

        burn_date = p.burn_date;

        post=p.post;

        notd=p.notd;

        degree=p.degree;

        casing=p.casing;

    } 

/*Исспользуем анотацию @Override,  указывая компилятору что мы переопределяем абстрактный метод суперкласса printInfo */ 

    @Override

    public void printInfo(){

    System.out.println("ФИО:"+FIO);

    System.out.println("Дата рождения:"+burn_date.printDate());

    System.out.println("Должность:"+post);

    System.out.println("Название кафедры:"+notd);

    System.out.println("Оклад:"+casing);

    System.out.println("Учёная степень:"+degree);

}

} 
 
 
 
 
 
 

        Создаём класс  Студенты (Students)

/*Так как класс Students входит в пакет employers  прописываем это в классе, также импортируем класс Date, который находится в пакете  dateutils1*/ 

package employers;

import dateutils1.*;

/*Поскольку  класс Students  наследует класс Personalities  используем зарезервированное слово extends*/ 

public class Students extends Personalities {

    String group;

    int step;

    int GPA;

    Date burn_date;

/*Создаём  конструктор по умолчанию, с правами доступа public с целью сделать его доступным с другого пакета*/ 

  public  Students () {

        FIO="Ололол Ололол Ололович";

        burn_date = new Date();

        group="unnoun";

        step=530;

        GPA=0;

    }

/*Создаём конструктор  Задающий объект заданными значениями*/

   public Students (String f, int s, int G, String str, Date burn_date) {

        FIO=f;

        this.burn_date = new Date(burn_date);

        this.group=str;

        this.step=s;

        this.GPA=G;

    }

/*Создаём конструктор задающий  новый объект посредством существующего*/

   public Students (Students st) {

        FIO=st.FIO;

        burn_date = st.burn_date;

        group=st.group;

        step=st.step;

        GPA=st.GPA;

    }

/*Исспользуем анотацию @Override,  указывая компилятору что мы переопределяем абстрактный метод суперкласса printInfo */ 

    @Override

    public void printInfo(){

    System.out.println("ФИО: "+FIO);

    System.out.println("Дата рождения: "+burn_date.printDate());

    System.out.println("Группа: "+group);

    System.out.println("Степендия: "+step);

    System.out.println("Средний бал: "+GPA);

    }

   

} 
 
 
 
 

          Создаём класс Lab2_Main

/*Создаём пакет main и помещаем в него класс Lab2_Main , импортируя  класс Date с пакета dateutils1 а также все классы пакета employers с помощью команды import employers.* */

package main;

 import dateutils1.Date;

 import employers.*;

public class Lab2_Main {

    /*Создаём метод main */

    public static void main(String[] args) {

        Для облегчения ввода данных в конструкторы задающие объект заданным значениям в данный класс в виде коментариев помещены параметры конструкторов.

        //Cooperator (String FIO, String post(должность), int casing(оклад), Date burn_date)

        //Students (String f(ФИО), int s(степендия), int G(среднмй бал), String str(группа), Date burn_date)

        //Professor (String ff(фамилия), String n(название кафедры),String post(должность), String d(учёная степень),int casing(оклад), Date burn_date)

     Cooperator c = new Cooperator("Дмитров Дмитрий Дмитриевич","главный вошингер",690, new Date(3,7,1990));

/*Для создания  списка содержащего несколько сотрудников, студентов и преподавателей создадим массив типа  Personalities в котором проверим работоспособность конструкторов */

       Personalities m[] = {

         new Cooperator (),

         new Professor (),

         new Students (),

         new Cooperator ("Иванов Иван Иванович","",800,new Date(3,5,1980)),

         new Professor ("Василий Василий Иванович","ООО","доцент","к.т.н",1200,new Date(1,2,1990)),

         new Students ("Петров Пётр Петрович",530,95,"АЕ-000",new Date(5,5,1995)),

         new Cooperator (c),

     };

/*С помощью  оператора  цикла for выведем список на экран*/

Информация о работе Вывести иерархию персонала