Day019

RISK_TAKER·2023년 2월 24일

기능만 모아놓은 클래스
단순 객체 1개를 표현하는 클래스
기능+보유하고 있는 자료용 객체

관리하기 어렵다.
class 수학성적들{
수학성적[] = {A수학, B수학, C수학};
}
class 영어성적들{
영어성적[] = {........};
}
-------vs-------
class 학생성적
{
수학
영어
국어
}
학생성적[] scores;
scores[0]

매장 클래스
가전제품매장클래스
가구매장클래스

  • 식품매장클래스
    속성 (음식, 직원)
    음식[] or 음식List
    직원[] or 직원List
    음식(상속)짜장면/짬뽕/탕수육

가구 (침대/책상/의자)


  • 부모 클래스의 필드가 private으로 선언되어 있을 경우
    자식 클래스에서 직접 접근할 수가 없다.
    접근 제한자를 public, protected로 바꾸거나 get메소드를 활용해서 접근해야 한다.

직원관리 프로그램

  • 직원 클래스
public class Employee{
	int empNum; //사번
    String name;
    String birthday;
    String position; //직급
    boolean isWork; //재직여부
    Employee(String name, int empNum){
    	this(name, empNum);
    }
    Employee(String name, int empNum, String birthday, String position){
    this.name = name;
    this.empNum = empNum;
    this.birthday = birthday;
    this.isWork = true;
}
  • 직원관리 클래스
public class EmployeeManagement{
	ArrayList<Employee> emps;
  	EmployeeManagement(ArrayList<Employee> emps){
    	this.emps = emps;
	}
    
    //전체 사원 조회
    void printAllEmp() {
		System.out.print("전체 사원(퇴사 포함): ");
		for (Employee e : emps) {
				System.out.print(e.name + " ");
		}
		System.out.println();
    }
    //재직중인 사원만 조회
    void printCurrentEmp() {
		System.out.print("재직중인 사원: ");
		for (Employee e : emps) {
			if(e.isWork != false) {
				System.out.print(e.name + " ");
			}
		}
		System.out.println();
	}
    //신규 사원 추가하기
    //신규사원 추가(객체 직접 생성해서 넣기)
	void addEmployee(Employee e) {
		this.emps.add(e);
	}
	//신규사원 추가(이름, 사번)
	void addEmployee(String name, int empNum) {
		Employee e = new Employee(name, empNum);
		emps.add(e);
	}
    //퇴사 처리하기
    void resign(Employee e) {
		if (e.isWork != false) {
			e.isWork = false;
		}
	}
}
  • EmployeeMain 클래스
public class EmployeeMain {

	public static void main(String[] args) {
		
		//이름 사번 생일 직급
		Employee e1 = new Employee("김사장", 0, "2023-01-01", "사장");
		Employee e2 = new Employee("박팀장", 1, "2023-01-02", "팀장");
		
		ArrayList<Employee> emps = new ArrayList<Employee>();
		emps.add(e1);
		emps.add(e2);
		
		EmployeeManagement em = new EmployeeManagement(emps);
		
		//신규사원 추가 3명(직접 객체 생성) or (이름, 사번)
		em.addEmployee(new Employee("강백호", 2));
		em.emps.get(2).setPosition("신입사원");
		em.emps.get(2).setBirthday("1950-01-01");
		em.emps.get(2).empInfo();
		
		em.addEmployee(new Employee("송태섭", 3));
		em.addEmployee("정대만", 4);
		em.addEmployee("채치수", 5);
		
		em.printAllEmp(); //전체 사원 조회
		
		em.resign(em.emps.get(2)); //강백호 퇴사처리
		
		em.printCurrentEmp(); //재직중인 사원 조회, 강백호 없음
		
		em.emps.get(2).empInfo(); //퇴사한 강백호 정보출력 재직정보 false
		
		em.printAllEmp(); //다시 전체 사원 조회해보기
	}

}

0개의 댓글