1. 객체지향의 개요
- 현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체(Object)로 만들어, 기계적인 부품들을 조립하여 제품을 만들 듯이 소프트웨어를 개발할 때에도 객체들을 조립해서 작성할 수 있는 기법을 말함
- 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택되어 사용되고 있음
- 구조적 기법 : 프로시저에 근간을 두고 하나의 커다란 작업을 여러 개의 작은 작업으로 분할하고, 분할된 각각의 소작업을 수행하는 모듈을 작성한 다음 한 곳에 모아 큰 작업을 수행하는 하나의 완벽한 프로그램으로 작성하는 기법
- 구조적 기법의 문제점
- 유지보수는 고려하지 않고 개발 공정에만 너무 집중함
- 개발이 시작된 이후 추가적인 요구사항에 대응하기 어려움
- 재사용이 어려워 예전에 개발한 소프트웨어와 유사한 소프트웨어를 다시 개발할 때도 시간과 인력이 동일하게 소모됨
- 소프트웨어 재사용 및 확장이 용이하여 고품질의 소프트웨어를 빠르게 개발할 수 있고 유지보수가 쉬움
- 복잡한 구조를 단계적, 계층적으로 표현, 멀티미디어 데이터 및 병렬 처리를 지원
- 현실 체계를 모형화하므로 사용자와 개발자가 쉽게 이해할 수 있음
- 객체지향의 주요 구성 요소와 개념 : 객체, 클래스, 캡슐화, 상속, 다형성, 연관성
2. 객체 Object
- 데이터와 데이터를 처리하는 함수를 묶어 놓은 (캡슐화한) 하나의 소프트웨어 모듈
- 데이터
- 속성(Attribute), 상태, 변수, 상수, 자료 구조
- 객체가 가지고 있는 정보
- 속성이나 상태, 분류 등을 나타냄
- 함수
- 메소드(Method), 서비스(Service), 동작(Operation), 연산
- 객체가 수행하는 기능
- 객체가 갖는 데이터(속성, 상태)를 처리하는 알고리즘
- 객체의 상태를 참조하거나 변경하는 수단이 되는 것
- 데이터
- 객체의 특성
- 객체는 독립적으로 식별 가능한 이름을 가지고 있음
- 객체가 가질 수 있는 조건을 상태(State)라고 함, 상태는 시간에 따라 변함
- 객체와 객체는 상호 연관성에 의한 관계가 형성됨
- 객체가 반응할 수 있는 메시지의 집합을 행위라고 하며, 객체는 행위의 특징을 나타냄
- 객체는 일정한 기억장소를 가지고 있음
- 객체의 메소드는 다른 객체로부터 메시지를 받았을 때 정해진 기능을 수행
- 메시지 : 객체들 간에 상호작용을 하는데 사용되는 수단, 객체에게 어떤 행위를 하도록 지시하는 요구사항
3. 클래스 Class
- 공통된 속성과 연산(행위)을 갖는 객체의 집합
- 객체의 일반적인 타입 (Type)
- 각각의 객체들이 갖는 속성과 연산을 정의하고 있는 틀
- 객체지향 프로그램에서 데이터를 추상화하는 단위
- 인스턴스 Instance
- 인스턴스 : 클래스에 속한 각각의 객체
- 인스턴스화 : 클래스로부터 새로운 객체를 생성하는 것
- 동일 클래스애 속한 각각의 인스턴스들은 공통된 속성과 행위를 가지고 있으면서, 그 속성에 대한 정보가 서로 달라서 동일 기능을 하는 여러 가지 객체를 나타내게 됨
- 클래스의 종류
- 최상위 클래스 : 상위 클래스를 갖지 않는 클래스
- 슈퍼 클래스 : 특정 클래스의 상위(부모) 클래스
- 서브 클래스 : 특정 클래스의 하위(자식) 클래스
4. 캡슐화 Encapsulation
- 데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것을 의미
- 객체들 간의 메시지를 주고 받을 때 상대 객체의 세부 내용은 알 필요가 없으므로 인터페이스가 단순해지고, 객체 간의 결합도가 낮아짐
- 캡슐화된 객체의 특성
- 인터페이스를 제외한 세부 내용이 은폐(정보 은닉)되어 외부에서의 접근이 제한적이기 때문에 외부 모듈의 변경으로 인한 파급 효과가 적음
- 재사용이 용이
5. 상속 Inheritance
- 이미 정의된 상위 클래스(부모 클래스)의 모든 속성과 연산을 하위 클래스(자식 클래스)가 물려 받음
- 상속을 이용하면 하위 클래스는 상위 클래스의 모든 속성과 연산을 자신의 클래스 내에서 다시 정의하지 않고서도 즉시 자신의 속성으로 사용할 수 있음
- 하위 클래스는 상위 클래스로부터 상속받은 속성과 연산 외에 새로운 속성과 연산을 첨가하여 사용할 수 있음
- 상위 클래스의 속성과 연산을 하위 클래스가 사용할 수 있기 때문에 객체와 클래스의 재사용, 소프트웨어의 재사용(Reuse)을 높이는 중요한 개념
- 다중 상속 Multiple Inheritance
- 한 개의 클래스가 두 개 이상의 상위 클래스로부터 속성과 연산을 상속받는 것
- 클래스 계층을 복잡하게 만들어 상속 순서 추적이 어렵고, 상위 클래스의 변경이 하위 클래스에 의도하지 않은 영향을 미칠 수도 있음
6. 다형성 Polymorphism
- 메시지에 의해 객체가 연산을 수행하게 될 때 하나의 메시지에 대해 각각의 객체가 가지고 있는 고유한 방법(특성)으로 응답할 수 있는 능력을 의미
- 객체들은 동일한 메소드명을 사용하며 같은 의미의 응답을 함
- 응용 프로그램 상에서 하나의 함수나 연산자가 두 개 이상의 서로 다른 클래스의 인스턴스들을 같은 클래스에 속한 인스턴스처럼 수행할 수 있도록 하는 것
- 오버로딩 Overloading / 오버라이딩 Overriding
- 오버로딩 : 메소드의 이름은 같지만 인수를 받는 자료형과 개수를 달리하여 여러 기능을 정의할 수 있음
- 오버라이딩 : 메소드 재정의, 상위 클래스에서 정의한 메소드와 이름은 같지만 메소드 안의 실행 코드를 달리하여 자식 클래스에서 재정의해서 사용할 수 있음
7. 연관성 Relationship
- 두 개 이상의 객체들이 상호 참조하는 관계
종류 | 의미 | 특징 | |
is member of | 연관화 | Association | 2개 이상의 객체가 상호 관련되어 있음을 의미 |
is instance of | 분류화 | Classtication | 동일한 형의 특성을 갖는 객체들을 모아 구성하는 것 |
is part of | 집단화 | Aggregation | 관련 있는 객체들을 묶어 하나의 상위 객체를 구성하는 것 |
is a | 일반화 | Generalization | 공통적인 성질들로 추상화한 상위 객체를 구성하는 것 |
특수화 / 상세화 | Specialzation | 상위 객체를 구체화하여 하위 객체를 구성하는 것 |
'Study > EIP' 카테고리의 다른 글
[정보처리기사 필기] 인터페이스 설계 - 025. 인터페이스 요구사항 검증 (1) | 2025.01.23 |
---|---|
[정보처리기사 필기] 인터페이스 설계 - 024. 시스템 인터페이스 요구사항 분석 (0) | 2025.01.23 |
[정보처리기사 필기] 애플리케이션 설계 - 017. 아키텍처 패턴 (0) | 2025.01.22 |
[정보처리기사 필기] 애플리케이션 설계 - 016. 소프트웨어 아키텍처 (0) | 2025.01.22 |
[정보처리기사 필기] 화면 설계 - 015. HCI / UX / 감성공학 (0) | 2025.01.21 |