본문 바로가기

Study/정보처리기사

정보처리기사 실기 4장. 서버 프로그램 구현_2

4-4. 객체지향 (Object-Oriented)

• 객체지향

   각 요소들을 객체로 만든 후, 객체들을 조립해서 소프트웨어를 개발하는 기법

      ‣ 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택

      ‣ 소프트웨어의 재사용 및 확장 용이

      ‣ 고품질의 소프트웨어를 빠르게 개발

      ‣ 유지보수가 쉬움

 

• 객체지향의 구성 요소 : 객체, 클래스, 메시지

  • 1. 객체 (Object) 

         데이터와 이를 처리하기 위한 함수를 묶어 놓은 소프트웨어 모듈

 

데이터
(속성, 상태, 변수, 상수, 자료구조)
객체가 가지고 있는 정보
속성, 상태, 분류 등
함수
(메소드, 서비스, 동작, 연산)
객체가 상태를 참조하거나 변경하는 수단
객체가 수행하는 기능으로 데이터를 처리하는 알고리즘

 

  • 2. 클래스 (Class)

         공통된 속성과 연산을 갖는 객체의 집합

            ‣ 하나 이상의 유사한 객체를 묶어서 하나의 공통된 특성을 표현한 것

            ‣ 각각의 객체들이 갖는 속성과 연산을 정의하고 있는 틀

            ‣ 데이터를 추상화하는 단위

            ‣ 인스턴스(Instance) : 클래스에 속한 각각의 객체

 

  • 3. 메시지 (Message)

         객체들 간의  상호작용에 사용되는 수단

            ‣ 객체의 동작이나 연산을 일으키는 외부의 요구 사항

 

 

• 객체지향의 특징 : 캡슐화, 상속, 다형성, 연관성

  • 1. 캡슐화 (Encapsulation)

         외부에서의 접근을 제한하기 위해 인터페이스를 제외한 세부 내용을 은닉하는 것

            ‣ 외부 모듈의 변경으로 인한 파급 효과가 적음

            ‣ 객체끼리 메시지를 주고 받을 때, 상대 객체의 세부 내용은 알 필요가 없음

               → 인터페이스 단순, 객체간의 결합도 감소

 

✓ 캡슐화와 정보은닉

      캡슐화는 관련된 요소들을 묶어 외부와 내부를 구별해주는 장치로, 데이터와 함수를 묶어주는 장치

      정보은닉은 캡슐 내 세부 요소들에 대한 세부 구현사항을 외부로에 숨기는 장치로, 데이터와 함수를 내부에 숨기는 장치

      캡슐화가 되어있다고 해서 반드시 정보 은닉이 되는 것은 아님

 

  • 2. 상속 (Inheritance)

         상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것

            ‣ 하위 클래스는 물려받은 속성과 연산을 즉시 자신의 속성으로 사용 가능

            ‣ 하위 클래스는 상속받은 속성과 연산 외에 새로운 속상과 연산을 첨가하여 사용 가능

            ‣ 상위 클래스 = 부모 클래스, 하위 클래스 = 자식 클래스

 

  • 3. 다형성 (Polymorphism)

         하나의 메시지에 대해 각각의 객체가 고유한 방법으로 응답할 수 있는 능력

            ‣ 하나의 메시지에 대해 여러 가지 형태의 응답이 존재

            ‣ 객체들은 동일한 메소드명 사용 및 같은 의미의 응답

            ‣ 예) '+'의 경우 숫자 클래스에서는 덧셈, 문자 클래스에서는 문자열의 연결 기능으로 사용

 

  • 4. 연관성 (Relationship)

         두 개 이상의 객체들이 상호 참조하는 관계

 

종류 의미 특징
is member of 연관화 (Association) 2개 이상의 객체가 상호 관련되어 있음
is instance of  분류화 (Classfication) 동일한 형의 특성을 갖는 객체들을 모아 구성
is part of 집단화 (Aggregation) 공통적인 성질들로 추상화한 상위 객체를 구성
is a  일반화 (Generalization) 공통적인 성질들로 추상화한 상위 객체를 구성
특수화/상세화 (Specialization) 상위 객체를 구체화하여 하위 객체를 구성

 

 


4-5. 객체지향 분석 및 설계

  • 객체지향 분석 (OOA ; Object Oriented Analysis)

   사용자의 요구사항과 관련된 객체, 속성, 연ㄴ산, 관계 등을 정의하여 모델링하는 작업

      ‣ 객체와 속성, 클래스와 멤버, 전체와 부분 등으로 나누어서 분석

      ‣ 객체지향 분석의 주요 목적 : 클래스를 식별

 

  • 객체지향 분석의 방법론

 

Rumbaugh(럼바우) 방법 객체 모델, 동적 모델, 기능 모델로 나누어 분석활동 수행
Booch(부치) 방법 클래스와 객체들을 분석 및 식별하고, 클래스의 속성과 연산을 정의
미시적(Micro) 개발 프로세스와 거시적(Macro) 개발 프로세스 모두 사용
Jacobson 방법 유스케이스 (Use Case)를 강조하여 사용
Coad와 Youtdon 방법 E-R 다이어그램 사용 → 객체의 행위를 모델링
객체 식별, 구조 식별, 주제 정의, 속성과 인스턴스 연결 정의, 연산과 메시지 연결 정의 등
Wirfs-Brock 방법 고객 명세서를 평가 → 설계 작업까지 연속적으로 수행
분석과 설계 간의 구분이 없음

 

  • 럼바우 (Rumbaugh)의 분석 기법

   모든 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 기법

      ‣ 객체 모델링 기법 (OMT ; Object-Modeling Technique)

      ‣ 객체 모델링 → 동적 모델링 → 기능 모델링 순으로 분석 활동 진행

 

      - 럼바우 분석 활동

 

객체 모델링 
(Object Modeling)
시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체들 간의 관계를 규정
객체 다이어그램 이용
정보 모델링 (Information Modeling)
동적 모델링
(Dynamic Modeling)
시간의 흐름에 따른 객체들 간의 제어 흐름, 상호 작용, 동작 순서 등의 동적인 행위를 표현
상태 다이어그램 이용
기능 모델링
(Function Modeling)
다수의 프로세스들 간의 자료 흐름을 중심으로 처리 과정을 표현
자료 흐름도 (DFD) 이용

 

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

   변경이나 확장에 유연한 시스템을 설계하기 위해 지켜져야 할 원칙

 

단일 책임 원칙 (SRP) 객체는 단 하나의 책임만 가져야 한다.
개방-폐쇄 원칙 (OCP) 기존의 코드를 변경하지 않고 기능을 추가할 수 있도록 설계해야 한다.
리스코프 치환 원칙 (LSP) 자식 클래스는 최소한 부모 클래스의 기능은 수행할 수 있어야 한다.
인터페이스 분리 원칙 (ISP) 자신이 사용하지 않는 인터페이스와 의존 관계를 맺거나 영향을 받지 않아야 한다.
의존 역전 원칙 (DIP) 의존 관계 성립 시 추상성이 높은 클래스와 의존 관계를 맺어야 한다.

 


참조 : 캡슐화와 정보은닉

 

캡슐화와 정보은닉

캡슐화클래스 혹은 객체라는 개념을 접할 때 가장 먼저 생각나게 하는 용어 가운데 바로 캡슐화 -캡슐화는 관련된 데이터와 함수를 묶는 장치이다. 관련된 데이터와 관련된 함수들을 클래스라

frontierdev.tistory.com