Skip Navigation

XE 레이아웃 카메론 XE LAYOUT CAMERON XE1.11.2


객체지향 프로그램 언어

객체지향
2016.03.06 11:14

[객체지향] 객체지향 기법

단축주소복사하기
(*.168.0.1) 조회 수 140 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
원문주소 http://blog.ohmynews.com/icorea77/291419
▣ 객체지향의 개념
- 실 세계의 개체(Entity)를 속성(Attribute)과 메소트(Method)가 결합된 형태의 객체(Object)로 표현하는 개념
- 객체간의 메시지 통신을 통해 시스템을 구현하는 개발 방법
※ 객체지향 언어는 다른 언어에 비해 많은 성능이 요구된다.(CBD에서는 소스코드 기반의 상속을 제거)

▣ 객체지향 방법론의 특징
- 재사용성, 유지보수성, 이식성
- 모형의 적합성 : 현실세계 및 인간의 사고방식과 유사
- 일관성, 추적성 : 전체 공정에서 각 단계간의 전환과 변경이 자연스럽고 신속 함

▣ 객체지향의 기본 구성요소 및 개념
ⓐ 클래스(Class)
- 같은 종류(또는 문제 해결을 위한)의 집단에 속하는 속성(Attribute)과 행위(Behavior)를 정의 한 것
- 객체지향 프로그램의 기본적인 사용자 정의 데이터형(user define data type)
- 클래스는 프로그래머가 아니지만 해결해야 할 문제가 속하는 영역에 종사하는 사람이라면 사용할 수 있고 다른 클래스 또는 외부요소와 독립적으로 디자인 되어야 한다.
ⓑ 객체(Object)
- 클래스의 인스턴스(실제로 메모리상에 할당된 것)
- 자신 고유의 데이터(attribute)를 가지며 클래스에서 정의한 행위(behavior)를 수행
- 객체의 행위는 클래스에 정의된 행위에 대한 정의를 공유함으로써 메모리를 경제적으로 사용한다.
ⓒ 메서드(Method)
- 클래스로부터 생성된 객체를 사용하는 방법
- 객체에 명령을 내리는 메시지라 할 수 있다.
ⓓ 메시지(Message)
- 객체간의 통신은 메시지를 통해 이루어진다.

▣ 객체지향의 원리 
ⓐ 캡슐화(Encapsulation)-정보은닉
개념 - 객체의 상세한 내용을 객체 외부에 철저히 숨기고 단순히 메시지만으로 객체와의 상호작용을 하게 하는 것
역할 - 객체의 내부고조와 실체 분리로 내부 변경이 프로그램에 미치는 영향 최소화 하여 유지보수도 용이하게 함
특징 - 클래스를 선언하고 그 클래스를 구성하는 객체에 대하여 "public" 선언시 외부에서 사용가능 하나 "privat"선언 시 외부사용 불가

서로 관련성이 많은 데이터들과 이와 관련된 함수들을 한 묶음으로 처리 하는 것
모듈의 결합도가 낮다(외부 인터페이스와 내부 모듈을 분리)
객체지향 언어는 다른 언어에 비해 많은 성능이 요구된다.
CBD에서는 소스코드 기반의 상속을 제거
장점
- Readability 향상 : 유지보수 용이
- 재사용성이 높은 소프트웨어 개발
- 정보은닉(Information Hiding)으로 내부자로에 대한 일관성 유지
- 객체간 인터페이스(Message)를 이용하여 종속성 최소화
정보은닉 (Information Hiding)
- 특정 모듈의 정보를 필요로 하지 않는 모듈이 접근하지 못하도록 세부 내용을 은폐하고 설계하는 기법
- 효과 : 유지보수성, 무결성, 개발 생산성 향상
- 구현절차 : Class 식별 -> Attribute 정의 -> Method 정의 -> Attribute 접근권한 부여
※ 정보은닉 참고
- C++, Java, Ada에서 제공
- 사용자가 자료구조를 정의하면 그것에 적용될 연산도 같이 정의
- 선언된 구조에 지정된 연산외에는 그 구조의 정보접근 불가
ⓑ 추상화 
개념 - 현실세계의 사실을 그대로 객체로 표현하기 보다는 문제의 중요한 측면을 주목하여 상세내역을 없애나가는 과정
역할 - 복잡한 프로그램을 간단하게 해주고 분석의 초점을 명확히 함
특징 - 객체지향 언어에서는 클래스를 이용함으로써 데이터와 프로세스를 함께 추상화의 구조에 넣어 보다 완벽한 추상화를 실현
※ 공통성질을 추출하여 수퍼클래스를 설정하는 것
- 기능추상화 : 클래스 내 메소드를 정의 (obj.getName())
- 자료추상화 : 객체 클래스 자체를 데이터 타입으로 사용(String, Class)
- 제어추상화 : 제어행위에 대한 개념화, 명령 및 이벤트(if, for, while)
ⓒ 다형성(Polymorphism)
개념 - 하나의 인터페이스를 이용하여 서로다른 구현방법을 제공하는 것
역할 - 특정 지식을 최소화한 관련된 클래스들을 위한 일관된 매개체를 개발하는 수단을 제공
특징 - Overloading(동일한 이름의 Operation 사용-수평적), Overriding(수퍼클래스의 메소드를 서브 클래스에서 재정의-수직적)

ⓓ 상속성 (Inheritance)
개념 - 수퍼클래스가 갖는 성질을 서브클래스에 자동으로 부여하는 개념
역할 - 프로그램을 쉽게 확장할 수 있도록 해주는 강력한 수단
특징 - 상속의 효과는 클래스를 체계화 할 수 있으며 기존의 클래스로부터 확장이 용이
상위 클래스의 속성과 메소드를 하위 클래스에서 재정의 없이 물려받아 사용하는 것
재사용성 향상, 중복제거, 유지보수 효율성, 프로그램 확장 용이

ⓔ 연관성 (Relation)
개념 - 클래스간의 연관관계를 정의
역할 - 객체간의 관계를 세부적으로 정의하여 구현 용이
특징 - 일반화(Generalization is-a), 상세화(Specialization has-a), 집단화(Aggregation is-part-of)

▣ 서브시스템의 분해전략
- 객체지향 분해 : 시스템을 서로 통신하는 객체들로 분해
- 기능지향 파이프라이닝 : 시스템 입력을 받아들여 출력 데이터로 변환하는 기능모듈로 분해

ⓐ 객체지향 분해
- 시스템을 잘 정의된 인터페이스를 가진 약하게 결합된 개체들로 구성(클래스, 속성, 오퍼레이션) : 객체는 클래스로부터 생성되고 일부 제어모델이 객체 오퍼레이션을 조정하는데 이용
- 느슨하게 결함되어 있으므로 다른 객체에 영향을 주지 않음.
- 장점 : 다른 객체에 영향이 적다. 시스템 구조를 쉽게 이해하고 재사용이 가능
- 단점 : 변경 효과에 대한 필요. 더 복잡한 객체 표현의 어려움

ⓑ 기능지향 파이프라이닝
- 기능 변환을 통해 입력을 처리하여 출력을 생성
- 데이터는 차례로 일련의 흐름에 따라 이동하면서 변환
- 변환은 순차적 혹은 병렬적으로 실행
- 장점 : 재사용, 직관적, 병렬/순차 시스템 구현 용이
- 단점 : 공통적인 데이터 이동 양식이 필요. 대화식 시스템 구현은 어려움

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
87 기타자료 무료 온라인 C++/C# 강좌 사이트 code academy가 정말 좋은데 C++나 C#이 없어서 많이 아쉽습니다. 그래서 찾다 보니 이런곳이 있군요. 코스와 챌린지 등으로 구성되어 있고, 꽤 많은 언어들이 있... 1 부운영자 2017.10.30 162
86 기타자료 '기차모델'로 갈아탄 'C++17'이 가져온 변화는? '기차모델'로 갈아탄 'C++17'이 가져온 변화는? ‘기차모델’로 갈아탄 ‘C++17’이 가져온 변화는? Bloter.net 블로터 / ... 1 부운영자 2017.10.14 150
85 c++ 객체지향프로그래밍 (C++) 본 강좌에서는 대표적인 객체지향 프로그래밍 언어인 C++ 언어에 대해 학습함으로써 객체지향 프로그래밍 언어의 필요성 및 개념을 이해하고, 응용 문제 해결을 ... 부운영자 2016.03.06 121
» 객체지향 [객체지향] 객체지향 기법 ▣ 객체지향의 개념 - 실 세계의 개체(Entity)를 속성(Attribute)과 메소트(Method)가 결합된 형태의 객체(Object)로 표현하는 개념 - 객체간의 메시지 통신을 통... 부운영자 2016.03.06 140
83 객체지향 객체지향 프로그래밍이란? 객체지향 프로그래밍 특징 및 장점 객체지향 프로그래밍의 가장 큰 특징은 클래스를 이용해 연관 있는 처리부분(함수)과 데이터 부분(변수)를 하나로 묶어 객체(... 부운영자 2016.03.06 132
82 객체지향 객체지향 프로그래밍(Object-Oriented Programming, OOP) 객체지향 프로그래밍(Object-Oriented Programming, OOP) 1. 정의 프로그래밍을 객체라는 단위로 나누고, 각 객체간의 상호작용으로 설계하고 작성하는 개념이자 ... 부운영자 2016.03.06 284
81 객체지향 객체 지향 프로그래밍 부운영자 2016.03.06 146
80 c++ 63 Stack Unwinding 스택풀기 부운영자 2014.12.01 358
79 c++ 62 예외처리의 매카니즘 부운영자 2014.12.01 233
78 c++ 61 기존의 예외처리 방식 부운영자 2014.12.01 216
77 c++ 60 템플릿의 원리 부운영자 2014.12.01 244
76 c++ 59 클래스 템플릿 부운영자 2014.12.01 206
75 c++ 58 함수 템플릿 부운영자 2014.12.01 199
74 c++ 57 템플릿 부운영자 2014.12.01 243
73 c++ 56 사용자 정의 string 클래스 부운영자 2014.12.01 181
72 c++ 55 표준 string 클래스의 이해 부운영자 2014.12.01 191
71 c++ 54 대입 연산자 오버로딩 부운영자 2014.11.28 199
70 c++ 53 cout, cin 그리고 endl의 원리 이해 부운영자 2014.11.28 429
69 c++ 52 교환 법칙의 해결 부운영자 2014.11.28 209
68 c++ 51 단항 연산자 오버로딩2 부운영자 2014.11.28 228
목록
Board Pagination Prev 1 2 3 4 5 Next
/ 5

사이트연락처

  • 이용약관
    개인정보 취급방침
  • 070-7797-4480
  • 디스코드/스카이프ID : [admin@4880.net]
    카카오플러스 / 카카오플러스채팅
    Loading the player ...