728x90
반응형

문제: 온라인 스트리밍 서비스 관리 시스템
1. 다음과 같은 3단계 상속 구조를 가진 클래스들을 구현하세요
- Content 클래스 (최상위 클래스)
- 속성: (분 단위)
- 메서드:
- void play()
- void displayInfo()
- Video 클래스 (Content를 상속)
- 추가 속성:
- String resolution
- 메서드:
- void adjustResolution(String newResolution)
- Movie 클래스 (Video를 상속)
- 추가 속성:
- String director
- int releaseYear
- 메서드:
- void displayCast()
2. 각 클래스에서 다음 요구사항을 구현하세요:
3. 모든 클래스는 적절한 생성자를 가져야 합니다.
4. play() 메서드를 각 클래스에서 오버라이드하세요.
5. displayInfo() 메서드를 각 클래스에서 오버라이드하여 해당 클래스의 모든 속성을 출력하게 만드세요.
6. Movie 클래스에서 모든 상위 클래스의 메서드를 호출하는 fullDisplay() 메서드를 구현하세요.
7. Main 클래스에서 Movie 객체를 생성하고 모든 메서드를 호출하여 테스트하세요.

package entety; public class Content { // 제목 protected String title; // 재생 시간 protected int duration; |


package entety; public class Content { // 제목 protected String title; // 재생 시간 protected int duration; public Content() { // 클래스 생성자 생성 } // title과 duration을 초기화 public Content(String title, int duration) { // 생성자 생성 this.title = title; this.duration = duration; } |


package entety; public class Content { // 제목 protected String title; // 재생 시간 protected int duration; public Content() { } // title과 duration을 초기화 public Content(String title, int duration) { this.title = title; this.duration = duration; } // "[title]을 재생합니다. 재생 시간: [duration]분" 메시지 출력 public void play() { System.out.println(title + " 을 재생합니다. 재생 시간 : " + duration + " 분"); } // 제목과 재생 시간 정보 출력 public void displayInfo() { System.out.println("제목 : " + title ); System.out.println("재생 시간 : " + duration + "분"); } } |

package entety; public class Video extends Content{ // extends Content ( Content 를 상속합니다. // 해상도 : "720p", "1080p", "4K" protected String resolution; |


public Video() { } public Video(String title, int duration, String resolution) { // 부모 클래스의 생성자 호출 super(title, duration); // resolution 초기화 this.resolution = resolution; } |

@Override public void play() { // 부모 클래스의 play() 메서드 호출 super.play(); // "[resolution] 해상도로 재생합니다." 메시지 추가 출력 System.out.println(resolution + "해상도로 재생합니다."); } @Override public void displayInfo() { // 부모 클래스의 displayInfo() 메서드 호출 super.displayInf(); // 해상도 정보 추가 출력 System.out.println("해상도 : " + resolution ); } |

} public void adjustResolution(String newResolution) { // resolution을 newResolution으로 변경 resolution =newResolution; System.out.println("해상도가" + newResolution + "로 변경되었습니다." ); // "해상도가 [newResolution]로 변경되었습니다." 메시지 출력 } |

package entety; public class Video extends Content{ // 해상도 : "720p", "1080p", "4K" protected String resolution; public Video() { } public Video(String title, int duration, String resolution) { // 부모 클래스의 생성자 호출 super(title, duration); // resolution 초기화 this.resolution = resolution; } @Override public void play() { // 부모 클래스의 play() 메서드 호출 super.play(); // "[resolution] 해상도로 재생합니다." 메시지 추가 출력 System.out.println(resolution + "해상도로 재생합니다."); } @Override public void displayInfo() { // 부모 클래스의 displayInfo() 메서드 호출 super.displayInf(); // 해상도 정보 추가 출력 System.out.println("해상도 : " + resolution ); } public void adjustResolution(String newResolution) { // resolution을 newResolution으로 변경 resolution =newResolution; System.out.println("해상도가" + newResolution + "로 변경되었습니다." ); // "해상도가 [newResolution]로 변경되었습니다." 메시지 출력 } } |

package entety; public class Movie extends Video { // 감독 이름 private String director; // 개봉년도 private int releaseYear; |


package entety; public class Movie extends Video { // 감독 이름 private String director; // 개봉년도 private int releaseYear; // 부모 클래스의 생성자 호출 public Movie() { } // director와 releaseYear 초기화 public Movie(String title, int duration, String resolution, String director, int releaseYear) { super(title, duration, resolution); this.director = director; this.releaseYear = releaseYear; } |

@Override public void play() { // 부모 클래스의 play() 메서드 호출 super.play(); // "감독: [director], 개봉년도: [releaseYear]" 메시지 추가 출력 System.out.println("감독 : " + director +" , 개봉년도 : " + releaseYear); } @Override public void displayInfo() { // 부모 클래스의 displayInfo() 메서드 호출 super. displayInfo(); // 감독과 개봉년도 정보 추가 출력 System.out.println("감독 : " + director); System.out.println("개봉년도 : " + releaseYear); } |

public void displayCast() { // "영화 [title]의 출연진 정보입니다." 메시지 출력 // (실제 출연진 정보는 구현하지 않음) System.out.println("영화 " + title + "의 출연진 정보입니다."); } public void fullDisplay() { // displayInfo() 메서드 호출 displayInfo(); // play() 메서드 호출 play(); // displayCast() 메서드 호출 displayCast(); // adjustResolution() 메서드를 호출하여 해상도를 "4K"로 변경 adjustResolution("4K"); } |


package entety; public class Movie extends Video { // 감독 이름 private String director; // 개봉년도 private int releaseYear; // 부모 클래스의 생성자 호출 public Movie() { } // director와 releaseYear 초기화 public Movie(String title, int duration, String resolution, String director, int releaseYear) { super(title, duration, resolution); this.director = director; this.releaseYear = releaseYear; } @Override public void play() { // 부모 클래스의 play() 메서드 호출 super.play(); // "감독: [director], 개봉년도: [releaseYear]" 메시지 추가 출력 System.out.println("감독 : " + director +" , 개봉년도 : " + releaseYear); } @Override public void displayInfo() { // 부모 클래스의 displayInfo() 메서드 호출 super. displayInfo(); // 감독과 개봉년도 정보 추가 출력 System.out.println("감독 : " + director); System.out.println("개봉년도 : " + releaseYear); } public void displayCast() { // "영화 [title]의 출연진 정보입니다." 메시지 출력 // (실제 출연진 정보는 구현하지 않음) System.out.println("영화 " + title + "의 출연진 정보입니다."); } public void fullDisplay() { // displayInfo() 메서드 호출 displayInfo(); // play() 메서드 호출 play(); // displayCast() 메서드 호출 displayCast(); // adjustResolution() 메서드를 호출하여 해상도를 "4K"로 변경 adjustResolution("4K"); } } |

import entety.Movie; public class Main { public static void main(String[] args) { Movie m1 = new Movie("재밌는영화", 120, "1080p", "홍길동", 2024); m1.fullDisplay(); } } |

728x90
반응형
'JAVA > 실습' 카테고리의 다른 글
28. [ JAVA ] 메소드 오버로딩 예시 2 (1) | 2024.12.13 |
---|---|
27. [ JAVA ] 메소드 오버로딩 예시 1 (2) | 2024.12.13 |
23. [ JAVA ] 클래스(Class)와 객체(Instance) : 예시 (0) | 2024.12.12 |