[상태 패턴] 동영상 재생
·
문제모음/ChatGPT
문제동영상 플레이어는 재생(Playing), 일시정지(Paused), 정지(Stopped) 상태가 있습니다. 상태에 따라 play(), pause(), stop() 동작이 다르게 작동하도록 구현하세요.요구사항VideoPlayer 클래스는 상태를 가집니다.PlayerState 인터페이스를 구현하는 상태 클래스별로 play, pause, stop 동작을 정의합니다.상태별로 메시지를 출력하고, 필요시 상태 전환이 일어나도록 합니다.현재 상태: Stoppedplay() 호출 -> 재생 시작pause() 호출 -> 일시정지stop() 호출 -> 정지 접근방법✔ VidoPlayer 클래스가 상태를 가지기 때문에 내부에서 상태를 저장할 변수 필요 코드public class Main { public static v..
[커맨드 패턴] 음악 플레이어
·
문제모음/ChatGPT
문제 사용자는 음악 플레이어를 앱에서 제어할 수 있습니다. 플레이어는 재생(play), 정지(stop) 기능이 있습니다.요구사항MusicPlayer 클래스 작성 (play(), stop() 메서드가 존재합니다.PlayCommand, StopCommand 를 작성해야 합니다.AppInvoker가 setCommand()와 executeCommand()를 가집니다음악이 재생됩니다.음악이 정지됩니다. 접근방법✔ 음악 플레이어의 실행될 기능의 커맨드의 조상 필요 코드public class Main { public static void main(String[] args) { AppInvoker invoker = new AppInvoker(); MP3 mp3 = new MP3(); invoker.setCom..
[전략 패턴] 배송비 계산
·
문제모음/ChatGPT
문제쇼핑몰의 배송 방식은 아래와 같이 있습니다.택배는 3000원, 편의점 픽업은 1500원, 퀵 배송은 7000원의 배송비가 추가됩니다.요구사항DeliveryStrategy 인터페이스에서 calculateFee(int basePrice) 메서드가 존재합니다.CourierDelivery, ConvenienceStoreDelivery, QuickDelivery 클래스를 구현해야 합니다.Order 클래스에서 배송 전략을 받아 최종 가격을 계산합니다.(단, 배송비는 상품가격이 50,000원 이상일때 배송 전략을 각각 적용됩니다.)택배 배송: 총 결제 금액 = 53000원편의점 픽업: 총 결제 금액 = 51500원퀵배송: 총 결제 금액 = 57000원 접근방법✔ 모든 배송 방식의 조상은 DeliveryStra..
[옵저버 패턴] 뉴스 구독
·
문제모음/ChatGPT
문제문제작성요구사항요구사항 1요구사항 2 결과 작성 접근방법✔ 뉴스 카테고리는 중복이 되지 않고 카테고리별 구독자들은 여러명이 될 수 있으니 Map과 List 사용✔ 구독자는 여러개의 뉴스 카테고리 구독 가능함을 명심 코드public class Main { public static void main(String[] args) { NewsPublisher publisher = new NewsPublisher(); Subscriber kim = new Subscriber("Kim"); Subscriber lee = new Subscriber("Lee"); Subscriber park = new Subscriber("Park"); // 구독 publisher.addSubscriber(NewsCa..
[옵저버 패턴] 스마트홈 온도 센서
·
문제모음/ChatGPT
문제스마트홈 시스템에서 온도 센서를 구현합니다. 센서에서 측정한 온도가 변하면, 연결된 장치들(에어컨, 히터, 스마트 디스플레이)에 알림을 보냅니다.요구사항TemperatureSensor 클래스는 Subject 역할을 합니다.옵저버들은 AirConditioner, Heater, Display 세 가지 클래스로 만듭니다.- 에어컨은 26도 이상이면 "에어컨 가동" 출력- 히터는 18도 이하이면 "히터 가동" 출력- 디스플레이는 단순히 온도를 출력[Display] 현재 온도: 30도[AirConditioner] 온도가 26도 이상입니다. 에어컨 가동![Display] 현재 온도: 15도[Heater] 온도가 18도 이하입니다. 히터 가동! 접근방법✔ 옵저버의 조상 클래스인 Device 인터페이프 필요 코..
[옵저버 패턴] 주식 시세 알림
·
문제모음/ChatGPT
문제주식 시세 알림 시스템을 구현하려고 합니다. 주식 가격이 변할 때마다 투자자에게 실시간으로 알림을 보냅니다.요구사항Stock 클래스(Subject)는 주식 가격이 변하면 등록된 모든 투자자(Observer)에게 알림을 보냅니다.Investor 클래스는 옵저버로서, 이름과 함께 주가 변화를 출력합니다.main 메서드에서 삼성전자 주식 가격이 3번 변하는 상황을 만들어야 합니다.[Investor: A] 삼성전자 주가 변동: 60000원[Investor: B] 삼성전자 주가 변동: 60000원[Investor: A] 삼성전자 주가 변동: 61500원[Investor: B] 삼성전자 주가 변동: 61500원[Investor: A] 삼성전자 주가 변동: 63000원[Investor: B] 삼성전자 주가 변동:..
[플라이웨이트 패턴] 온라인 상품 썸네일
·
문제모음/ChatGPT
문제온라인 쇼핑몰에서 수천 개의 상품을 표시할 때, 상품마다 썸네일 이미지를 보여줘야 합니다.하지만 같은 브랜드/카테고리의 썸네일은 재사용할 수 있습니다.요구사항Thumbnail 클래스는 brand, category, imagePath를 가집니다.ThumbnailFactory를 통해 동일한 브랜드+카테고리 조합은 공유합니다.Thumbnail 객체 생성: Nike-ShoesThumbnail 객체 생성: Nike-ClothesThumbnail 객체 생성: Adidas-ShoesThumbnail 객체 생성: Puma-Shoes상품 출력: Nike-Shoes상품 출력: Nike-Shoes상품 출력: Nike-Clothes상품 출력: Adidas-Shoes상품 출력: Adidas-Shoes상품 출력: Puma-S..
[플라이웨이트 패턴] 지도 애플리케이션 마커
·
문제모음/ChatGPT
문제지도 서비스에서 여러 개의 마커(위치 아이콘)를 표시해야 합니다.각 마커는 "위도/경도" 좌표는 다르지만, "아이콘"은 동일할 수 있습니다.요구사항MarkerIcon 클래스는 type(카페, 주유소, 병원)과 이미지 경로를 가집니다.MarkerIconFactory는 동일한 타입의 아이콘을 공유합니다.MarkerIcon 객체 생성: 카페MarkerIcon 객체 생성: 병원MarkerIcon 객체 생성: 주유소마커 생성: (37.12, 127.11) 카페마커 생성: (37.15, 127.20) 카페마커 생성: (37.22, 127.40) 병원마커 생성: (37.25, 127.50) 주유소마커 생성: (37.30, 127.55) 병원총 MarkerIcon 객체 수: 3 접근방법✔ 마커의 위도/경도는 모두..
[컴포지트 패턴] 권한 기반 접근 제어 시스템
·
문제모음/ChatGPT
문제회사의 보안 시스템을 설계합니다.리소스(Resource)는 파일, API, DB 테이블 등 다양한 형태일 수 있습니다. 리소스 그룹을 만들어 여러 리소스를 묶을 수도 있습니다. 각 리소스/그룹은 특정 권한(읽기/쓰기/삭제 등)을 가집니다.요구사항Resource 추상 클래스를 만들고, FileResource(단일 리소스), ResourceGroup(리소스 그룹)을 구현하세요.checkPermission(String action) 메서드를 구현해 특정 권한이 있는지 확인하세요그룹 권한은 하위 리소스에도 상속되도록 하세요.그룹: Project A - File: spec.docx (권한: read, write) - File: design.png (권한: read) - 그룹: DB Tables ..
[컴포넌트 패턴] 회사 조직도
·
문제모음/ChatGPT
문제회사 조직도를 출력하는 프로그램을 만듭니다. 직원을 일반직원(Leaf)과 팀(Composite)으로 나눌 수 있습니다.요구사항Employee 인터페이스를 만들고, Staff(직원)과 Team(팀)을 구현하세요. Team은 여러 직원(또는 하위 팀)을 가질 수 있어야 합니다.showHierarchy() 호출 시 계층 구조로 조직도가 출력되게 하세요.개발팀 김철수 (개발자) 이영희 (개발자) 프론트엔드팀 박민수 (프론트엔드 개발자) 최지현 (프론트엔드 개발자) 접근방법✔ 계층 구조를 표시하기 위한 메서드가 필요 코드public class Main { public static void main(String[] args) { Employee development = new Team("개..