본문 바로가기
UML

[본문스크랩] 1.객체지향 기술의 개념

by 사우람 2010. 7. 12.

1. 객체지향 기술의 출현

-> 소프트웨어의 생산은 노동집약적이면서 생산성은 낮아 심각한 소프트웨어 생산의

     적체를 낳았고, 유지 보수가 어려울 뿐만 아니라 비용발생도 많음

->> 객체지향 기술은 소프트웨어 공학자들이 소프트웨어의 생산성을 높이고 유지 보수를

       쉽게 하기 위한 방법을 연구하는 것에서 출발...

 

 

2. 소프트웨어 개발 방법론

 

※하향식 구조적 설계 ( Top-Down Structured Design )

 : 전통적인 고수준의 프로그래밍 언어 FORTRAN, COBAL 에서 사용

  

-> 구조적 기법은 프로세서를 중심으로 요구사항을 파악하기 ‹š문에 기업의 업무흐름이

     바뀔때마다 사용자의 요구사항에 맞추어 변경을 해야 하고, 시스템적인 측면만 고려한다는

     단점

 

3. 객체지향 방법론

 

-> 기본 목적 : 반복적인 개발 주기를 통해 요구사항을 더욱 명확히 이해,

                     큰 시스템에 대한 위험 요인을 최소화하면서 개발,

                     신뢰성있는 소프트웨어 아키텍쳐를 재사용하고,

                     유지 보수를 용이하게 하는 것..

 

-> 주요 구성 요소 : 객체 ( Object ) , 클래스 ( Class ) , 인스턴스 ( Instance )....

 

*분석기반 객체지향 방법론 : E-R 다이어그램을 통해 각 개체들을 표현

*설계기반 객체지향 방법론 : 분석보다는 설계에 더 효율적

                                         객체들끼리 주고받는 메시지의 형태, 클래스를 통해 객체를

                                         만드는 방법 등에 대한 부분 강조...

*시나리오 기반 객체지향 방법론 : 데이터나 객체들의 관점에서 보다는 사용자의 관점에서

                                                문제 접근...( 사용자나 유즈케이스 중심 )

 

4. 객체지향 기술의 개념 및 특징

 

1) 객체와 클래스

    객체 - 객체지향의 기본적 사고, 실세계에서 추출해 낸 것.....

              시스템을 구성하는 실체로서 한 구성원의 특성과 상태변화를 표현하는 기본단위...

              객체는 속성과 이 속성에 관련된 연산들의 모임...

    클래스 - 하나이상의 유사한 객체를 묶어 하나의 공통된 특성으로 표현한 것....

                동일한 데이터 구조(속성)과 공통의 행위, 공통의 관계들, 그리고 같은 의미를

                가지는 객체들의 모음을 추상적으로 표현한 형태....

 

 

    클래스의 관점에서 객체는 하나의 인스턴스...

    객체의 관점에서 클래스는 하나의 템플렛...

 

2) 추상화 ( Abstraction )

-> 다른 종류의 객체와 구분되는 객체의 필수적인 속성을 나타내는 것으로 객체가 어떻게

    구현되는지 보다는 어떤 기능을 수행할지에 초첨을 맞추는 개념....

 

*추상화의 효과

   대상파악이 용이함

          기능보다는 물체 중심                       ---------> 변경에 대한 안정

          물체구조에 관심                        -------------> 실세계를 자연에 표현

          현실세계의 중요한 측면만을 모델화 -----------> 분석의 초점이 명확화

 

3) 은닉화 ( Encapsulation )

-> 관련된 정보와 그 정보를 처리하는 방법을 하나의 단위로 묶는 것

*문제가 될 사태를 최소한으로 억제할 수 있다....

 

 

*객체는 이용자와 제공자의 역할부담을 명확히한다.*

객체의 이용자는 객체의 자료 구조는 알 필요가 없다 ------------> 이용자는 이용이 쉬움

객체의 제공자는 내부 자료구조를 변경 해서도 이용자에게 -------> 제공자는 변경이 쉬움

영향을 파급시키지 않는다

 

4) 상속성 ( Inheritance )

-> 상위 클래스의 속성과 연산을 그대로 이어 받아서 하위 클래스가 사용...

     상위 클래스와 다른 부분만을 작성하여 하위 클래스에 추가하여 커다란 객체를 쉽게 생성....

 

※상속의 효과

1. 클래스를 체계화하는 방법으로써 유효

2. 기존 클래를 확장하기 쉽다.

3. 기존의 자산에 대해서 확장판을 만들때에는 기존의 코드와 확장용 코드를 분리 할 수 있는점..

 

5) 다형성 ( Polymorphism )

-> 같은 메시지에 대하여 다른 행동을 하는것을 의미...

     C++에서는 가상 함수를 통하여 구현된다....

 

6) 관계성

    객체 및 클래스는 그 자체만으로 아무런 작업을 할 수 없으므로 다른 객체 혹은 클래스와

    관계를 맺어야 한다.

 

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

관계성( Membership ) : 두 개 이상의 엔티티에서 데이터를 상호 참조하는 관계를 말하며,

                                  is_member_of, is_instance_of, is_part_of 가 있다

일반화 ( Generalization ) :  유사한 클래스 사이에 공유되는 속성과 동작을 묶어주고 일반화를

                                       통해 클래스 사이의 계층 구조가 만들어지고 각 하위 클래스는

                                       상위 클래스의 속성, 동작 그리고 다른 클래스와의 연관성을 상속..

집단화 ( Aggregation ) : 여러개의 부속 객체들이 조립되어 하나의 객체가 구성되는 이행성의

                                  특징이 있으며 마름모로 표시....

연관화 ( Association ) : 공통된 의미로 연결된 집단이며 두 개 이상의 관계를 표시...

 

7) 메시지 전달 ( Message Passing )

    : 한 객체가 다른 객체의 데이터나 오퍼레이션에 접근하기 위한 방법....

 

8) 추상 클래스 ( Abstract Class )

   : 여러 클래스들이 공통적인 특징을 모아서 정의된 또한 하위 클래스들에게 상속될

     오퍼레이션을 제공하는데 사용....

 

5. 객체지향 기술의 장점

1) 설게시간의 단축

2) 질적인 향상

3) 유지보수의 용이함

4) 제작비용의 감소

5) 대형시스템 구축의 수월함

 

--------------------------------------------------------------------------------------

 

네이버에서 글 쓰기 졸라 빡세네.....ㅡ.ㅡ.ㅡ.ㅡ.ㅡ.ㅡ.ㅡ;;;;;;;