UTF-404

객체 지향 설계 본문

정보처리기사

객체 지향 설계

UTF-404 2024. 1. 26. 20:15
728x90

💡 객체 지향 이란?

➡️ 객체 지향은 실세계의 개체를 속성과 메서드가 결합한 형태의 객체로 표현하는 기법이다.

 

📌 객체 지향 구성요소

구성요소 설명
클래스
(Class)
∙ 특정 객체 내에 있는 변수와 메서드를 정의하는 일종의 틀
∙ 객체 지향 프로그래밍에서 데이터를 추상화하는 단위
∙ 하나 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현
∙ 속성은 변수의 형태로 행위는 메서드 형태로 선언
객체
(Object)
∙ 물리적, 추상적으로 자신과 다른 것을 식별 가능한 대상
∙ 클래스에서 정의한 것을 토대로 메모리에 할당됨
∙ 객체마다 각각의 상태와 식별성을 가짐
메서드
(Method)
∙ 클래스로부터 생성된 객체를 사용하는 방법
∙ 객체가 메시지를 받아 실행해야 할 객체의 구체적인 연산
∙ 전통적 시스템의 함수(Function) 또는 프로시저(Procedure)에 해당하는 연산기능
메시지
(Message)
∙ 객체 간 상호 작용을 하기 위한 수단
∙ 객체에게 어떤 행위를 하도록 지시하는 방법
∙ 객체 간의 상호 작용은 메시지를 통해 이루어짐
∙ 메시지는 객체에서 객체로 전달됨
인스턴스
(Instance)
∙ 객체 지향 기법에서 클래스를 통해 만든 실제의 실형 객체
∙ 클래스에 속산 각각의 객체
∙ 실제로 메모리상에 할당
속성
(Property)
∙ 한 클래스 내에 속한 객체들이 가지고 있는 데이터 값들을 단위별로 정의
∙ 성질, 분류, 식별, 수량, 현재 상태 등에 대한 표현 값

 

📌 객체 지향 기법

기법 설명
캡슐화
(Encapsulation)
∙ 서로 연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 기법
∙ 결합도가 낮아지고 재사용이 용이
∙ 인터페이스가 단순화됨
∙ 정보 은닉과 관계가 깊음
∙ 변경 발생 시 오류의 파급 효과가 적음
상속성
(Inheritance)
∙ 상위 클래스의 속성과 메서드를 하위 클래스에서 재정의 없이 물려받아 사용하는 기법
다형성
(Polymorphism)
∙ 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
∙ 상속받은 여러 개의 하위 객체들이 다른 형태의 특성을 갖는 객체로 이용될 수 있는 성질
∙ 오버로딩, 오버라이딩이 대표적
📍 오버로딩(Overloading) : 매개변수의 유형과 개수를 다르게 하여 같은 이름의 메서드를 여러 개 가지는 기법
📍 오버라이딩(Overriding) : 상위 클래스에서 정의한 일반 메서드의 구현을 하위 클래스에서 무시하고 재정의할 수 있는 기법
추상화
(Abstraction)
∙ 공통 성질을 추출하여 추상 클래스를 설정하는 기법
∙ 종류로는 과정 추상화, 자료 추상화, 제어 추상화가 있음
정보 은닉
(Information
Hiding)
∙ 코드 내부 데이터와 메서드를 숨기고 공개 인터페이스를 통해서만 접근이 가능하도록 하는 코드 보안 기술
∙ 필요하지 않은 정보는 접근할 수 없도록 하여 한 모듈 또는 하부 시스템이 다른 모듈의 구현에 영향을 받지 않게 설계됨(고려되지 않은 영향인 Side-Effect들을 최소화)
∙ 모듈 내부의 자료 구조와 접근 동작들에만 수정을 국한하지 않기 때문에 요구사항 등 변화에 따른 수정이 가능
∙ 모듈 사이의 독립성을 유지하는 데 도움을 줌
∙ 설계에서 은닉되어야 할 기본 정보로는 IP 주소와 같은 물리적 코드, 상세 데이터 구조 등이 존재
관계성
(Relationship)
∙ 두개 이상의 엔티티 형에서 데이터를 참조하는 관계를 나타내는 기법
종류로는 연관화, 분류화, 집단화, 일반화, 특수화가 있음 ( 아래의 표 살펴보기!!)

 

📍 관계성(Relationship) 종류에 대해 자세히 알아보기

연관화 ∙ is-member-of 관계
∙ 클래스와 객체의 참조 및 이용관계
∙ 같은 계층에 속하는 클래스들 사이의 상호 의존성을 보여주는 비계층적 관계성을 나타냄
집단화 ∙ is part of 관계, part-whole 관계
∙ 서로 관련 있는 여러 개의 객체를 묶어 한 개의 상위 객체를 만드는 특징이 있음
∙ 일반화와 달리 상위 클래스의 성질들이 하위 클래스로 상속되지는 않음
분류화 ∙ is-instance-of 관계
∙ 공통된 속성에 의해 정의된 객체 구성원들의 인스턴스
일반화 ∙ is-a 관계
∙ 클래스들 간의 개념적인 포함 관계
∙ 상위 클래스의 특성을 하위 클래스가 상속받음
특수화 ∙ is-a 관계
∙ 상위 클래스의 특성들을 상속받으면서 하위 클래스에서 나름대로 수정을 가하고 자기 자신의 고유한 특성을 갖는 관계

 

📌 객체 지향 설계 원칙(SOLID)

원칙 설명
단일 책임의 원칙
(Single Responsibility
Principle)
∙ 하나의 클래스는 하나의 목적을 위해서 생성되며, 클래스가 제공하는 모든 서비스는 하나의 책임을 수행하는 데 집중되어 있어야 한다는 원칙
∙ 객체 지향 프로그래밍의 5원칙 중 나머지 4원칙의 기초 원칙
개방 폐쇄 원칙
(Open Close Principle)
∙ 소프트웨어의 구성요소(컴포넌트, 클래스, 모듈, 함수)는 확장에는 열려있고, 변경에는 닫혀있어야 한다는 원칙
리스코프 치환의 원칙
(Liskov Substitution
Principle)
∙ 서브 타입(상속받은 하위 클래스)은 어디서나 자신의 기반 타입(상위 클래스)으로 교체할 수 있어야 한다는 원칙
인터페이스 분리의 원칙
(Interface Segregation
Principle)
∙ 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원칙
∙ 클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받아서는 안된다는 원칙
의존성 역전의 원칙
(Dependency Inversion
Principle)
∙ 실제 사용 관계는 바뀌지 않으며, 추상을 매개로 메시지를 주고받음으로써 관게를 최대한 느슨하게 만드는 원칙

 

📌 객체 지향 분석(OOA; Object Oriented Analysis)의 개념

  • 객체 지향 분석은 사용자의 요구사항을 분석하여 요구된 문제와 관련된 모든 클래스(객체), 속성과 연산, 관계 등으로 나누어서 분석하는 기법이다.
  • 데이터와 행위를 하나로 묶어 객체를 정의하고 추상화시킨다.
  • 코드 재사용에 의한 프로그램 생산성 향상 및 요구에 따른 시스템의 쉬운 변경이 가능하다.

📌 객체 지향 방법론 종류

종류 만든이 설명
OOSE
(Object Oriented
Software
Engineering)
야콥슨
(Jacobson)
∙ 유스케이스에 의한 접근 방법으로 유스케이스를 모든 모델의 근간으로 활용되는 방법론
∙ 분석, 설계, 구현 단계로 구성
∙ 기능적 요구사항 중심의 시스템
OMT
(Object Modeling
Technology)
럼바우
(Rumbaugh)
∙ 그래픽 표기법을 이용하여 소프트웨어 구성요소를 모델링하는 방법론
분석 절차는 객체 모델링 ➡️ 동적 모델링 ➡️ 기능 모델링 순서로 진행 (아래 표에서 자세히)
OOD
(Object Oriented
Design)
부치
(Booch)
∙ 설계 문서화를 강조하여 다이어그램 중심으로 개발하는 방법론 
∙ 분석과 설계의 분리가 불가능
∙ 분석하는 데 이용된 객체 모델의 설계 시 적용

 

📍 분석 절차 자세히 보기!!!!

객체 모델링
(Object
Modeling)
∙ 정보 모델링이라고도 하며, 시스템에서 요구하는 객체를 찾고 객체 간의 관게를 정의하는 모델링
∙ 가장 중요하며 선행되어 진행
∙ 객체 다이어그램을 활용하여 표현
동적 모델링
(Dynamic
Modeling)
∙ 시간의 흐름에 따라 객체들 사이의 제어 흐름, 동작 순서 등의 동적인 행위를 표현하는 모델링
∙ 상태 다이어그램을 활용하여 표현
기능 모델링
(Functional
Modeling)
∙ 프로세스들의 자료 흐름을 중심으로 처리 과정을 표현하는 모델링
∙ 자료 흐름도(DFD)를 활용하여 표현

 

  • 추가적으로 코든-요든(Coad-Yourdon) 방법론은 E-R 다이어그램을 사용하여 객체의 행위를 모델링하며, 객체 식별, 구조 식별, 주체 정의, 속성 및 관계 정의, 서비스 정의 등의 과정으로 구성되는 객체 지향 분석 방법이다.
  • 워프-브록(Wirfs-Brock) 방법론은 분석과 설계 간의 구분이 없고 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행하는 분석 방법이다.
728x90

'정보처리기사' 카테고리의 다른 글

시스템 아키텍처와 인터페이스 시스템  (0) 2024.01.29
디자인 패턴 알아보기!!  (2) 2024.01.28
모듈화(2)  (0) 2024.01.25
모듈화(1)  (0) 2024.01.23
재사용과 공통 모듈의 개념!!  (0) 2024.01.23