Автор: r**************@yandex.ru, 27 Ноября 2011 в 16:03, лабораторная работа
В ходе выполнения второй лабораторной работы было создано 2 пакета:
1) dateutils1 содержащий класс Date с помощью которого организовано поле burn_date (дата рождения) в данной лабораторной работе;
2) employers который содержит иерархию классов показанную на рисунке 1. (Суперкласс – Персоналии (Personalities) является суперклассом для класа Сотрудники (Cooperator), который в свою очередь является суперклассом для класса Преподаватели (Professor). Класс Студенты (Students) наследует класс Персоналии.)
3) Main, который содержит основной класс реализующий метод main, в котором производится тестирование всех методов и классов.
Ход работы
Сделать
это действие можно как непосредственно
кодом прописав в классе:
package
dateutils1;
Или использовать контекстное меню.
Класс
Персоналии (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.
System.out.println("Должность:
System.out.println("Название кафедры:"+notd);
System.out.println("Оклад:"+
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 ("Василий Василий Иванович","ООО","доцент","к.т.
new Students ("Петров Пётр Петрович",530,95,"АЕ-000",new Date(5,5,1995)),
new Cooperator (c),
};
/*С помощью оператора цикла for выведем список на экран*/