204. 객체지향의 특성
- 캡슐화 Encapsulation
- 정보은닉 Information Hiding
- 상속 Inheritance
- 추상화 Abstraction
- 다형성 Polymorphism
205. 캡슐화
- Encapsulation
- 속성과 기능을 하나로 결합하여 객체로 구성
- 클래스 내부의 동작을 모르더라도 클래스가 제공하는 메서드를 사용해 클래스의 기능을 사용
- 캡슐화를 통해 정보 은닉 Information Hiding이 가능
208. 추상화
- Abstraction
- 실체에서 공통되는 속성이나 관심 있는 부분만 추출하여 모델링 하는 개념
- 공통 성질을 추출하여 슈퍼클래스로 설정
210. 다형성
- Polymorphism
- 동일한 이름의 오퍼레이션(메소드)이 각 클래스마다 다른 사양으로 정의될 수 있다는 것
- 메시지에 의해 객체가 연산을 수행하게 될 때 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
211. 다형성의 2가지 기법
구분 | 오버로딩 Overloading | 오버라이딩 Overriding |
개념 | 같은 클래스 또는 상속된 클래스에서 동일한 이름의 메소드 작성 | 하위 클래스에서 상위 클래스와 동일한 이름의 메소드 작성 |
상속 | 불필요 | 반드시 상속관계 |
목적 | 의미적으로 동일한 함수를 직관적인 이름으로 사용 | 위 클래스의 메소드를 재정의하여 새로운 기능으로 재작성 |
조건 | 같은 이름 다른 파라미터 개수 / 다른 파라미터 자료형 |
같은 이름 같은 파라미터 개수 같은 파라미터 자료형 동일한 리턴값 |
바인딩 | 정적 바인딩 컴파일 시간에 결정 |
동적 바인딩 실행 시간에 결정 |
213. 클래스 다이어그램의 화살표
- 일반화 관계 : 상속관계, 하위 클래스에서 시작해서 화살표가 상위 클래스를 향함
- 실체화 관계 : 구현관계, 시작점에 있는 클래스가 기능을 구현하는 구현 클래스이고 화살표가 향하는 곳이 구현해야할 메소드를 갖고 있는 인터페이스
- 의존 관계 : 객체가 생성되고 사용하는 관계, 객체를 생성해서 사용하는 클래스에서 객체화되는 클래스
- 연관 관계 : 필드로 다른 객체를 참조하는 관계
214. 클래스 다이어그램의 표현
- 인터페이스 / 추상클래스 : 이름 부분이 이탤릭체
- 멤버변수(hp)가 있으면 인터페이스가 아님
- 추상 클래스의 특성
- 객체를 생성할 수 없음
- 선언된 추상메소드를 구현한 하위 클래스에서 객체 생성이 가능
215. 오버라이딩
- 상속된 클래스에서 상위 클래스의 메소드를 재정의하는 클래스 다이어그램
- 클래스 다이어그램에서 이탤릭으로 되어 있는 메소드는 오버라이딩 되어야 함 : attack() 메소드는 Medic, Soldier 클래스에서 각각 다른 동작으로 구현될 것임을 예상할 수 있
222. 언어의 구분
- 컴파일 언어 (컴파일 방식)
- 고급 언어를 기계어로 번역한 후 실행
- 실행에 필요한 정보가 컴파일 시간에 계산되어 실행 후 속도가 빠름
- 언어의 종류 : FORTRAN, PASCAL, C, C#
- 스크립트 언어 (인터프리터 방식)
- 고급 언어를 명령어 단위로 하나씩 번역하고 실행
- 프로그램 실행 시 계산
- 언어의 종류 : JavaScript, PROLOG, LISP, SNOBOL, Basic, Python, PHP
- 혼합방식
- 고급 언어를 컴파일하여 중간 언어로 변환한 후 인터프리터에 의해 번역을 실행
- 언어의 종류 : Java
223. AOP
- 객체를 핵심과 횡단 관심사로 분리, 횡단 관심사를 관점 모듈로 정의하여 핵심과 엮어서 처리하도록 지원하는 프로그래밍 기법
- 핵심 관심사 : 프로그램을 작성하려는 핵심 가치와 목적이 드러난 관심 영역
- 횡단 관심사 : 로깅과 트랜잭션, 인증처리 등 시스템 공통 처리 영
229. 증감연산자와 반복문
int a = new int[3];
for (int i = 0, j = 0; i < a.length ; i++) {
a[i] = ++j;
System.out.print(a[i] + ", ");
}
- 반복문과 배열, 전위증감연산자를 알고 있는지에 대해 묻는 문제
- a는 int 타입 3개로 선언되어, a.length = 3이고, i는 0부터 3보다 작을 때까지 반복되므로, i는 0, 1, 2까지 증가
- j는 0으로 초기화되어 있고, a[i]에 할당될 때 "전위증가연산자"에 의해 1,2,3으로 증가하면서 할당
- 전위 증감 연산자
- 표기법 : ++j
- 의미 : j = j + 1
230. 증감연산자
int a = 0;
System.out.print(a++);
System.out.print(", ", ++a);
- 후위 증감 연산자는 연산 이후 (다음 라인 또는 세미콜론(;)) 이후에 반영
- 첫번째 출력문의 값은 0
- 두번째 출력문에서는 a 값이 1로 증가되어 있음
- 전위 증감 연산자는 연산 수행 즉시 반영
- 두번째 출력문에서 a 값은 2로 출력
231. 논리연산자
- && 연산 AND : 양쪽 모두 true 일 때만 true, 아닌 경우 false
- || 연산 OR : 한쪽만 true 일 때 true, 양쪽 모두 false일 경우만 false
- ! 연산 NOT : true → false, false → true
232. 비트연산 : 10진수일 경우 2진수로 변환 후 계산
연산자 | 기능 | 설명 |
& | AND | 두 개의 비트가 모두 1일 때 1을 반환, 아닐 경우 0 |
| | OR | 두 개의 비트 중 하나라도 1이면 1을 반환, 아닐 경우 0 |
^ | XOR | 두 개의 비트가 서로 다른 경우 1을 반환, 같은 경우 0 |
~ | 단항 연산자로서 피연자의 모든 비트를 반전 | 0에서 1로, 1에서 0으로 반전시키는 연산 |
≪ | 피연산자의 비트 열을 왼쪽으로 이동 | |
≫ | 피연산자의 비트 열을 오른쪽으로 이동 |
234. 비선형 자료 구조
- 트리 : 일반 트리, 이진 트리
- 그래프 : 방향 그래프, 무방향 그래프
238. 스택의 출력
- 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 및 후입 선출 구조
- 스택의 연산
- top() : 스택의 가장 윗 데이터를 반환, 스택이 비었을 경우 이 연산은 정의 불가 상태
- pop() : 스택의 가장 윗 데이터를 삭제, 스택이 비었을 경우 이 연산은 정의 불가 상태
- push() : 스택의 가장 윗 데이터로 top이 가리키는 자리 위에 (top = top + 1) 메모리를 생성, 데이터 x를 넣음
- 3empty() : 스택이 비었다면 1을 반환, 그렇지 않다면 0을 반환
242. 원형 큐의 상태
- Empty 상태
- 코드 : rear == front
- Full 상태
- 코드 : (rear + 1) % MAX == front
243. 트리 순회 방식 : (Root)를 언제 순회하느냐에 따라 구분
- 전위순회 Pre-Order : (Root), Left, Right
- 중위순회 In-Order : Left, (Root), Right
- 후위순회 Post-Order : Left, Right, (Root)
244. 트리의 구성
- 루트 노드 root node : 부모가 없는 노드, 트리는 하나의 루트 노드만을 가짐
- 단말 노드 leaf node : 자식이 없는 노드
- 내부 노드 internal node : 루트나 단말 노드가 아닌 노드
- 링크 link : 노드를 연결하는 선, edge, branch
- 형제 sibling : 같은 부모를 가지는 노드
- 노드의 크기 size : 자신을 포함한 모든 자손 노드의 개수
- 노드의 깊이 depth : 루트에서 어떤 노드에 도달하기 위해 거쳐야 하는 간선의 수
- 노드의 레벨 level : 트리의 특정 깊이를 가지는 노드의 집합
- 노드의 차수 degree : 부(하위) 트리 개수 혹은 간선의 수, 각 노드가 가진 가지의 수
- 트리의 차수 degree of tree : 트리의 최대 차수, 노드의 차수 중 가장 큰 차수의 의미
- 트리의 높이 height : 루트 노드에서 가장 깊숙히 있는 노드의 깊이
245. 트리의 차수
- 가장 많은 자식을 가진 노드의 자식의 수
246. 이진트리
- 포화 이진트리 full binary tree
- 모든 레벨에서 노드들이 모두 채워져 있는 트리
- 완전 이진트리 complete binary tree
- 높이 : log₂N
- 마지막 레벨을 제외하고 노드가 모두 채워져 있는 트리
- 편향 이진트리 Skewed binary tree
- 높이 : N-1
- 트리의 노드가 왼쪽이나 오른쪽으로 한쪽으로만 노드가 있는 트리
247. 이진탐색트리
- 검색을 위해 사용
- 왼쪽 자식 노드 < 부모노드 < 오른쪽 자식 노드
- 왼쪽 자식 노드가 부모노드보다 작아야 함 : 왼쪽 자식 노드 < 부모노드
- 오른쪽 자식 노드는 부모노드보다 커야 함 : 오른쪽 자식 노드 > 부모노드
248. 이진탐색트리
- 검색을 위해 사용
- 왼쪽 자식 노드 < 부모노드 < 오른쪽 자식 노드
- 왼쪽 자식 노드가 부모노드보다 작아야 함 : 왼쪽 자식 노드 < 부모노드
- 오른쪽 자식 노드는 부모노드보다 커야 함 : 오른쪽 자식 노드 > 부모노드
250. 그래프의 특징
- 무방향 그래프 UnDirected Graph
- 정점과 정점을 연결하는 간선에 방향성이 없는 그래프
- 최대 edge 수 : 정점(V)이 n개 있다면, 최대 간선(E) = n(n-1)/2
- 방향 그래프 Directed Graph
- 정점과 정점을 연결하는 선에 방향이 있는 그래프
- 최대 edge 수 : 두 정점에 대하여 방향이 다른 두 개의 간선을 연결할 수 있음, 최대 간선(E) = n(n-1) → 무 방향 그래프보다 2배 많음
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 필기] 기출문제 - 301 ~ 350. 오답노트 (1) | 2025.03.07 |
---|---|
[정보처리기사 필기] 기출문제 - 251 ~ 300. 오답노트 (0) | 2025.03.06 |
[정보처리기사 필기] 기출문제 - 151 ~ 200. 오답노트 (2) | 2025.03.04 |
[정보처리기사 필기] 기출문제 - 101 ~ 150. 오답노트 (3) | 2025.03.03 |
[정보처리기사 필기] 기출문제 - 051 ~ 100. 오답노트 (1) | 2025.02.28 |