본문 바로가기
자격증/정보처리기사

객체지향 기술

by 두두리안 2022. 7. 7.
728x90

목차

1. 객체지향 기술의 개념
2. 객체지향 기술의 구성요소
3. 객체지향 기술의 종류

1. 객체지향 기술의 개념

1-1. 소프트웨어 위기

* 소프트웨어 개발, 유지보수 비용이 지속적으로 증대
* 소프트웨어 관리적 측면이 강조
* 하드웨어 기술에 비해 소프트웨어 기술이 뒤떨어진다
* 사용자의 요구 변화가 많아지고 시장은 넓어지고 있다
* 업무의 전문성은 높아지지만 소프트웨어를 평가하는 기준이 없다

1-2. 객체지향 기술

1. 객체지향 기술의 특징
    * 현실 세계의 개체들을 속성과 메소드가 결합된 형태의 객체로 표현
    * 현실 세계에 존재하는 속성을 데이터화한 것을 데이터베이스라고 한다
    * 속성에 대한 기능 및 동작을 메소드라고 한다
    * 구현된 객체와 객체간의 통신을 통해 객체지향 프로그램이 구현된다
2. 객체의 정의
    * 객체: 속성과 메소드로 구성된 클래스의 인스턴스를 의미한다
    * 속성: 객체를 나타내는 자료구조, 상태 등을 의미한다
    * 메소드: 속성에 대한 연산기능과 객체가 수행하는 행위를 의미

1-3. 객체지향 기술의 장단점

1. 장점
    * 규모가 큰 대형 프로그램 개발을 객체를 이용하면 쉽게 프로그래밍 할수 있다
    * 객체를 재사용하므로 확장성과 유지보수가 용이하며 개발속도가 빠르다
    * 실제 세계와 유사한 구조의 프로그램을 개발할수 있다
2. 단점
    * 객체의 규모가 큰 경우 실행속도가 느려질수 있다
    * 객체를 이용하면 쉽지만, 객체 자체의 설계는 어렵다

2. 객체지향 기술의 구성요소

2-1. 클래스(Class)

* 객체의 타입을 정의하고 객체를 구현하는 틀
* 유사한 성격의 객체들의 공통된 특성을 표현한 데이터 추상화 단위
* 같은 문제를 해결하기 위한 속성과 메소드를 정의한것
* 기존 언어의 사용자 정의 자료형(구조체)와 함수의 개념을 발전시킨 것

2-2. 객체(Object)

* 클래스에 의해 구현된 대상들의 총칭으로, 현실세계의 개체와 같은 개념이다
* 객체마다 고유한 속성을 가지며 클래스에 정의된 메소드 수행이 가능하다

2-3. 인스턴스(Instance)

* 특정 클래스에서 구현된 객체로, 좁은 범위의 객체를 뜻한다

2-4. 메시지(Message)

* 객체들 사이를 상호작용하기 위한 인터페이스(메소드)를 뜻한다
* 객체들은 메시지를 통해 메소드 수행을 시작한다

3. 객체지향 기술의 종류

3-1. 캡슐화(Encapsulation)

1. 캡슐화
    * 클래스의 정의 단계에서 문제해결에 관여하는 속성과 메소드를 하나로 묶는것을 말한다
2. 정보은닉(Information Hiding)
    * 캡슐화의 가장 큰 목적으로, 클래스 내부속성과 메소드를 외부의 고려되지 않은 영향(Side Effect)으로부터 보호할수 있도로 설계하는 방법
3. 캡슐화의 장점
    * 재사용이 용이 중복성이 최소화
    * 인터페이스 단순 가독성 향상
    * 정보은폐로 내부 데이터의 일관성이 유지
    * 사이드 이펙트에 의한 오류의 파급효과 작음

3-2. 추상화(Abstract)

1. 추상화의 개념
    * 클래스의 공통된 요소를 추출하여 상위(부모)클래스로 구현
    * 하위(자식)클래스 구현을 위한 큰 틀을 제공하며 상세한 구현은 하위클래스에서 진행
    * 현실세계를 자연스럽게 표현할수 있어 객체중심의 안정된 모델링이 가능해진다
    * 복잡한 문제를 간략화하는 기법으로 분석의 초점이 명확
2. 추상화의 종류
    * 기능 추상화: IPO 과정을 추상화
    * 자료 추상화: 데이터와 데이터에 적용될 기능을 함께 추상화
    * 제어 추상화: 외부 이벤트에 대한 반응을 추상화

3-3. 상속(Inheritance)

* 상위 클래스의 속성과 메소드를 하위 클래스에서 사용하도록 하는 기법
* 하위 클래스는 상위 클래스의 모든 요소를 재사용 또는 확장할수 있다
* 상위 클래스의 추상적인 요소를 하위 클래스가 구체화하여 사용
* 같은 수준의 상위클래스가 둘 이상인 경우를 다중상속이라 부른다

3-4. 다형성(Polymorphism)

* 상속된 여러 하위 객체들이 서로 다른 형태를 가질수 있는 성질
* 오버로딩, 오버라이딩 기술로 동일한 메소드명으로 서로 다른 작업을 할수 있다
    - 오버로딩: 동일한 이름의 여러 메소드중, 매개변수로 전달되는 인수의 타입과 개수를 식별하여 적절한 메소드를 호출해주는 기능
    - 오버라이딩: 상속받은 메소드의 내부기능을 새롭게 정의하는 기능
* 둘이상의 클래스에서 동일한 메시지에 대해 서로 다르게 반응할수 있도록 한다

참고자료 : 이기적 환상콤비 정보처리기사

728x90

'자격증 > 정보처리기사' 카테고리의 다른 글

Java 언어  (0) 2022.07.10
객체지향 개발 절차  (0) 2022.07.10
C언어 자료구조와 포인터  (0) 2022.07.07
C언어 선택 및 반복 제어문  (0) 2022.07.06
C언어 특징 및 입출력  (0) 2022.07.06