2021년 5급 공채 기술 2차 소프트웨어공학
문제 4개 · 100점. 참고 답안·채점 기준은 앱에서 볼 수 있습니다.
제1문 (30점)
객체지향 패러다임에 대하여 다음 물음에 답하시오. (총 30점)
- (1) 캡슐화(encapsulation)의 의미를 정보은닉(information hiding)의 개념을 포함하여 설명하시오. (10점)
- (2) 다형성(polymorphism)의 개념에 대해 설명하고, 메소드(method)의 다형성을 실현하는 두 가지 방식에 대해 설명하시오. (15점)
- (3) C++ 언어에서 지원하는 다중상속(multiple inheritance)을 이용할 경우 발생할 수 있는 문제점에 대해 설명하시오. (5점)
제2문 (30점)
다음은 Java 프로그램 작성을 위한 요구사항이다. 물음에 답하시오. (총 30점)
○USB 인터페이스는 powerOn()과 powerOff() 메소드를 가진다.
○Hardware 클래스는 추상클래스로 접근지정자가 protected인 name과 weight 속성을 가지고, 접근지정자가 public인 hibernate() 추상메소드를 가지며, USB 인터페이스를 구현한다.
○Laptop 클래스와 SmartPhone 클래스는 Hardware 클래스의 하위클래스이며 추상클래스가 아니다.
○Tablet 클래스는 Laptop 클래스를 상속받으며, 접근지정자가 protected인 price를 속성으로 가진다.
○Hardware 클래스는 추상클래스로 접근지정자가 protected인 name과 weight 속성을 가지고, 접근지정자가 public인 hibernate() 추상메소드를 가지며, USB 인터페이스를 구현한다.
○Laptop 클래스와 SmartPhone 클래스는 Hardware 클래스의 하위클래스이며 추상클래스가 아니다.
○Tablet 클래스는 Laptop 클래스를 상속받으며, 접근지정자가 protected인 price를 속성으로 가진다.
- (1) 위 요구사항을 만족하는 클래스 다이어그램을 작성하시오. (10점)
- (2) 1)에서 작성된 클래스 다이어그램을 다음 사항에 맞게 Java 코드로 작성하시오. (15점)○클래스, 속성, 메소드는 요구사항의 이름을 사용
○모든 속성의 타입은 String으로 작성
○모든 메소드의 반환형은 void이며, 추상 메소드가 아닌 메소드는 공란으로 body를 작성 - (3) 1)에서 작성된 클래스 다이어그램에서 Laptop 클래스가 다음과 같이 변경된 경우, Tablet 클래스의 객체에서 직접 실행할 수 있는 메소드를 나열하시오. (5점)
Laptop +buyDate +draw()
#clear()
-reset()
제3문 (20점)
다음은 프로젝트 내 작업과 선행 작업, 작업별 소요기간을 나타내고 있다. 물음에 답하시오. (총 20점)
| 작업 | 선행 작업 | 소요기간(일) |
| T1 | - | 4 |
| T2 | - | 5 |
| T3 | T1 | 8 |
| T4 | T2 | 2 |
| T5 | T2, T3 | 2 |
| T6 | T4 | 2 |
| T7 | T6 | 4 |
| T8 | T5 | 8 |
| T9 | T6, T7 | 2 |
- (1) 임계 경로(critical path)를 구하고 프로젝트의 최단 완료 기간을 구하시오. (10점)
- (2) 작업 T8과 작업 T9의 여유 시간(slack time)을 각각 구하시오. (단, 여유 시간은 최단 완료 기간을 어기지 않는 것을 전제로 해당 작업을 가장 빠르게 시작할 수 있는 시간(earliest start time)과 최대한 늦추어 시작할 수 있는 시간(latest start time)의 차이를 의미한다) (10점)
제4문 (20점)
다음은 인터넷 쇼핑몰 시스템 개발에 관한 사용자 요구사항이다. ‘포함’, ‘확장’, ‘일반화’ 관계를 이용하여 유스케이스 다이어그램(use case diagram)을 작성하시오. (20점)
○고객은 회원등록을 해야 하며, 회원등록을 할 때에는 반드시 실명확인을 한다.
○고객은 로그인을 한 후에 아래 기능을 이용할 수 있다.
○고객은 상품을 선택한다.
○고객이 상품을 결제할 때에는 계좌이체 또는 카드결제를 할 수 있다.
○고객은 상품의 배송상황을 조회할 수 있으며, 조회 후 배송상황을 출력할 수 있다.
○고객은 로그인을 한 후에 아래 기능을 이용할 수 있다.
○고객은 상품을 선택한다.
○고객이 상품을 결제할 때에는 계좌이체 또는 카드결제를 할 수 있다.
○고객은 상품의 배송상황을 조회할 수 있으며, 조회 후 배송상황을 출력할 수 있다.