❓
문제 :
1. 회사가 고용하는 여러 유형의 직원들이 있다.
직원은 정규직원과 비정규직원 으로 나뉜다.
모든 직원은 직원구분(type), 이름(name), 주소(address),소속부서(dept)정보를 가진다ㅏ.
정규직원은 직원번호(empNo), 직급(position), 연봉(salary)를 가진다.
비정규직원은 계약만료일(expireDate), 기본임금(primaryPay)를 가진다.
직원클래스(Employee)
정규직원 클래스(FormalEmployee)
비정규직원클래스(InformalEmployee)
또한 모든 직원은 급여를 받는다.
정규직원은 급여로 연봉 / 12 로
비정규직원은 기본입금
모든 클래스에 getPay() 메서드를 구현하기
구동클래스 실행시 다음의 결과가 나오도록 클래스 생성하기
[결과]
정규직:이름=김정규, 주소=서울시 용산구,부서=총무부,직원번호=1,직급=과장,연봉=5000
김정규의 급여 : 416
비정규직:이름=이비정, 주소=서울시 구로구,부서=영업부,계약만료일=Sun Sep 01 15:58:50 KST 2024,기본입금=1000
이비정의 급여 : 1000
package chap7;
import java.util.Date;
class Employee{
String type; //직원구분
String name; //이름
String address; //주소
String dept; //소속부서
Employee(String type,String name, String address, String dept){
this.type = type;
this.name = name;
this.address = address;
this.dept = dept;
}
public String toString(){
return type+":"+"이름="+name+", 주소="+address+", 부서="+dept;
}
}
class FormalEmployee extends Employee{
String empNo; //직원번호
String position;//직급
int salary; //연봉
FormalEmployee(String name, String address, String dept, String empNo, int salary, String position){
super("정규직", name, address, dept);
this.empNo = empNo;
this.position = position;
this.salary = salary;
}
int getPay(){
return this.salary/12;
}
@Override
public String toString() {
return super.toString() + ",직급=" + this.position + ",연봉=" + salary;
}
}
class InformalEmployee extends Employee{
Date expireDate; //계약만료일
int primaryPay; //기본임금
InformalEmployee(String name, String address, String dept, Date expireDate, int primaryPay){
super("비정규직", name, address, dept);
this.expireDate = expireDate;
this.primaryPay = primaryPay;
}
int getPay(){
return this.primaryPay;
}
@Override
public String toString() {
return super.toString() + ", 계약만료일=" + this.expireDate + ", 기본임금=" + primaryPay;
}
}
public class Test2 {
public static void main(String[] args) {
//정규직원 객체 생성
FormalEmployee fe = new FormalEmployee
("김정규", "서울시 용산구","총무부", "1", 5000, "과장");
System.out.println(fe);
System.out.println(fe.name + "의 급여 : " + fe.getPay());
//비정규직원 객체 생성
Date expireDate = new Date();
expireDate.setTime(expireDate.getTime() +1000L * 60 * 60 * 24 * 365 * 2);
InformalEmployee ie = new InformalEmployee
("이비정", "서울시 구로구", "영업부", expireDate, 1000);
System.out.println(ie);
System.out.println(ie.name + "의 급여 : " + ie.getPay());
}
}
💡
expireDate.getTime() : 1970년 1월 1일부터 현재까지의 시간을 밀리초(1/1000초) 1000L*60(60초에 해당하는 밀리초) 1000L * 60 * 60(1시간에 해당하는 밀리초)
1000L * 60 * 60 * 24 (하루에해당하는 밀리초)
1000L * 60 * 60 * 24 * 365(1년에 해당하는 밀리초)
1000L * 60 * 60 * 24 * 365 * 2(2년에 해당하는 밀리초)
❓
문제 :
1. Animal 클래스 => 추상클래스
멤버변수 : 동물의 종류, 다리수
생성자 : 동물의 종류랑 다리수 입력받기.
멤버메서드 :
void eat(); => 추상메서드
void sound(); => 추상메서드
2. Dog클래스 : Animal 클래스의 자손클래스
생성자의 매개변수 없음.
멤버메서드 :
void eat() : "주인이 주는대로 먹는다" 출력
void sound(); "멍멍";
3. Lion클래스 : Animal 클래스의 자손클래스
생성자의 매개변수 없음.
멤버메서드 :
void eat() : "초식동물을 잡아 먹는다" 출력
void sound(); "어흥";
구동 클래스 실행시 다음의 결과가 나오도록 클래스 구현하기
[결과]
강아지=>멍멍
주인이 주는대로 먹는다
사자=>어흥
초식동물을 잡아먹는다
package chap7;
class Animal{
String value;
int legnum;
Animal(String value,int legnum){
this.value=value;
this.legnum=legnum;
}
void eat(){
System.out.println("먹는다");
}
void sound(){
System.out.println("짖는다");
}
}
class Dog extends Animal{
Dog() {
super("강아지", 4);
}
@Override
void eat(){
System.out.println("주인이 주는대로 먹는다");
}
@Override
void sound(){
System.out.println("멍멍");
}
}
class Lion extends Animal{
Lion() {
super("사자", 4);
}
@Override
void eat(){
System.out.println("초식동물을 잡아먹는다");
}
@Override
void sound(){
System.out.println("어흥");
}
}
public class Test3 {
public static void main(String[] args) {
Animal[] animal = new Animal[2];
animal[0] = new Dog();
animal[1] = new Lion();
for(Animal a : animal){
System.out.println(a.value + "=>"); //type이 아니고 value가 동물종류.
a.sound();
a.eat();
}
}
}
'수업 문제(국비 지원) > Java' 카테고리의 다른 글
| [JAVA] 2022.09.05 - java 접근 제한자, 클래스 구현 (0) | 2023.04.29 |
|---|---|
| [JAVA] 서술형-클래스 생성자 문제 (0) | 2023.04.28 |
| [JAVA] 2022.09.01 - java 클래스 생성자 (0) | 2023.04.28 |
| [JAVA] 2022.08.30 - java 가변배열, 클래스 정의 사용 (0) | 2023.04.27 |
| [JAVA] 2022.08.29 - java 배열, 정렬 (0) | 2023.04.27 |