[정처기 필기] 「1」 | 애플리케이션 설계 - (3.2) 객체지향, 객체지향 분석 및 설계

728x90

[정처기 필기] 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 기본서 (길벗알앤디)

728x90