Skip Navigation

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


객체지향 프로그램 언어

객체지향
2016.03.06 11:14

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

profile 단축주소복사하기
(*.168.0.1) 조회 수 137 추천 수 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)

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

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

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

Who's 부운영자

profile

<빌립보서 4장 10절-13절> "내가 주 안에서 크게 기뻐함은 너희가 나를 생각하던 것이 이제 다시 싹이 남이니 너희가 또한 이를 위하여 생각은 하였으나 기회가 없었느니라 내가 궁핍하므로 말하는 것이 아니라 어떠한 형편에든지 내가 자족하기를 배웠노니 내가 비천에 처할 줄도 알고 풍부에 처할 줄도 알아 모든 일에 배부르며 배고픔과 풍부와 궁핍에도 일체의 비결을 배웠노라  내게 능력 주시는 자 안에서 내가 모든 것을 할 수 있느니라 "


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

사이트연락처

  • 이용약관
    개인정보 취급방침
  • [문자가능] 070-7797-4480
  • 디스코드/스카이프ID : [admin@4880.net]
    카카오플러스 / 카카오플러스채팅
    Loading the player ...
서버에 요청 중입니다. 잠시만 기다려 주십시오...