CS/정보처리산업기사

객체지향 설계 - 객체지향

jjh0119 2025. 3. 21. 16:57

01. 객체지향의 개요

  • 현실 세계의 개체를 하나의 객체로 만들어 객체들을 조립해서 소프트웨어를 개발하는 기법

1) 특징

  • 소프트웨어의 재사용 및 확장과 유지보수 용이
  • 현실 세계를 모형화하여 사용자와 개발자의 이해가 쉽다.
  • 객체 간의 독립성을 최대화한다.
  • 공통된 속성을 명백히 표현할 수 있다.

2) 객체지향에서의 관계

  • 연관화 : is member of 서로 공통된 의미끼리 묶어 연과된 집단으로 표현
  • 분류화 : is instance of 공통된 속성에 의해 정의된 객체 및 클래스의 인스턴스를 표현
  • 집단화 : is part of 서로 관련 있는 여러 개의 객체를 묶어 한 개의 상위 객체를 표현
  • 일반화 : is a 객체의, 공통적인 성질을 상위 객체로 정의하고, 특수화된 객체들을 하위의 부분형 객체로 정의하여 사용

02. 객체지향 기본 개념

1) 객체

  • 데이터와 데이터를 처리하는 함수를 묶어놓은 소프트웨어 모듈을 객체라고 한다.
  • 객체는 필요한 자료 구조와 수행되는 함수들을 가진 하나의 독립된 존재이다.
  • 객체는 상태, 동작, 고유 식별자를 가진 모든 것이라 할 수 있다.
  • 실세계에 존재하거나 생각할 수 있는 것이다.
  • 객체의 상태는 속성값에 의해 정의된다.
  • 데이터 구조와 이 구조에서 이루어진 연산들이 모여서 하나의 독린된 기능을 수행한다.

2) 속성

  • 객체들이 갖고 있는 데이터의 값으로 파일 처리에서 객체는 레코드, 속성은 필드와 유사한 개념이다.

3) 메소드

  • 객체가 메시지를 받아 실행해야 할 때 객체의 구체적인 연산을 의미한다.
  • 객체의 상태 참조 및 변경하는 수단이다.
  • 객체의 외부적인 활동이 연산이라는 전제하에서 구현된다.

4) 메시지

  • 객체들 간에 상호작용을 하는 데 사용되는 수단이다.
  • 메시지 전달은 객체에서 객체로 이루어지며, 객체가 메시지를 받으면 메소드가 수행된다.

5) 클래스

  • 하나 이상의 유사한 객체들을 묶어 공통된 특성을 표현한 데이터 추상화하는 단위이다.
  • 공통된 속성과 연산을 갖는 객체의 집합이다.
  • 클래스는 데이터 값을 저장하는 필드와 이 필드에서 연산하는 메소드로 정의한다.
  • 클래스에 속한 각각의 객체를 인스턴스라한다.
  • 클래스는 인스턴스들이 가질 변수와 인스턴스들이 사용할 메소드를 가진다.

추상 클래스

  • 구체 클래스에서 구현하려는 기능들의 공통점만을 모아 추상화한 클래스
  • 인스턴스 생성이 불가능하다.

6) 캡슐화

  • 연관된 데이터와 함수를 함께 묶어 외부뢍 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 과정이다.
  • 데이터와 데이터를 조작하는 연산을 하나로 묶어 하나의 모듈내에서 결합되도록 하는 것으로, 객체ㅇ에 포함된 정보의 손상과 오용을 방지한다.
  • 속성과 관련된 연산을 클래스 안에 묶어서 하나로 취급하는 것을 의미한다.
  • 객체의 사용자들에게 내부적인 구현의 세부적인 내용들을 은폐시키는 기능을 하는 것이다.
  • 사용자에게는 상세한 구현을 감추고 필요한 사항만 보이게 한다.

7) 정보 은닉

  • 캡슐 속에 있는 데이터와 함수를 외부에 노출시키지 않는 기법이다.
  • 필요하지 않은 정보는 접근할 수 없도록 하여 한 모듈 또는 하부 시스템이 다른 모듈의 구현에 영향을 받지 않게 설계된다.
  • 클래스 외부에서 특정 정보에 접근하는 것을 막는다.
  • 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통해 접근을 허용한다.
  • 모듈들 사이의 독립성을 유지시키는 데 도움을 준다.

8) 상속

  • 상위 클래스의 메소드와 속성을 하위 클래스가 물려받는 것이다.
  • 상위 클래스에서 속성이나 연산을 전달받아 새로운 형태의 클래스로 확장하여 사용한다.
  • 하위 클래스는 상위 클래스의 모든 속성과 연산을 자신의 속성으로 사용가능하다.
  • 소프트웨어의 재사용을 높이는 개념이다.

03. 객체지향 분석

1) 럼바우 방법

  • 모든 소프트웨어 구성요소를 그래픽 표기법으로 모델링 하는 방법이다.
  • 가장 일반적으로 사용하는 기법으로 OMT라고도 한다.
  • 객체 모형, 동적 모형, 기능 모형의 3개 모형을 생성하는 방법이다.

2) 부치 방법론

3) Coad & Yourdon 방법론

4) 워프스-브록 방법론

5) 야콥슨 방법론

04. 객체지향 설계

1) 단일 책임 원칙(SRP)

  • 객체는 단 하나의 책임만 가진다.
  • 응집도는 높고, 결합도는 낮게 설계한다.

2) 개방 폐쇄의 원칙(OCP)

  • 기존의 코드를 변경하지 않고 기능을 추가할 수 있도록 설계되어야 한다.
  • 클래스는 확장에 댈해 열려 있어야 하며 변경에 대해 닫혀 있어야 한다.

3) 리스코드 치환 원칙(LSP)

  • 부모 클래스의 행동 규약을 자식 클래스가 위반하면 안 된다는 것
  • 자식 클래스는 어디에서나 자신의 부모 클래스로 교체할 수 있어야 한다.

4) 인터페이스 분리 원칙(ISP)

  • 어떤 클래스가 다른 클래스에 종속될 때에는 최소한의 인터페이스만을 사용해야 한다는 원칙이다.
  • 클라이언트는 자신이 사용하지 않는 메서드와 의존 관계를 맺으면 안 된다.
  • 클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받아서는 안 된다.

5) 의존 역전의 원칙(DIP)

  • 각 객체들 간의 의존 관계가 성립될 때 추상성이 낮은 클래스보다 추상성이 높은 클래스와 의존 관계를 맺어야 한다.
  • 추상화는 세부 사항에 의존해서는 안 되고 세부사항은 추상화에 의존해야 한다는 것으로, 변화하기 쉬운 것에 의존하지 말라는 원칙이다.