interface와 implements받은 클래스
1. GetImpl(수당에 대한 인터페이스)
package strategy3_quiz.interfaces;
public interface GetImpl {
public void get();
}
2. GetSalary(월급)
package strategy3_quiz.interfaces;
public class GetSalary implements GetImpl {
@Override
public void get() {
System.out.println("월급을 받습니다");
}
}
3. GetStudentPay(교육급여)
package strategy3_quiz.interfaces;
public class GetStudentPay implements GetImpl {
@Override
public void get() {
System.out.println("교육급여를 받습니다");
}
}
1. JobImpl(하는일에 대한 인터페이스)
package strategy3_quiz.interfaces;
public interface JobImpl {
public void job();
}
2. JobLec(강사)
package strategy3_quiz.interfaces;
public class JobLec implements JobImpl {
@Override
public void job() {
System.out.println("강의를 합니다");
}
}
3. JobMng(직원)
package strategy3_quiz.interfaces;
public class JobMng implements JobImpl {
@Override
public void job() {
System.out.println("학원운영업무를 합니다");
}
}
4. JobStudy(학생)
package strategy3_quiz.interfaces;
public class JobStudy implements JobImpl {
@Override
public void job() {
System.out.println("수업을 듣습니다");
}
}
modularization
- 추상클래스인 Person을 만들고 각 역할에 따라 상속받은 클래스를 만든다
1. Person
package strategy3_quiz.modularization;
import strategy3_quiz.interfaces.GetImpl; //인터페이스 import
import strategy3_quiz.interfaces.JobImpl;
public abstract class Person { //데이터
private String id;
private String name;
private GetImpl get;
private JobImpl job;
public Person(String id, String name) {
this.id = id;
this.name = name;
}
public void get() {
System.out.print(name + "은 ");
get.get();
}
public void job() {
System.out.print(name + "은 ");
job.job();
}
public void print() {
System.out.print("[id]" + id + "[name]" + name);
}
public void setGet(GetImpl get) {
this.get = get;
}
public void setJob(JobImpl job) {
this.job = job;
}
}
2. Lecturer(강사)
package strategy3_quiz.modularization;
import strategy3_quiz.interfaces.GetSalary;
import strategy3_quiz.interfaces.JobLec;
public class Lecturer extends Person {
private String subject;
public Lecturer(String id, String name, String subject) {
super(id, name);
setGet(new GetSalary());
setJob(new JobLec());
this.subject = subject;
}
@Override
public void print() {
super.print();
System.out.println("[강의과목]" + subject);
}
}
3. Staff(직원)
package strategy3_quiz.modularization;
import strategy3_quiz.interfaces.GetSalary;
import strategy3_quiz.interfaces.JobMng;
public class Staff extends Person {
private String part;
public Staff(String id, String name, String part) {
super(id, name);
setGet(new GetSalary());
setJob(new JobMng());
this.part = part;
}
@Override
public void print() {
super.print();
System.out.println("[부서]" + part);
}
}
4. Student(학생)
package strategy3_quiz.modularization;
import strategy3_quiz.interfaces.GetStudentPay;
import strategy3_quiz.interfaces.JobStudy;
public class Student extends Person {
private String ban;
public Student(String id, String name, String ban) {
super(id, name);
setGet(new GetStudentPay());
setJob(new JobStudy());
this.ban = ban;
}
@Override
public void print() {
super.print();
System.out.println("[반]" + ban);
}
}
5. Testmain
- 강사, 직원, 학생 데이터 넣기
- 데이터 배열에 나열 후 for문으로 출력
package strategy3_quiz.modularization;
public class TestMain {
public static void main(String[] args) {
Student st1 = new Student("ere", "홍길동", "국비자바");
Student st2 = new Student("dbd", "김길동", "자바단기");
Lecturer l1 = new Lecturer("aaa", "유길동", "빅데이터");
Lecturer l2 = new Lecturer("bdc", "박길동", "웹프로그래밍");
Staff s1 = new Staff("sss", "유용현", "관리");
Person[] person = {st1, st2, l1, l2, s1};
System.out.println("업무시간이니 일합시다");
for(Person p : person) {
p.job();
}
System.out.println("---------------------");
System.out.println("지급받아요");
for(int i=0 ; i<person.length ; i++) {
person[i].get();
}
System.out.println("---------------------");
for(Person p : person) {
//System.out.println(p);
p.print();
}
}
}
결과
업무시간이니 일합시다
홍길동은 수업을 듣습니다
김길동은 수업을 듣습니다
유길동은 강의를 합니다
박길동은 강의를 합니다
유용현은 학원운영업무를 합니다
---------------------
지급받아요
홍길동은 교육급여를 받습니다
김길동은 교육급여를 받습니다
유길동은 월급을 받습니다
박길동은 월급을 받습니다
유용현은 월급을 받습니다
---------------------
[id]ere[name]홍길동[반]국비자바
[id]dbd[name]김길동[반]자바단기
[id]aaa[name]유길동[강의과목]빅데이터
[id]bdc[name]박길동[강의과목]웹프로그래밍
[id]sss[name]유용현[부서]관리