객체지향 기법 편집하기

IT위키

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.

편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.

최신판 당신의 편집
1번째 줄: 1번째 줄:
[[분류:소프트웨어 공학]]
[[분류:소프트웨어 공학]][[분류:정보처리기사]]
[[분류:정보처리기사]]


==구성 요소==
== 구성 요소 ==
===객체(Object)===
=== 객체(Object) ===
 
* 필요한 자료 구조와 이에 수행되는 함수들을 가진 하나의 소프트웨어 모듈
*필요한 자료 구조와 이에 수행되는 함수들을 가진 하나의 소프트웨어 모듈
* '''애트리뷰트(Attribute)'''
*'''애트리뷰트(Attribute)'''
** 객체의 상태를 나타내며, 데이터 또는 속성이라고 함
**객체의 상태를 나타내며, 데이터 또는 속성이라고 함
* '''메서드(Method)'''
*'''메서드(Method)'''
** 객체가 메시지를 받아 실행해야 할 객체의 구체적인 연산을 정의한 것, 전통적 시스템의 함수(Function)나 프로시저(Procedure)에 해당하는 연산 기능
**객체가 메시지를 받아 실행해야 할 객체의 구체적인 연산을 정의한 것, 전통적 시스템의 함수(Function)나 프로시저(Procedure)에 해당하는 연산 기능
=== 클래스(Class) ===
* 하나 이상의 유사한 객체들을 묶어 공통된 특성을 표현한 데이터 추상화
* 어떤 클래스에 속하는 구체적인 객체를 인스턴스(Instance)라고 함
* 클래스는 인스턴스들이 갖는 변수들과 인스턴스들이 사용할 메서드를 가짐
   
   
===클래스(Class)===
=== 메시지(Message) ===
* 객체들 간의 상호 작용은 메시지를 통해 이루어짐
* 메시지는 객체에서 객체로 전달됨


*하나 이상의 유사한 객체들을 묶어 공통된 특성을 표현한 데이터 추상화
== 객체지향 기법 ==
*어떤 클래스에 속하는 구체적인 객체를 인스턴스(Instance)라고 함
=== 캡슐화(Encapsulation) ===
*클래스는 인스턴스들이 갖는 변수들과 인스턴스들이 사용할 메서드를 가짐
* 자료 부분과 연산(또는 함수) 부분 등 정보처리에 필요한 기능을 한 테두리로 묶는 것
* 연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 과정
   
   
===메시지(Message)===
=== [[정보 은닉|정보 은닉(Information Hiding)]] ===
 
* 객체가 다른 객체로부터 자신의 자료를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것
*객체들 간의 상호 작용은 메시지를 통해 이루어짐
* 정보 은닉의 가장 근본적인 목적은 고려되지 않은 영향(Side Effect)들을 최소화 하는 것
*메시지는 객체에서 객체로 전달됨
 
==객체지향 기법==
===캡슐화(Encapsulation)===
 
*자료 부분과 연산(또는 함수) 부분 등 정보처리에 필요한 기능을 한 테두리로 묶는 것
*연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 과정
*결합도가 낮아진다. 즉, 프로그램 변경에 대한 오류의 파급효과가 적다.
*재사용이 용이하다.
*인터페이스를 단순화 시킬 수 있다.
 
===[[정보 은닉|정보 은닉(Information Hiding)]]===
 
*객체가 다른 객체로부터 자신의 자료를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것
*정보 은닉의 가장 근본적인 목적은 고려되지 않은 영향(Side Effect)들을 최소화 하는
*JAVA에서 정보은닉(Information Hiding)을 표기할 때 public의 의미는 '공개' 관련문제 :[https://newbt.kr/%EB%AC%B8%EC%A0%9C/20308 https://newbt.kr/문제/20308]
 
===추상화(Abstraction)===
 
*주어진 문제나 시스템 중에서 중요하고 관계있는 부분만을 분리하여 간결하고 이해하기 쉽게 만드는


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


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


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


*많은 상이한 클래스들이 동일한 메서드명을 이용하는 능력
=== [[다형성|다형성(Polymorphism)]] ===
*일반화된 객체는 어떤 특정 객체를 지칭할 수 있기 때문에 같은 동작을 하지만 다른 성질을 가질 수 없음
* 많은 상이한 클래스들이 동일한 메서드명을 이용하는 능력
* 일반화된 객체는 어떤 특정 객체를 지칭할 수 있기 때문에 같은 동작을 하지만 다른 성질을 가질 수 없음
IT위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는 IT위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다. 저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소 편집 도움말 (새 창에서 열림)