객체지향 기법: Difference between revisions
From IT위키
(2 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
[[분류:소프트웨어 공학]][[분류:정보처리기사]] | [[분류:소프트웨어 공학]] | ||
[[분류:정보처리기사]] | |||
== 구성 요소 == | ==구성 요소== | ||
=== 객체(Object) === | ===객체(Object)=== | ||
* 필요한 자료 구조와 이에 수행되는 함수들을 가진 하나의 소프트웨어 모듈 | |||
* '''애트리뷰트(Attribute)''' | *필요한 자료 구조와 이에 수행되는 함수들을 가진 하나의 소프트웨어 모듈 | ||
** 객체의 상태를 나타내며, 데이터 또는 속성이라고 함 | *'''애트리뷰트(Attribute)''' | ||
* '''메서드(Method)''' | **객체의 상태를 나타내며, 데이터 또는 속성이라고 함 | ||
** | *'''메서드(Method)''' | ||
**객체가 메시지를 받아 실행해야 할 객체의 구체적인 연산을 정의한 것, 전통적 시스템의 함수(Function)나 프로시저(Procedure)에 해당하는 연산 기능 | |||
=== 클래스(Class) === | ===클래스(Class)=== | ||
* 하나 이상의 유사한 객체들을 묶어 공통된 특성을 표현한 데이터 추상화 | |||
* 어떤 클래스에 속하는 구체적인 객체를 인스턴스(Instance)라고 함 | *하나 이상의 유사한 객체들을 묶어 공통된 특성을 표현한 데이터 추상화 | ||
* 클래스는 인스턴스들이 갖는 변수들과 인스턴스들이 사용할 메서드를 가짐 | *어떤 클래스에 속하는 구체적인 객체를 인스턴스(Instance)라고 함 | ||
*클래스는 인스턴스들이 갖는 변수들과 인스턴스들이 사용할 메서드를 가짐 | |||
=== 메시지(Message) === | ===메시지(Message)=== | ||
== 객체지향 기법 == | *객체들 간의 상호 작용은 메시지를 통해 이루어짐 | ||
=== 캡슐화(Encapsulation) === | *메시지는 객체에서 객체로 전달됨 | ||
* 자료 부분과 연산(또는 함수) 부분 등 정보처리에 필요한 기능을 한 테두리로 묶는 것 | |||
* 연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 과정 | ==객체지향 기법== | ||
===캡슐화(Encapsulation)=== | |||
=== [[정보 은닉|정보 은닉(Information Hiding)]] === | |||
* 객체가 다른 객체로부터 자신의 자료를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것 | *자료 부분과 연산(또는 함수) 부분 등 정보처리에 필요한 기능을 한 테두리로 묶는 것 | ||
* 정보 은닉의 가장 근본적인 목적은 고려되지 않은 영향(Side Effect)들을 최소화 하는 것 | *연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 과정 | ||
*결합도가 낮아진다. 즉, 프로그램 변경에 대한 오류의 파급효과가 적다. | |||
*재사용이 용이하다. | |||
*인터페이스를 단순화 시킬 수 있다. | |||
===[[정보 은닉|정보 은닉(Information Hiding)]]=== | |||
*객체가 다른 객체로부터 자신의 자료를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것 | |||
*정보 은닉의 가장 근본적인 목적은 고려되지 않은 영향(Side Effect)들을 최소화 하는 것 | |||
*JAVA에서 정보은닉(Information Hiding)을 표기할 때 public의 의미는 '공개' 관련문제 :[https://newbt.kr/%EB%AC%B8%EC%A0%9C/20308 https://newbt.kr/문제/20308] | |||
===추상화(Abstraction)=== | |||
*주어진 문제나 시스템 중에서 중요하고 관계있는 부분만을 분리하여 간결하고 이해하기 쉽게 만드는 것 | |||
=== | ===상속(Inheritance)=== | ||
*상위 클래스의 속성과 메서드를 하위 클래스가 물려받는 것 | |||
* 상위 클래스의 속성과 메서드를 하위 클래스가 물려받는 것 | *클래스와 객체를 재사용 가능 | ||
* 클래스와 객체를 재사용 가능 | |||
=== [[ | ===[[다형성|다형성(Polymorphism)]]=== | ||
*많은 상이한 클래스들이 동일한 메서드명을 이용하는 능력 | |||
* 많은 상이한 클래스들이 동일한 메서드명을 이용하는 능력 | *일반화된 객체는 어떤 특정 객체를 지칭할 수 있기 때문에 같은 동작을 하지만 다른 성질을 가질 수 없음 | ||
* 일반화된 객체는 어떤 특정 객체를 지칭할 수 있기 때문에 같은 동작을 하지만 다른 성질을 가질 수 없음 |
Latest revision as of 18:29, 25 January 2024
구성 요소[edit | edit source]
객체(Object)[edit | edit source]
- 필요한 자료 구조와 이에 수행되는 함수들을 가진 하나의 소프트웨어 모듈
- 애트리뷰트(Attribute)
- 객체의 상태를 나타내며, 데이터 또는 속성이라고 함
- 메서드(Method)
- 객체가 메시지를 받아 실행해야 할 객체의 구체적인 연산을 정의한 것, 전통적 시스템의 함수(Function)나 프로시저(Procedure)에 해당하는 연산 기능
클래스(Class)[edit | edit source]
- 하나 이상의 유사한 객체들을 묶어 공통된 특성을 표현한 데이터 추상화
- 어떤 클래스에 속하는 구체적인 객체를 인스턴스(Instance)라고 함
- 클래스는 인스턴스들이 갖는 변수들과 인스턴스들이 사용할 메서드를 가짐
메시지(Message)[edit | edit source]
- 객체들 간의 상호 작용은 메시지를 통해 이루어짐
- 메시지는 객체에서 객체로 전달됨
객체지향 기법[edit | edit source]
캡슐화(Encapsulation)[edit | edit source]
- 자료 부분과 연산(또는 함수) 부분 등 정보처리에 필요한 기능을 한 테두리로 묶는 것
- 연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 과정
- 결합도가 낮아진다. 즉, 프로그램 변경에 대한 오류의 파급효과가 적다.
- 재사용이 용이하다.
- 인터페이스를 단순화 시킬 수 있다.
정보 은닉(Information Hiding)[edit | edit source]
- 객체가 다른 객체로부터 자신의 자료를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것
- 정보 은닉의 가장 근본적인 목적은 고려되지 않은 영향(Side Effect)들을 최소화 하는 것
- JAVA에서 정보은닉(Information Hiding)을 표기할 때 public의 의미는 '공개' 관련문제 :https://newbt.kr/문제/20308
추상화(Abstraction)[edit | edit source]
- 주어진 문제나 시스템 중에서 중요하고 관계있는 부분만을 분리하여 간결하고 이해하기 쉽게 만드는 것
상속(Inheritance)[edit | edit source]
- 상위 클래스의 속성과 메서드를 하위 클래스가 물려받는 것
- 클래스와 객체를 재사용 가능
다형성(Polymorphism)[edit | edit source]
- 많은 상이한 클래스들이 동일한 메서드명을 이용하는 능력
- 일반화된 객체는 어떤 특정 객체를 지칭할 수 있기 때문에 같은 동작을 하지만 다른 성질을 가질 수 없음