정처기 실기1

topics 900-자격증
types 문제풀이 학습
contexts 자격증
tags #정처기 #실기

정처기 실기 1회

풀이 문제

https://chobopark.tistory.com/540
1-5 번멸망ㅋ
8,10, 12 ,13,17,18

개념

무결성 제약조건
https://inpa.tistory.com/entry/DB-%F0%9F%93%9A-%EB%AC%B4%EA%B2%B0%EC%84%B1-%EC%A0%9C%EC%95%BD-%EC%A1%B0%EA%B1%B4-%F0%9F%95%B5%EF%B8%8F-%EC%A0%95%EB%A6%AC

  • 도메인 : 속성값 원자값 , 속성도메인안에 있어야함
  • 개체
    • 서로다른 튜풀 같을 수 없음
    • 키는 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 객체 생성을 서브클래스에 위임. 상위 클래스는 인터페이스만 정의. ShapeFactorymakeCircle() / 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)최소 한 번 이상 실행되었는지를 확인하는 테스트 기준.
한번씩 다실행되게끔해야함