정처기 실기1
| topics | 900-자격증 |
| types | 문제풀이 학습 |
| contexts | 자격증 |
| tags | #정처기 #실기 |
정처기 실기 1회
풀이 문제
https://chobopark.tistory.com/540
1-5 번멸망ㅋ
8,10, 12 ,13,17,18
개념
- 도메인 : 속성값 원자값 , 속성도메인안에 있어야함
- 개체
- 서로다른 튜풀 같을 수 없음
- 키는 unique and not null
- 참조 : 외래키는 부모의 특정 기본키와 같거나 없으면 Null
CRC
- 오류 검출 코드
ㄱ. 컴포넌트 웨어 ㄴ. 유즈웨어 ㄷ. 셔블웨어 ㄹ. 스캐어 웨어 ㅁ. 안티 스파이 웨어 ㅂ. 네트웨어 ㅅ. 그룹웨어 ㅇ. 애드웨어
ARP ip > mac , 앞에 R붙으면 reverse
차수 : degree : 속성의 개수
카디널리티 : cardinality : 튜플의 개수
🧩 1️⃣ 응집도 (Cohesion)
모듈(함수나 클래스 등) 내부 구성요소들이 서로 얼마나 관련된 기능을 수행하는가
| 단계 | 응집도 종류 | 설명 | 예시 |
|---|---|---|---|
| 1. 우연적 응집 (Coincidental) | 관련 없는 기능들이 우연히 한 곳에 모임 | printReport() 안에 계산, 입출력, DB 연결 다 있음 |
|
| 2. 논리적 응집 (Logical) | 비슷한 성격의 기능을 하나로 묶음 | 하나의 함수가 “파일 읽기/쓰기/삭제” 중 어떤 일을 할지 flag로 결정 | |
| 3. 시간적 응집 (Temporal) | 특정 시점(초기화 등)에 실행되는 기능을 모음 | 시스템 시작 시 여러 초기화 작업을 한 함수에 몰아넣음 | |
| 4. 절차적 응집 (Procedural) | 순서대로 실행되긴 하지만, 서로 다른 기능 | “입력 → 검증 → 출력”이 한 함수 안에 들어있음 | |
| 5. 통신적 응집 (Communicational) | 같은 데이터(변수)를 공유하는 기능 묶음 | 동일 데이터 구조를 갱신하고 출력하는 기능이 함께 있음 | |
| 6. 순차적 응집 (Sequential) | 한 기능의 출력이 다음 기능의 입력으로 사용 | 데이터를 읽고, 처리하고, 결과를 저장하는 과정 | |
| 7. 기능적 응집 (Functional) 🟢 | 하나의 명확한 기능만 수행 | calculateTax(), sendEmail() 등 |
➡️ 응집도는 1 → 7로 갈수록 좋음.
가장 좋은 건 기능적 응집(Functional Cohesion).
🔗 2️⃣ 결합도 (Coupling)
모듈 간의 상호 의존 정도
즉, 한 모듈이 다른 모듈의 내부에 얼마나 많이 관여하는가
| 단계 | 결합도 종류 | 설명 | 예시 |
|---|---|---|---|
| 1. 내용 결합 (Content Coupling) ❌ | 한 모듈이 다른 모듈의 내부 코드/변수를 직접 참조 | A 모듈이 B의 지역 변수나 내부 함수를 직접 수정 | |
| 2. 공통 결합 (Common Coupling) | 전역 변수(global variable)를 공유 | 여러 모듈이 전역 변수 g_data를 함께 사용 |
|
| 3. 외부 결합 (External Coupling) | 외부 시스템/파일/프로토콜에 의존 | 공통 포맷 파일, 인터페이스 이름 등 강하게 연결 | |
| 4. 제어 결합 (Control Coupling) | 한 모듈이 다른 모듈의 동작을 제어(flag 전달) | 함수 호출 시 mode=1 주면 특정 로직 수행 |
|
| 5. 스탬프 결합 (Stamp Coupling) | 데이터 구조(전체 객체)를 전달하지만 일부만 사용 | 구조체 전체를 넘기는데, 내부 필드 몇 개만 사용 | |
| 6. 데이터 결합 (Data Coupling) 🟢 | 필요한 데이터만 인자로 전달 | sum(a, b) 처럼 단순 값만 주고받음 |
|
| 7. 메시지 결합 (Message Coupling) 🟢 | 객체 간 메시지나 인터페이스로만 통신 | OOP에서 obj.send(message) 방식 |
➡️ 결합도는 1 → 7로 갈수록 좋음.
좋은 프로그램일수록 데이터 결합 / 메시지 결합 형태를 가짐.
| 분류 | 키워드 | 대표 개념 |
|---|---|---|
| 생성 패턴 | 객체 생성 방식 제어 | 인스턴스화 로직 캡슐화 |
| 구조 패턴 | 클래스/객체 조합 구조화 | 인터페이스 연결, 기능 확장 |
| 행위 패턴 | 객체 상호작용 & 역할 분담 | 알고리즘 교체, 이벤트 처리 |
🧱 1️⃣ 생성(Creational) 패턴
객체를 ‘어떻게 만들지’(생성 방식) 에 초점을 둔 패턴들
| 패턴명 | 설명 | 예시 |
|---|---|---|
| Singleton | 단 하나의 인스턴스만 생성되도록 보장. 전역 접근점 제공. | 설정 관리 객체, 로그 관리자 |
| Factory Method | 객체 생성을 서브클래스에 위임. 상위 클래스는 인터페이스만 정의. | ShapeFactory → makeCircle() / makeSquare() |
| Abstract Factory | 관련 객체군을 통째로 생성할 수 있는 인터페이스 제공. | “GUIFactory” → Windows / Mac 테마 |
| Builder | 복잡한 객체를 단계별로 조립해서 생성. | HTML 문서 빌더, JSON 쿼리 빌더 |
| Prototype | 기존 객체를 복제(clone)해서 새 객체 생성. | 문서 템플릿 복제, 게임 캐릭터 복제 |
🧩 2️⃣ 구조(Structural) 패턴
클래스나 객체를 조합하는 구조 를 다룸
| 패턴명 | 설명 | 예시 |
|---|---|---|
| Adapter | 서로 다른 인터페이스를 호환시킴. | 220V → 110V 어댑터 / API 호환 클래스 |
| Bridge | 구현부와 추상부를 분리해 독립적으로 확장. | 그래픽 API (OpenGL vs DirectX) |
| Composite | 트리 구조로 객체를 묶어 계층 구조 표현. | 폴더-파일 구조 |
| Decorator | 객체에 기능을 동적으로 추가. | 커피에 시럽 추가처럼 기능 확장 |
| Façade | 복잡한 서브시스템을 단순한 인터페이스로 묶음. | Computer.start() → 내부적으로 CPU, Memory, Disk 제어 |
⚙️ 3️⃣ 행위(Behavioral) 패턴
객체 간의 상호작용과 책임 분담 에 초점을 둠
| 패턴명 | 설명 | 예시 |
|---|---|---|
| Strategy | 알고리즘을 런타임에 교체 가능하게 캡슐화. | 정렬 전략 선택 (QuickSort vs MergeSort) |
| Template Method | 상위 클래스가 알고리즘 골격 정의, 하위 클래스가 세부 구현. | 추상 클래스의 process() 안에서 stepA(), stepB() 오버라이드 |
| Observer | 한 객체의 상태 변화 → 관련 객체들에 자동 통보. | 이벤트 리스너, MVC의 View 업데이트 |
| State | 객체 상태에 따라 행동이 바뀌게 함. | 문 상태(열림/닫힘)에 따른 행동 변화 |
| Command | 요청을 객체로 캡슐화하여 실행/취소/저장 가능. | 버튼 클릭 → Undo/Redo 기능 |
문장 커버리지
프로그램의 모든 문장(Statement) 이 최소 한 번 이상 실행되었는지를 확인하는 테스트 기준.
한번씩 다실행되게끔해야함