You cannot see this page without javascript.

Skip Navigation

XE 레이아웃 카메론 XE LAYOUT CAMERON XE2.0.8



객체지향
2016.03.06 11:14

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

profile
(*.168.0.1) 조회 수 776 추천 수 0 댓글 0
Extra Form
원문주소 http://blog.ohmynews.com/icorea77/291419
?

단축키

Prev이전 문서

Next다음 문서

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

No Attached Image

▣ 객체지향의 개념
- 실 세계의 개체(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절> 

내가 궁핍하므로 말하는 것이 아니라 어떠한 형편에든지 내가 자족하기를 배웠노니 내가

비천에 처할 줄도 알고 풍부에 처할 줄도 알아 모든 일에 배부르며 배고픔과 풍부와 궁핍에

도 일체의 비결을 배웠노라 내게 능력 주시는 자 안에서 내가 모든 것을 할 수 있느니라

적용중인 도장이 없습니다.

카카오링크
사진 및 파일 첨부

여기에 파일을 끌어 놓거나 왼쪽의 버튼을 클릭하세요.

파일 용량 제한 : 0MB (허용 확장자 : *.*)

0개 첨부 됨 ( / )

객체지향 프로그래밍언어

회원만 쓰기 가능합니다.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
87 기타자료 무료 온라인 C++/C# 강좌 사이트 code academy가 정말 좋은데 C++나 C#이 없어서 많이 아쉽습니다. 그래서 찾다 보니 이런곳이 있군요. 코스와 챌린지 등으로 구성되어 있고, 꽤 많은 언어들이 있네요. 초보자에게 나름 괜찮은것 같습니다. http://www.programmr.com/practice/ 1 부운영자 2017.10.30 258
86 기타자료 '기차모델'로 갈아탄 'C++17'이 가져온 변화는? &#039;기차모델&#039;로 갈아탄 &#039;C++17&#039;이 가져온 변화는? ‘기차모델’로 갈아탄 ‘C++17’이 가져온 변화는? Bloter.net 블로터 / 2017-10-13 1 부운영자 2017.10.14 682
85 c++ 객체지향프로그래밍 (C++) 본 강좌에서는 대표적인 객체지향 프로그래밍 언어인 C++ 언어에 대해 학습함으로써 객체지향 프로그래밍 언어의 필요성 및 개념을 이해하고, 응용 문제 해결을 위한 객체지향 방식의 설계 및 구현능력을 배양한다. 본 강좌는 대상 학생들이 C 언어에 대한 학습을 완료했다고 가정하고 있으므로 본 강좌를 학습하기 전에 C ... 부운영자 2016.03.06 224
» 객체지향 [객체지향] 객체지향 기법 ▣ 객체지향의 개념 - 실 세계의 개체(Entity)를 속성(Attribute)과 메소트(Method)가 결합된 형태의 객체(Object)로 표현하는 개념 - 객체간의 메시지 통신을 통해 시스템을 구현하는 개발 방법 ※ 객체지향 언어는 다른 언어에 비해 많은 성능이 요구된다.(CBD에서는 소스코드 기반의 상속을 제거) ▣ 객체지향 방법론의 특징... 부운영자 2016.03.06 776
83 객체지향 객체지향 프로그래밍이란? 객체지향 프로그래밍 특징 및 장점 객체지향 프로그래밍의 가장 큰 특징은 클래스를 이용해 연관 있는 처리부분(함수)과 데이터 부분(변수)를 하나로 묶어 객체(인스턴스)를 생성해 사용한다는 점입니다. 그리고 객체지향 프로그래밍에서는 프로젝트를 독립적인 객체 단위로 분리해서 작업할 수 있기 때문에 여러 개발자와 ... 부운영자 2016.03.06 226
82 객체지향 객체지향 프로그래밍(Object-Oriented Programming, OOP) 객체지향 프로그래밍(Object-Oriented Programming, OOP) 1. 정의 프로그래밍을 객체라는 단위로 나누고, 각 객체간의 상호작용으로 설계하고 작성하는 개념이자 방법론이다. 2. 역사 절차지향 프로그래밍에서는 순차적으로 실행해 나가는 프로그램을 사용하였는데, 조금씩 복잡한 프로그램을 작성할수록 순서도를 작성하기... 부운영자 2016.03.06 738
81 객체지향 객체 지향 프로그래밍 부운영자 2016.03.06 587
80 c++ 63 Stack Unwinding 스택풀기 부운영자 2014.12.01 812
79 c++ 62 예외처리의 매카니즘 부운영자 2014.12.01 468
78 c++ 61 기존의 예외처리 방식 부운영자 2014.12.01 562
77 c++ 60 템플릿의 원리 부운영자 2014.12.01 312
76 c++ 59 클래스 템플릿 부운영자 2014.12.01 274
75 c++ 58 함수 템플릿 부운영자 2014.12.01 262
74 c++ 57 템플릿 부운영자 2014.12.01 312
73 c++ 56 사용자 정의 string 클래스 부운영자 2014.12.01 250
72 c++ 55 표준 string 클래스의 이해 부운영자 2014.12.01 276
71 c++ 54 대입 연산자 오버로딩 부운영자 2014.11.28 281
70 c++ 53 cout, cin 그리고 endl의 원리 이해 부운영자 2014.11.28 545
69 c++ 52 교환 법칙의 해결 부운영자 2014.11.28 282
68 c++ 51 단항 연산자 오버로딩2 부운영자 2014.11.28 297
목록
Board Pagination Prev 1 2 3 4 5 Next
/ 5