<상속 관계의 클래스 작성하기>
다음과 같은 클래스 구조와 조건을 가진 자바 프로그램을 작성해보라.
Product클래스는 각 상품의 고유한 식별자, 상품 설명, 생산자, 가격 정보를 포함하고 있다. Book 클래스는 ISBN 번호, 저자, 책 제목 정보를 포함한다. CompactDisc 클래스는 앨범 제목, 가수 이름 정보를 포함한다. ConversationBook은 회화책에서 다루는 언어명 정보를 포함한다. 객체 지향 개념에 부합하도록 적절한 접근 지정자, 필드, 메소드, 생성자 등을 작성하라. ProductInfo 클래스를 만들고 이곳에 main()을 둔다. main()에서는 최대 10개의 상품을 추가할 수 있으며 모든 상품의 정보를 조회할 수 있다. 모든 제폼에 대한 정보를 출력할 때 Product 타입의 레퍼런스를 이용하라.
import java.util.ArrayList;
import java.util.Scanner;
class Product{
int identifier; //상품의 식별자
String explanation; //상품 설명
String producer; //생산자
int price; //가격 정보
void setId(int id){
identifier=id;
}
int getId(){
return identifier;
}
void input(){
Scanner sc = new Scanner(System.in);
System.out.print("상품 설명>>");
explanation=sc.nextLine();
System.out.print("생산자>>");
producer=sc.nextLine();
System.out.print("가격>>");
price=sc.nextInt();
}
void print(){
System.out.println("상품 ID>>"+identifier);
System.out.println("상품 설명>>"+explanation);
System.out.println("생산자>>"+producer);
System.out.println("가격>>"+price);
}
}
class Book extends Product{
int ISBNnum; //ISBN 번호
String writer; // 저자
String book_title; // 책 제목
void input(){
super.input();
Scanner sc = new Scanner(System.in);
System.out.print("책 제목>>");
book_title=sc.nextLine();
System.out.print("저자>>");
writer=sc.nextLine();
System.out.print("ISBN 번호>>");
ISBNnum=sc.nextInt();
}
void print(){
super.print();
System.out.println("ISBN>>"+ISBNnum);
System.out.println("책 제목>>"+book_title);
System.out.println("저자>>"+writer);
}
}
class CompactDisc extends Product{
String album_title;
String singer_name;
void input(){
super.input();
Scanner sc = new Scanner(System.in);
System.out.print("앨범 제목>>");
album_title=sc.nextLine();
System.out.print("가수>>");
singer_name=sc.nextLine();
}
void print(){
super.print();
System.out.println("앨범 제목>>"+album_title);
System.out.println("가수>>"+singer_name);
}
}
class ConversationBook extends Book{
String languageInfo;
void input(){
super.input();
Scanner sc = new Scanner(System.in);
System.out.print("언어>>");
languageInfo=sc.next();
}
void print(){
super.print();
System.out.println("언어>>"+languageInfo);
}
}
public class ProductInfo {
static ArrayList<Product> productList = new ArrayList<Product>();
static void productAdd(){
Scanner sc = new Scanner(System.in);
System.out.printf("상품 종류 책(1), 음악CD(2), 회화책(3)>>");
Product p=null;
int num=sc.nextInt();
switch(num){
case 1:
p = new Book();
break;
case 2:
p = new CompactDisc();
break;
case 3:
p = new ConversationBook();
break;
}
p.input();
p.setId(productList.size());
productList.add(p);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int num;
while(true){
System.out.print("상품 추가(1), 모든 상품 조회(2), 끝내기(3)>>");
num=sc.nextInt();
if(num==1){
productAdd();
}
else if(num==2){
for(int i=0;i<productList.size();i++){
productList.get(i).print();
System.out.println();
}
}
else if(num==3){
break;
}
else{
System.out.println("잘못 입력하였습니다.");
}
}
}
}
참고자료 : 생능출판 명품 JAVA Programming
github 주소 : https://github.com/ch1517/First_Step/tree/master/Chapter5/
반응형
'Programming Study > 명품자바프로그래밍' 카테고리의 다른 글
[명품자바프로그래밍] 6장 실습문제(1) (0) | 2018.09.20 |
---|---|
[명품자바프로그래밍] 5장 실습문제(2) (2) | 2018.09.19 |
[명품자바프로그래밍] 5장 실습문제(1) (0) | 2017.08.11 |
[명품자바프로그래밍] 4장 Open Challenge (0) | 2017.08.10 |
[명품자바프로그래밍] 4장 실습문제(2) (0) | 2017.08.09 |
댓글