Java

[중앙정보처리학원] Java* 객체지향 Practice

해보구 2024. 4. 18. 13:57

문제: 전자 제품 매장 관리 시스템

요구사항

  1. 기본 클래스 ElectronicProduct 생성
    • 이 클래스는 모든 전자 제품의 기본이 되는 클래스입니다.
    • 속성:
      • productName (제품명, 문자열)
      • price (가격, 실수형)
      • manufacturer (제조사, 문자열)
    • 메소드:
      • 생성자: 모든 속성을 매개변수로 받아 초기화합니다.
      • displayInfo(): 제품의 정보를 출력하는 메소드. 출력 예: "Samsung TV, 가격: 2000000원, 제조사: Samsung"
  2. 서브 클래스 Television 생성
    • ElectronicProduct의 서브 클래스입니다.
    • 추가 속성:
      • screenSize (화면 크기, 정수형)
    • 메소드:
      • 생성자: 기본 클래스의 속성과 screenSize를 초기화합니다.
      • displayInfo() 메소드를 오버라이드하여 화면 크기 정보도 포함하여 출력합니다.
  3. 서브 클래스 Smartphone 생성
    • ElectronicProduct의 서브 클래스입니다.
    • 추가 속성:
      • storageCapacity (저장 용량, 정수형)
    • 메소드:
      • 생성자: 기본 클래스의 속성과 storageCapacity를 초기화합니다.
      • displayInfo() 메소드를 오버라이드하여 저장 용량 정보도 포함하여 출력합니다.

구현할 사항

  • Main 클래스에 main 메소드를 구현하여, 각각의 제품 (TV와 스마트폰) 인스턴스를 하나씩 생성하고, 각 제품의 정보를 출력하는 코드를 작성합니다.

실행코드

// Main 클래스와 main 메소드
public class Main {
    public static void main(String[] args) {
        Television tv = new Television("Samsung TV", 2000000, "Samsung", 55);
        Smartphone phone = new Smartphone("iPhone 13", 890000, "Apple", 256);

        System.out.println("TV Info:");
        tv.displayInfo();

        System.out.println("\nSmartphone Info:");
        phone.displayInfo();
    }
}

 

 

실행 결과

 
TV Info:
Samsung TV, Price: 2000000, 제조사: Samsung
Screen Size: 55 inches

Smartphone Info:
iPhone 13, 가격: 890000, 제조사: Apple
저장 용량: 256 GB

 

 

 

package day07.inherit.practice;

public class ElectronicProduct {

    // 속성 선언 필드
     String productName;
     double price;
     String manufacturer;

   // 제품의 정보를 출력하는 메서드
    public void displayInfo() {
        System.out.printf("%s , 가격: %.0f원,제조사: %s", this.productName, this.price, this.manufacturer);

    }

    // %s => String
    // %f => Double
    // %d => Int
    // 퍼센트 쓰는법 : printf에 문자열에 우선 쓸말들 까지해서 퍼센트를 순서대로 쭉 써주고, 문자열닫고 속성들을 순서대로 입력하면 된다.
}

속성선언을 필드에 해준다. 

package day07.inherit.practice;

public class Smartphone extends ElectronicProduct{

    // 속성
    int storageCapacity;

    // 생성자
    public Smartphone(String productName, double price, String manufacturer, int storageCapacity) {
        this.productName = productName;
        this.price = price;
        this.manufacturer = manufacturer;
        this.storageCapacity = storageCapacity;
    }

    @Override
    public void displayInfo() {
        super.displayInfo();
        System.out.println("\n저장 용량 정보: " + storageCapacity + " GB");
    }
}

생성자는 각 자식페이지 들에 만들어준다. 

 

package day07.inherit.practice;

public class Television extends ElectronicProduct {


    // 속성
    int screenSize;

    // 생성자
    public Television(String productName, double price, String manufacturer, int screenSize) {
        this.productName = productName;
        this.price = price;
        this.manufacturer = manufacturer;
        this.screenSize = screenSize;
    }

    @Override
    public void displayInfo() {
        super.displayInfo();
        System.out.printf("\nScreen Size: %d Inches\n", this.screenSize);
    }


}

각 페이지에만 해당 할 수 있는 속성들은 각페이지에 만들어주고 그에대한 생성자를 추가해준다. 

 

Override 는 부모클래스를 잘 계승했는지 확인하는 체킹 장치이다. this. displayInfo(); 가 될 수도 있었겠지만. super를 사용해야 

부모클래스를 계승할 수가 있다.