[정처기 필기] 「1」 | 애플리케이션 설계 - (3.2) 객체지향, 객체지향 분석 및 설계
> 「1」 소프트웨어 설계
- 요구사항 확인, 화면 설계, > 애플리케이션 설계, 인터페이스 설계
「2」 소프트웨어 개발
「3」 데이터베이스 구축
「4」 프로그래밍 언어 활용
「5」 정보시스템 구축 관리
1 소프트웨어 아키텍처
2 아키텍처 패턴
> 3 객체지향(Object-Oriented)
> 4 객체지향 분석 및 설계
5 모듈
6 공통 모듈
7 코드
8 디자인 패턴
3. 객체지향(Object-Oriented)
객체지향의 개요
개체(Entity)를 하나의 객체(Object)로 만들어, 조립하여 작성할 수 있는 기법
- 구조적 기법의 문제점(유지보수, 추가적인 요구사항에 대응, 재사용이 어려움)으로 인한 해결책
- 재사용, 확장, 빠르게 개발, 유지보수 쉬움
- 복잡한 구조를 단계적, 계층적으로 표현하고 멀티미디어 데이터, 병렬 처리 지원
- 현실 세계를 모형화, 쉽게 이해
- 객체(Object), 클래스(Class), 캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism), 연관성(Relationship)
객체(Object)
데이터와 함수를 묶어 캡슐화한 하나의 소프트웨어 모듈
- 데이터
: 객체가 가지고 있는 정보, 속성, 상태, 분류 등 나타냄
: == 속성, 상태, 변수, 상수, 자료구조
- 함수
: 객체가 수행하는 기능, 데이터를 처리하는 알고리즘
: 상태를 참조, 변경하는 수단, == 메서드, 서비스, 동작, 연산
객체의 특성
: 독립적으로 식별 가능한 이름
: 객체가 가질 수 있는 조건을 상태(State)라 하는데, 시간에 따라 변함
: 객체와 객체는 연관성에 의한 관계가 형성
: 반응할 수 있는 메시지의 집합을 행위라 하며, 객체는 행위의 특징을 나타낼 수 있음
: 일정한 기억장소를 가지고 있음
- 객체의 메서드는 다른 객체로부터 메시지를 받았을 때 정해진 기능을 수행
클래스(Class)
공통된 속성, 연산(행위)를 갖는 객체의 집합으로 객체의 타입(Type)을 의미
- 객체들의 속성과 연산을 정의하는 틀
- 데이터를 추상화하는 단위
- 클래스에 속한 객체를 인스턴스라 하며, 클래스로부터 새로운 객체를 생성하는 것을 인스턴스화라고 함
- 동일 클래스에 속하면 공통된 속성과 행위를 가지고 있음
- 최상위 클래스는 상위 클래스를 갖지 않는 클래스
- 슈퍼 클래스는 상위(부모) 클래스, 서브 클래스는 하위(자식) 클래스
캡슐화(Encapsulation)
데이터(속성)와 함수를 하나로 묶는 것
- 캡슐화된 객체는 인터페이스를 제외하고 정보 은닉되어, 외부 모듈의 변경으로 인한 파급 효과가 적음
- 재사용 용이
- 세부 내용을 모르므로, 인터페이스가 단순, 결합도 낮아짐
상속(Inheritance)
상위(부모) 클래스의 모든 속성과 연산을 하위(자식) 클래스가 물려받는 것
- 하위 클래스는 새로운 속성과 연산을 첨가할 수 있음
- 소프트웨어 재사용을 높이는 개념
- 다중 상속(Multiple Inheritance) : 두 개 이상의 상위 클래스를 상속받는 것, 계층 복잡, 상속 순서 추적 어려움
다형성(Polymorphism)
하나의 메시지에 대해 각각 객체가 가지고 있는 고유한 특성으로 응답할 수 있는 능력
- 객체들은 동일한 메소드명을 사용하며 같은 의미의 응답
- 두 개 이상의 서로 다른 클래스의 인스턴스들을 같은 클래스에 속한 인스턴스처럼 수행
- ex) '+' 연산자 : 숫자 클래스 덧셈, 문자 클래스 문자열의 연결
- ex) 오버로딩(Overloading) : 메서드의 이름은 같지만 인수를 받는 자료형과 개수가 달라 여러 기능 정의
- ex) 오버라이딩(Overriding) : 상위 클래스의 메서드와 같지만 메서드 안의 실행 코드를 달리하여 재정의
연관성(Relationship)
두 개 이상의 객체들이 상호 참조하는 관계
종류 | 의미 | 특징 |
is member of | 연관화(Association) | 2개 이상의 객체가 상호 관련되어 있음 |
is instance of | 분류화(Classfication) | 동일한 형의 특성을 갖는 객체를 모아 구성 |
is part of | 집단화(Aggregation) | 관련 있는 객체를 하나의 상위 객체로 구성 |
is a | 일반화(Generalization) | 공통적인 성질들로 추상화한 상위 객체를 구성 |
특수화 / 상세화(Specialization) | 상위 객체를 구체화하여 하위 객체로 를성 |
4. 객체지향 분석 및 설계
객체지향 분석의 개념
요구사항을 분석하여 클래스(객체), 속성, 연산, 관계를 정의하여 모델링하는 작업
- 비즈니스를 객체와 속성, 클래스와 멤버, 전체와 부분으로 나누어 분석
- 클래스, 객체, 속성, 연산들을 표현해서 문제를 모형화
- 객체는 클래스로부터 인스턴스화되고, 클래스를 식별하는 것이 목적
객체지향 분석의 방법론
- Rumbaugh(럼바우) 방법 : 가장 일반적, 객체 모델, 동적 모델, 기능 모델로 나누어 수행
- Booch(부치) 방법 : 미시적(Micro) 개발 프로세스와 거시적(Macro) 개발 프로세스를 모두 사용, 클래스와 객체를 분석, 식별하고 클래스의 속성과 연산 정의
- Jacobson 방법 : Use Case를 강조
- Coad와 Yourdon 방법 : E-R 다이어그램 사용
- Wirfs-Brock 방법 : 고객 명세서를 평가하여 설계까지 연속적으로 수행
럼바우(Rumbaugh)의 분석 기법
그래픽 표기법을 이용하여 모델링, == 객체 모델링 기법(OMT; Object-Modeling Technique), 객체 모델링 - 동적 모델링 - 기능 모델링 순서
- 객체 모델링(Object Modeling) : 정보 모델링, 객체의 식별 및 객체의 관계를 규정, 객체 다이어그램으로 표시
- 동적 모델링(Dynamic Modeling) : 상태 다이어그램(상태도) 이용, 시간의 흐름에 따른 동적인 행위 표현
- 기능 모델링(Functional Modeling) : 자료 흐름도(DFD) 이용, 자료 흐름을 중심으로 처리 과정 표현
객체지향 설계 원칙
== SOLID 원칙
단일 책임 원칙(SRP; Single Responsibility Principle) |
- 객체는 갖는 단 하나의 책임, 응집도 높고 결합도 낮게 |
개방-폐쇄 원칙(OCP; Open-Closed Principle) |
- 기존의 코드 변경하지 않고, 기능을 추가할 수 있도록 해야 함 - 공통 인터페이스를 묶어 캡슐화 |
리스코프 치환 원칙(LSP; Liskov Substitution Principle) |
- 자식 클래스는 최소한 부모 클래스에서 가능한 행위를 수행할 수 있어야 함 - 자식 클래스는 부모 클래스의 책임을 무시하거나, 재정의 하지 않고, 확장만 수행 |
인터페이스 분리 원칙(ISP; Interface Segregation Principle) |
- 자신이 사용하지 않는 인터페이스나 메서드와 의존관계를 맺거나 영향 받으면 안됨 - 인터페이스가 갖는 단 하나의 책임 |
의존 역전 원칙(DIP; Dependency Inversion Principle) |
- 추상성이 높은 클래스와 의존 관계를 맺어야 함 - 인터페이스를 활용하면 준수됨 |
출처 | <시나공> 정보처리기사 필기 2024 기본서 (길벗알앤디)
'💠기타 > 자격증' 카테고리의 다른 글
[정처기 필기] 「1」 | 애플리케이션 설계 - (3.4) 코드, 디자인 패턴 (1) | 2024.01.24 |
---|---|
[정처기 필기] 「1」 | 애플리케이션 설계 - (3.3) 모듈, 공통 모듈 (2) | 2024.01.24 |
[정처기 필기] 「1」 | 애플리케이션 설계 - (3.1) 소프트웨어 아키텍처, 아키텍처 패턴 (0) | 2024.01.23 |
[정처기 필기] 「1」 | 화면 설계 - (2.2) UI 상세 설계, HCI / UC / 감성공학 (1) | 2024.01.23 |
[정처기 필기] 「1」 | 화면 설계 - (2.1) 사용자 인터페이스, UI 설계 도구, 품질 요구사항 (1) | 2024.01.22 |