Power Java 11장 프로그래밍
1. 회사에서 근무하는 직원들을 나타내는 클래스들을 상속을 이용하여 작성하여 보자.
1) Employee 클래스를 설계하라.
Employee클래스는 이름, 사번 등의 정보를 필드로 가져야한다.
생성자를 정의하고, 접근자와 설정자 메소드도 작성하라.
월급을 계산하는 메소드 computeSalary()를 구현하라.
2) Employee 클래스에서 상속받아서 SalariedEmployee라는 클래스를 정의하여 보자.
이 클래스는 월급이라는 필드를 추가로 가진다.
역시 생성자를 정의하고, 접근자와 설정자 메소드도 작성하라.
수퍼 클래스의 computeSalary()를 재정의하라.
3) Employee 클래스에서 상속받아서 시간재 직원을 나타내는 HourlyEmployee클래스를 정의하라.
시간당 임금과 일한 시간을 필드로 추가하라.
역시 생성자를 정의하고 접근자와 설정자 메소드도 작성하라.
수퍼 클래스의 computeSalary()를 재정의하라.
class Employee
{
String name="";
int number=0;
public Employee()
{
}
//Get 메소드
String Get_Name()
{
return name;
}
int Get_Number()
{
return number;
}
//Set 메소드
void set_Name(String s_name)
{
name = s_name;
}
void set_Number(int s_number)
{
number = s_number;
}
//월급을 계산하는 메소드
int computeSalary()
{
return 0;
}
String state()
{
return "";
}
}
class SalariedEmployee extends Employee
{
int pay=0;
public SalariedEmployee()
{
}
//Get 메소드
int Get_pay()
{
return pay;
}
//Set 메소드
void set_pay(int s_pay)
{
pay = s_pay;
}
//월급을 계산하는 메소드
int computeSalary()
{
return pay/12;
}
String state()
{
return super.name + "님의 사번은 " + super.number + "이고, 연봉은 " + pay + "입니다.";
}
}
class HourlyEmployee extends Employee
{
int hour_per_pay=0, working_time=0;
public HourlyEmployee()
{
}
//Get 메소드
int Get_hour_per_pay()
{
return hour_per_pay;
}
int Get_working_time()
{
return working_time;
}
//Set 메소드
void set_hour_per_pay(int s_hour_per_pay)
{
hour_per_pay = s_hour_per_pay;
}
void set_working_time(int s_working_time)
{
working_time = s_working_time;
}
//월급을 계산하는 메소드
int computeSalary()
{
return hour_per_pay * working_time;
}
String state()
{
return super.name + "님의 사번은 " + super.number + "이고, 월급은 " + computeSalary() + "입니다.";
}
}
public class test
{
public static void main(String[] args)
{
SalariedEmployee salary = new SalariedEmployee();
HourlyEmployee hourly = new HourlyEmployee();
salary.set_Name("정규직");
salary.set_Number(200810715);
salary.set_pay(20000000);
hourly.set_Name("임시직");
hourly.set_Number(200010254);
hourly.set_hour_per_pay(4200);
hourly.set_working_time(230);
System.out.println(salary.state());
System.out.println(hourly.state());
}
}
2. Person 클래스를 설계하라.
Person 클래스는 이름, 주소, 전화번호를 필드로 가진다.
하나 이상의 생성자를 정의하고, 각 필드에 대하여 접근자와 설정자 메소드를 작성하라.
이어서 Person을 상속받아서 Customer를 작성하여 보자.
Customor는 고객 번호화 마일리지를 필드로 가지고 있다.
한 개 이상의 생성자를 작성하고, 적절한 접근자 메소드와 설정자 메소드를 작성하라.
class Person
{
String name="", address="", phone="";
public Person()
{
}
}
class Customer extends Person
{
int number=0, mile=0;
public Customer()
{
}
}
public class test
{
public static void main(String[] args)
{
// 출력 생략
}
}
3. 일반적인 책을 나타내는 Book 클래스를 상속받아서 잡지를 나타내는 Magazine클래스를 작성하여 보자.
Book 클래스는 제목, 페이지수, 저자 등의 정보를 가진다.
Magazine 클래스는 추가로 발매일 정보를 가진다.
먼저 UML을 그리고 생성자를 포함하여서 자바로 구현하여 보자.
class Book
{
String title="", writer="";
int page=0;
public Book()
{}
}
class Magazine extends Book
{
String Make_day="";
public Magazine()
{
}
}
public class test
{
public static void main(String[] args)
{
// 출력 생략
}
}
4. 일반적인 음식을 나타내는 Food클래스를 상속받아서 멜론을 나타내는 Melon 클래스를 작성하여 보자.
Food 클래스는 칼로리, 가격, 중량등의 정보를 가진다.
Melon클래스는 추가로 경작 농원 정보를 가진다.
먼저 UML을 그리고, 생성자를 포함하여서 자바로 구현하여 보라.
class Food
{
int cal=0, price=0, weight=0;
public Food()
{}
}
class Melon extends Food
{
String maker="";
public Melon()
{
}
}
public class test
{
public static void main(String[] args)
{
// 출력 생략
}
}
5. Coffe라는 수퍼 클래스를 작성하고, 이 클래스를 상속받아서 Latte, Mocha, Cappuccino, Amerecano 커피를 정의해보라.
class Coffe
{
public Coffe()
{
System.out.println("커피입니다.");
}
}
class Latte extends Coffe
{
public Latte()
{
System.out.println("Latte입니다.");
}
}
class Mocha extends Coffe
{
public Mocha()
{
System.out.println("Mocha입니다.");
}
}
class Cappuccino extends Coffe
{
public Cappuccino()
{
System.out.println("Cappuccino입니다.");
}
}
class Amerecano extends Coffe
{
public Amerecano()
{
System.out.println("Amerecano입니다.");
}
}
public class test
{
public static void main(String[] args)
{
// 출력 생략
}
}
6. 2차원 도형들을 나타내는 클래스들을 작성하여 보자,
수퍼 클래스인 Shape에는 도형의 위치, 크기 등의 정보가 들어간다.
각각의 필드에 대하여 접근자와 설정자 메소들을 정의하라.
추가로 도형의 둘레, 면적을 계산하는 메소드도 제공한다.
각 도형은 Shape에서 상속받아서 특정 도형에 맞도록 둘레와 면적을 계산하는 메소드를 수정한다.
테스트 클래스를 작성하여서 여러 도형들을 생성하고 테스트한다.
class Shape
{
int x=0, y=0, size=0;
public Shape()
{
}
//Get 메소드
int Get_x()
{
return x;
}
int Get_y()
{
return y;
}
int Get_size()
{
return size;
}
//Set 메소드
void set_x(int s_x)
{
x = s_x;
}
void set_y(int s_y)
{
y = s_y;
}
void set_size(int s_size)
{
size = s_size;
}
int girth()
{
return 0;
}
int area()
{
return 0;
}
}
class triangle extends Shape
{
public triangle()
{
}
int girth()
{
return 3*x;
}
int area()
{
return (x*y)/2;
}
}
class clicle extends Shape
{
public clicle()
{
}
int girth()
{
return 2*x*3;
}
int area()
{
return 3*x*x;
}
}
public class test
{
public static void main(String[] args)
{
// 출력 생략
}
}
7. 모든 학생은 이름, 학번, 소속 학과, 학년, 이수 학점 수를 가진다.
추가적으로 학부생은 소속 동아리명을 가지고있고, 대학원생은 조교 유형과 장학금 비율을 가진다.
조교 유형에는 교육 조교와 연구 조교가 있으며, 장학금 비율은 0과 1사이의 값이다.
각 클래스는 적절한 생성자 메소드, 접근자 메소드, 변경자 메소드를 가진다.
이러한 클래스들의 객체를 만들고 각 객체에 대응된 모든 정보를 출력하는 테스트를 작성하라,
class Student
{
String name="", major="";
int student_number=0, grade=0, point=0;
public Student()
{
}
//Get 메소드
String Get_name()
{
return name;
}
String Get_major()
{
return major;
}
int Get_student_number()
{
return student_number;
}
int Get_grade()
{
return grade;
}
int Get_point()
{
return point;
}
//Set 메소드
void set_name(String s_name)
{
name = s_name;
}
void set_major(String s_major)
{
major = s_major;
}
void set_student_number(int s_student_number)
{
student_number = s_student_number;
}
void set_grade(int s_grade)
{
grade = s_grade;
}
void set_point(int s_point)
{
point = s_point;
}
int girth()
{
return 0;
}
int area()
{
return 0;
}
}
class undergraduate extends Student
{
String group_title = "";
public undergraduate()
{
}
}
class teaching_assistant extends Student
{
String type="";
float scholarship=0;
public teaching_assistant()
{
}
}
public class test
{
public static void main(String[] args)
{
// 출력 생략
}
}