객체지향 기법: Difference between revisions

From IT Wiki
Line 1: Line 1:
[[분류:소프트웨어 공학]][[분류:정보처리기사]]
[[분류:소프트웨어 공학]]
[[분류:정보처리기사]]


== 구성 요소 ==
==구성 요소==
=== 객체(Object) ===
===객체(Object)===
* 필요한 자료 구조와 이에 수행되는 함수들을 가진 하나의 소프트웨어 모듈
 
* '''애트리뷰트(Attribute)'''
*필요한 자료 구조와 이에 수행되는 함수들을 가진 하나의 소프트웨어 모듈
** 객체의 상태를 나타내며, 데이터 또는 속성이라고 함
*'''애트리뷰트(Attribute)'''
* '''메서드(Method)'''
**객체의 상태를 나타내며, 데이터 또는 속성이라고 함
** 객체가 메시지를 받아 실행해야 할 객체의 구체적인 연산을 정의한 것, 전통적 시스템의 함수(Function)나 프로시저(Procedure)에 해당하는 연산 기능
*'''메서드(Method)'''
**객체가 메시지를 받아 실행해야 할 객체의 구체적인 연산을 정의한 것, 전통적 시스템의 함수(Function)나 프로시저(Procedure)에 해당하는 연산 기능
   
   
=== 클래스(Class) ===
===클래스(Class)===
* 하나 이상의 유사한 객체들을 묶어 공통된 특성을 표현한 데이터 추상화
 
* 어떤 클래스에 속하는 구체적인 객체를 인스턴스(Instance)라고 함
*하나 이상의 유사한 객체들을 묶어 공통된 특성을 표현한 데이터 추상화
* 클래스는 인스턴스들이 갖는 변수들과 인스턴스들이 사용할 메서드를 가짐
*어떤 클래스에 속하는 구체적인 객체를 인스턴스(Instance)라고 함
*클래스는 인스턴스들이 갖는 변수들과 인스턴스들이 사용할 메서드를 가짐
   
   
=== 메시지(Message) ===
===메시지(Message)===
* 객체들 간의 상호 작용은 메시지를 통해 이루어짐
 
* 메시지는 객체에서 객체로 전달됨
*객체들 간의 상호 작용은 메시지를 통해 이루어짐
*메시지는 객체에서 객체로 전달됨
 
==객체지향 기법==
===캡슐화(Encapsulation)===
 
*자료 부분과 연산(또는 함수) 부분 등 정보처리에 필요한 기능을 한 테두리로 묶는 것
*연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 과정
*결합도가 낮아진다. 즉, 프로그램 변경에 대한 오류의 파급효과가 적다.
*재사용이 용이하다.
*인터페이스를 단순화 시킬 수 있다.
 
===[[정보 은닉|정보 은닉(Information Hiding)]]===
 
*객체가 다른 객체로부터 자신의 자료를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것
*정보 은닉의 가장 근본적인 목적은 고려되지 않은 영향(Side Effect)들을 최소화 하는 것


== 객체지향 기법 ==
===추상화(Abstraction)===
=== 캡슐화(Encapsulation) ===
* 자료 부분과 연산(또는 함수) 부분 등 정보처리에 필요한 기능을 한 테두리로 묶는 것
* 연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 과정
* 결합도가 낮아진다. 즉, 프로그램 변경에 대한 오류의 파급효과가 적다.
* 재사용이 용이하다.
* 인터페이스를 단순화 시킬 수 있다.


=== [[정보 은닉|정보 은닉(Information Hiding)]] ===
*주어진 문제나 시스템 중에서 중요하고 관계있는 부분만을 분리하여 간결하고 이해하기 쉽게 만드는
* 객체가 다른 객체로부터 자신의 자료를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것
* 정보 은닉의 가장 근본적인 목적은 고려되지 않은 영향(Side Effect)들을 최소화 하는


=== 추상화(Abstraction) ===
===상속(Inheritance)===
* 주어진 문제나 시스템 중에서 중요하고 관계있는 부분만을 분리하여 간결하고 이해하기 쉽게 만드는 것


=== 상속(Inheritance) ===
*상위 클래스의 속성과 메서드를 하위 클래스가 물려받는 것
* 상위 클래스의 속성과 메서드를 하위 클래스가 물려받는 것
*클래스와 객체를 재사용 가능
* 클래스와 객체를 재사용 가능


=== [[객체지향 연관성|연관성(Relation)]] ===
===[[다형성|다형성(Polymorphism)]]===
* 클래스간의 연관관계를 정의
* 객체간의 관계를 세부적으로 정의하여 구현 용이
* 일반화(Generalization is-a), 상세화(Specialization has-a), 집단화(Aggregation is-part-of) 등


=== [[다형성|다형성(Polymorphism)]] ===
*많은 상이한 클래스들이 동일한 메서드명을 이용하는 능력
* 많은 상이한 클래스들이 동일한 메서드명을 이용하는 능력
*일반화된 객체는 어떤 특정 객체를 지칭할 수 있기 때문에 같은 동작을 하지만 다른 성질을 가질 수 없음
* 일반화된 객체는 어떤 특정 객체를 지칭할 수 있기 때문에 같은 동작을 하지만 다른 성질을 가질 수 없음

Revision as of 15:37, 27 April 2022


구성 요소

객체(Object)

  • 필요한 자료 구조와 이에 수행되는 함수들을 가진 하나의 소프트웨어 모듈
  • 애트리뷰트(Attribute)
    • 객체의 상태를 나타내며, 데이터 또는 속성이라고 함
  • 메서드(Method)
    • 객체가 메시지를 받아 실행해야 할 객체의 구체적인 연산을 정의한 것, 전통적 시스템의 함수(Function)나 프로시저(Procedure)에 해당하는 연산 기능

클래스(Class)

  • 하나 이상의 유사한 객체들을 묶어 공통된 특성을 표현한 데이터 추상화
  • 어떤 클래스에 속하는 구체적인 객체를 인스턴스(Instance)라고 함
  • 클래스는 인스턴스들이 갖는 변수들과 인스턴스들이 사용할 메서드를 가짐

메시지(Message)

  • 객체들 간의 상호 작용은 메시지를 통해 이루어짐
  • 메시지는 객체에서 객체로 전달됨

객체지향 기법

캡슐화(Encapsulation)

  • 자료 부분과 연산(또는 함수) 부분 등 정보처리에 필요한 기능을 한 테두리로 묶는 것
  • 연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 과정
  • 결합도가 낮아진다. 즉, 프로그램 변경에 대한 오류의 파급효과가 적다.
  • 재사용이 용이하다.
  • 인터페이스를 단순화 시킬 수 있다.

정보 은닉(Information Hiding)

  • 객체가 다른 객체로부터 자신의 자료를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것
  • 정보 은닉의 가장 근본적인 목적은 고려되지 않은 영향(Side Effect)들을 최소화 하는 것

추상화(Abstraction)

  • 주어진 문제나 시스템 중에서 중요하고 관계있는 부분만을 분리하여 간결하고 이해하기 쉽게 만드는 것

상속(Inheritance)

  • 상위 클래스의 속성과 메서드를 하위 클래스가 물려받는 것
  • 클래스와 객체를 재사용 가능

다형성(Polymorphism)

  • 많은 상이한 클래스들이 동일한 메서드명을 이용하는 능력
  • 일반화된 객체는 어떤 특정 객체를 지칭할 수 있기 때문에 같은 동작을 하지만 다른 성질을 가질 수 없음