정보 처리 기사 24년 1회 1번 문제
2024. 7. 7. 17:21ㆍ자격증 연습/정보처리기사 실기 대비 - 문제풀이
1. 다음 Java 코드에서 알맞는 출력 값을 작성하시오.
class Connection {
// _inst = null 객체를 가리 키는 변수룰 null로 초기화, 객체 참조 없음
private static Connection _inst = null;
private int count = 0;
//인스턴스 변수(count) = 0으로 초기화, 외부 클래스 에서 참조하지 못하게 보호
static public Connection get() {
if(_inst == null) {
_inst = new Connection();
return _inst;
}
return _inst;
}
/* get 메서드() 만약 _inst 가 null 이면
인스턴스 connection을 생성 후 _inst 반환 만약 값을 가지고 있으면 _inst 반환 */
public void count() {
count++;
}
//count 메서드 count의 값을 후위증감
public int getCount() {
return count;
}
}
//get count() 메서드 count 를 반환
public class main {
public static void main(String[] args) {
Connection conn1 = Connection.get();
/*
connection.get() 호출 이 시점에서 _inst 가 null 이므로
Connection 인스턴스 생성, conn1 객체는 connrction 인스턴스를 참조중임
*/
conn1.count();
/*count 메서드 호출 호출이후 count의 값은 1 증감 count = 1 */
Connection conn2 = Connection.get();
/*
connection.get() 호출 이 시점에서 _inst 가
Connection 인스턴스를 가지고 있으므로 기존의 Connection 인스턴스를 그냥 반환
conn2 객체는 connrction 인스턴스를 참조중임
*/
conn2.count();
/* conn2 객체가 count 메서드 호출 다만 conn2 conenection 인스턴스를 참조하고 있음
호출이후 count의 값은 1 증감 count = 2 */
Connection conn3 = Connection.get();
/*
connection.get() 호출 이 시점에서 _inst 가
Connection 인스턴스를 가지고 있으므로 기존의 Connection 인스턴스를 그냥 반환
conn3 객체는 connrction 인스턴스를 참조중임
*/
conn3.count();
/*count 메서드 호출 호출이후 count의 값은 1 증감 count = 3 */
conn1.count();
/*count 메서드 호출 호출이후 count의 값은 1 증감 count = 4 */
System.out.print(conn1.getCount());
/*conn1.getCount()로 getCount() 메서드를 호출 기존 count를 반환 하므로 4*/
}
/*만약 싱글톤 패턴을 깨고 싶다면 Connection conn2 = new Connection.get(); 형태로
선언하면 새로운 인스턴스 Connection 생성으로 conn1 과 conn2 는 다른 인스턴스를 가르키게되어
싱글톤 패턴이 깨지게됨 + 에러도 덤 */
}
싱글톤 패턴 코드입니다. 싱글톤 패턴은 클래스의 객체는 단 한개만 생성하는 디자인 패턴 으로 클래스내의 객체가 단 한개이기 때문에 인스턴스 또한 한개입니다.
그렇기에 메인클래스의 객체 conn1 , conn2 , conn3 는 connection 클래스의 단일 인스턴스를 참조하는 객체이기 때문에 count() 메서드를 통해 모두 connection인스턴스의 변수 count의 값을 증가시키는 것입니다.
private int count = 0;
/*클래스 Connection의 인스턴수 변수 count 선언 */
'자격증 연습 > 정보처리기사 실기 대비 - 문제풀이' 카테고리의 다른 글
정보처리 기사 24년 1회 4번 문제 (0) | 2024.07.09 |
---|---|
정보처리기사 24년 1회 2번 문제 (0) | 2024.07.07 |
2022년 2회차 4번 (0) | 2023.07.21 |
[2023년 1회] 정보처리기사. 13번 문제 (0) | 2023.07.21 |
[2023년 1회] 정보처리기사. 3번문제 (0) | 2023.07.21 |