객체지향(Object-Oriented)
- 프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 수많은 '객체'라는 기본 단위로 나누고 이 객체들의 상호작용으로 서술하는 방식
- 소프트웨어의 재사용 및 확장이 용이하고 고품질의 소프트웨어를 빠르게 개발할 수 있고 유지보수가 쉬움
- 객체지향은 현실 세계를 모형화하므로 사용자와 개발자가 쉽게 이해할 수 있다.
객체(Object)
- 데이터와 데이터를 처리하는 함수를 묶어 놓은 하나의 소프트웨어 모듈
- 독립적으로 식별 가능한 이름을 가지고 있음
- 객체가 가질 수 있는 조건을 상태라고 하는데, 일반적으로 상태는 시간에 따라 변함
- 객체와 객체는 상호 연관성에 의한 관계가 형성
- 객체가 반응할 수 있는 메시지의 집합을 행위라고 하며, 객체는 행위의 특징을 나타냄
- 객체는 일정한 기억장소를 갖고 있음
클래스(Class)
- 공통된 속성과 연산을 갖는 객체의 집합으로, 객체의 일반적인 타입을 의미
- 각각의 객체들이 갖는 속성과 연산을 정의하고 있는 틀
- 객체지향 프로그래밍에서 데이터를 추상화하는 단위
메소드(method)
- 멤버 함수라고도 하며, 객체지향 프로그래밍 언어에서 클래스 혹은 객체에 소속된 서브루틴을 가리킴
- 데이터와 멤버 변수에 대한 접근 권한을 가짐
캡슐화(Encapsulation)
- 데이터와 데이터를 처리하는 함수를 하나로 묵는 것을 의미
- 캡슐화된 객체들은 재사용이 용이함
- 캡슐화된 객체는 객체 내의 응집도는 높아지고, 객체 간의 결합도는 낮아짐
상속(Inheritance)
- 이미 정의된 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것
- 상위클래스의 속성과 기능을 그대로 이어받아 사용할 수 있게하고 기능의 일부분을 변경해야 할 경우 상속받은 하위클래스에서 해당 기능만 다시 수정(정의)하여 사용할 수 있게 하는 것
다형성(Polymorphism)
- 메시지에 의해 객체가 연산을 수행하게 될 때 하나의 메시지에 대해 각각의 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력을 의미
- 여러 가지 형태를 가지고 잇다는 의미로 하나의 메시지에 대해 여러 가지 형태의 응답이 있다는 것을 의미
공통 모듈
- 여러 프로그램에서 공통적으로 사용할 수 있는 모듈을 의미
- 자체적으로 컴파일 가능, 다른 프로그램에서 재사용 가능
- 여러 기능 및 프로그램에서 공통으로 사용할 수 있는 모듈(예-날짜 처리를 위한 유틸리티 모듈 등)
공통모듈 원칙
- 정확성 : 해당 기능이 실제 시스템 구현시 필요한지 아닌지를 알 수 있도록 정확하게 작성
- 명확성 : 해당 기능에 대해 일관되게 이해하고 한가지로 해석될 수 있도록 작성
- 완전성 : 시스템이 구현될 때 필요하고 요구되는 모든 것을 기술
- 일관성 : 공통 기능 간에 상호 충돌이 없도록 작성
- 추적성 : 공통 기능에 대한 요구사항 출처와 관련 시스템 등의 유기적 관계에 대한 식별이 가능하도록 작성
효과적인 모듈 설계 방안
- 결합도는 줄이고 응집도는 높여서 모듈의 독립성과 재사용성을 높임
- 모듈의 제어 영역안에서 그 모듈의 영향 영역을 유지
- 복잡도와 중복성을 줄이고 일관성을 유지
- 유지보수가 용이해야 함
- 하나의 입구와 하나의 출구를 갖도록 해야 함
코드(Code)
- 컴퓨터를 이용하여 자료를 처리하는 과정에서 분류·조합 및 집계를 용이하게 하고, 특정 자료의 추출을 쉽게 하기 위해서 사용하는 기호
코드의 종류
1. 순차 코드
- 자료의 발생 순서, 크기 순서 등 일정 기준에 따라서 최초의 자료부터 차례로 일련번호를 부여하는 방법
2. 블록코드
- 코드화 대상 항목 중에서 공통성이 있는 것끼리 블록으로 구분하고, 각 블록 내에서 일련번호를 부여하는 방법
3. 10진 코드
- 코드화 대상 항목을 0~9까지 10진 분할하고, 다시 그 각각에 대하여 10진 분할하는 방법을 필요한 만큼 반복하는 방법
4. 그룹 분류 코드
- 코드화 대상에 대한 분류 기준에 따라 대분류, 중분류, 소분류로 나누고 각 분류 안에서 번호를 순서적으로 부여하는 방법
5. 연상 코드
- 코드화 대상 항목의 명칭이나 약호와 관계있는 숫자나 문자, 기호를 이용하여 코드를 부여하는 방법
6. 표의 숫자 코드
- 코드화 대상 항목의 성질(길이, 넓이, 부피, 지름, 높이 등)의 물리적 수치를 그대로 코드에 적용하는 방법
7. 합성 코드
- 필요한 기능을 하나의 코드로 수행하기 어려운 경우 2개 이상의 코드를 조합하여 만드는 방법
디자인 패턴(Design Pattern)
- 디자인 패턴은 1995년 GoF(Gang of Four)라고 불리는 에릭 감마(Erich Gamma), 리차드 헬름(Richard Helm), 랄프 존슨(Ralph Johnson), 존 블리시디스(John Vissides)가 처음으로 구체화 및 체계화 함
- 소프트웨어 디자인에서 특정 맥락에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책
- GoF의 디자인 패턴은 유형에 따라 생성 패턴 5개, 구조 패턴 7개, 행위 패턴 11개 총 23개의 패턴으로 구성
생성 패턴(Creational Pattern)
※ 객체의 생성과 관련된 패턴
- 추상 팩토리(Abstract Factory)
- 빌더(Builder)
- 팩토리 메소드(Factory Method)
- 프로토타입(Prototype)
- 싱글톤(Singleton)
구조 패턴(Structural Pattern)
※ 클래스나 객체들을 조합하여 더 큰 구조로 만들 수 있게 해주는 패턴
- 어댑터(Adapter)
- 브리지(Bridge)
- 컴포지트(Composite)
- 데코레이터(Decorator)
- 퍼싸드(Facade)
- 플라이웨이트(Flyweight)
- 프록시(Proxy)
행위 패턴(Behavioral Pattern)
※ 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의 하는 패턴
- 책임 연쇄(Chain of Responsibility)
- 커맨드(commnad)
- 인터프리터(Interpreter)
- 반복자(lterator)
- 중재자(Mediator)
- 메멘토(Memento)
- 옵서버(Observer)
- 상태(state)
- 전략(Strategy)
- 템플릿 메소드(Template Method)
- 방문자(Visitor)
'1. 자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 필기] 2과목 소프트웨어 개발 - 1 (0) | 2020.07.31 |
---|---|
[정보처리기사 필기] 1과목 소프트웨어 설계 - 4 (0) | 2020.07.31 |
[정보처리기사 필기] 1과목 소프트웨어 설계 - 2 (0) | 2020.07.27 |
[정보처리기사 필기] 1과목 소프트웨어 설계 - 1 (0) | 2020.07.25 |
[정보처리기사 필기] 20년06월06일 시험문제 리뷰를 통한 시험준비[5과목] (0) | 2020.07.24 |