목록전체 글 (382)
Priv's Blog
1. Animation Type Unity에서 애니메이션 작업을 할 때 선택할 수 있는 속성 값이 나눠진다. Player 오브젝트에 애니메이션을 적용할 경우, Player 오브젝트의 Import Settings 화면에서 Rig 탭을 클릭한다. Inspector 창에 Animation Type 드롭 다운 메뉴를 클릭하면 None, Legacy, Generic, Humanoid로 총 4가지 속성 값이 노출된다. 이 4가지 항목은 다음과 같다. Animation Type 옵션 설명 None 애니메이션을 사용하지 않음 Legacy 하위 호환성을 위해 이전 버전에서 쓰이던 애니메이션 방식을 사용함 Generic 매카님 애니메이션 방식을 사용함. 인체형이 아닌 3D 모델에 적용. (리타게팅 불가) Humanoid ..
1. 컴퓨터에 추가 장치 지원하기 컴퓨터는 키보드, 본체, 모니터가 존재한다. 컴퓨터를 구성하는 장치인 이 3가지 클래스(Keyboard, Body, Monitor)는 Computer 클래스가 포함하고 있다. 또한 컴퓨터의 가격을 결정하는 price 변수, 전력 소비량을 결정하는 power 변수가 존재하며, 이러한 속성과 연산이 존재한다. 키보드, 본체, 모니터는 각각 자신의 가격과 전력 소비량을 속성으로 가진다. 컴퓨터의 가격과 전력 소비량은 부품에 따라 계산되기 때문에 이를 위한 별도의 속성은 정의하지 않는다. Computer 클래스는 Keyboard, Body, Monitor 클래스의 객체를 부분으로 가진다. 즉, 각 객체의 참조를 필드로 정의할 필요가 있다. package P14; public c..
1. 엘리베이터 부품 업체 변경하기 엘리베이터를 구성하는 부품들은 여러 제조 업체들을 가진다. 엘리베이터의 여러 제조 업체 부품들을 사용하더라도 모두 동일한 동작을 지원하게 만드는 것이 바람직하다. 즉, 건물 A에서 LG 부품을 사용하고, 건물 B에서 현대 부품을 사용하더라도 엘리베이터 프로그램의 변경은 최소화되어야 한다는 것이다. LG와 현대 모터는 구체적인 로직은 달라도 엘리베이터 입장에서 보면 모터를 사용해 엘리베이터를 동작시킨다는 것 자체는 동일하다. 그러므로 추상 클래스로 Motor를 정의하고, LGMotor, HyundaiMotor를 하위 클래스로 정의할 수 있다. Door 또한 Motor와 마찬가지로 구성할 수 있다. 위의 구조에서 모터를 움직이게 만드는 핵심 기능인 move 메서드는 LG,..
1. 여러 가지 방식의 엘리베이터 스케줄링 방법 지원하기 엘리베이터가 여러 대 있을 경우, 사용자가 엘리베이터 버튼을 누를 때 여러 대의 엘리베이터 중 1대만 작동하도록 만들어야 한다. 이처럼 주어진 요청(목적지 층과 방향)을 전달받았을 때, 여러 엘리베이터 중 하나를 선택하는 것을 '스케줄링'이라고 부른다. 엘리베이터 스케줄링에는 여러 방법들이 존재한다. 목적지 층과 가깝고 해당 방향으로 움직이는 중인 엘리베이터를 호출하는 것도 하나의 방법일 것이다. 이 방법은 하나의 엘리베이터로 최대한 많은 이용자가 탑승할 수 있도록 만드는 방법이다. 그림 12-1에서 ElevatorManager 클래스는 이동 요청을 처리하는 스케줄링 클래스이다. 스케줄링 작업을 처리하는 ThroughputScheduler 객체를 ..
1. 여러 회사의 모터 지원하기 엘리베이터 제어 시스템에서 모터를 구동시킨다고 가정하자. 만약 엘리베이터가 현대 모터를 사용한다면, HyundaiMotor 클래스에 move 메서드를 정의할 수 있을 것이다. move 메서드를 실행할 때는 문이 제대로 닫혔는지를 검사해야 한다. 즉, HyundaiMotor 클래스는 Door 클래스와 연관 관계가 있다. 또한 모터는 엘리베이터가 이동 중이 아닐 때만 구동되어야 한다. MotorStatus, DoorStatus, Direction은 Enumeration 인터페이스로, 각각 모터의 상태와 문의 상태, 이동 방향을 나타낸다. package P11; enum DoorStatus { CLOSED, OPEND } enum MotorStatus { MOVING, STOP..