- 개체(Entity)를 하나의 객체(Object)로 만들어 작성
- 구조적 기법의 문제점의 해결책으로 채택
- 유지보수 고려하지 않고 개발공정에만 집중
- 개발 이후, 추가 요구사항 대응 어려움
- 재사용 불가해 유사 소프트웨어 개발 시 시간과 인력 소모
- 복잡한 구조를 단계적 · 계층적으로 표
- 멀티미디어 데이터 및 병렬처리 지원
- 사용자와 개발자가 쉽게 이해
- 객체, 클래스, 캡슐화, 상속, 다형성, 연관성
1. 객체 (Object)
- 데이터와 데이터를 처리하는 함수를 묶어 놓은 하나의 모듈
- 데이터 : 속성(Attribute), 상태, 변수, 상수, 자료 구조
- 함수 : 메소드(Method), 서비스(Service), 동작(Operation), 연산
- 객체의 메소드는 다른 객체로부터 메시지를 받았을 때 정해진 기능을 수행
객체 특성
- 독립적으로 식별 가능한 이름
- 객체가 가질 수 있는 조건 = 상태(State) → 시간에 따라 변함
- 객체 간 상호 연관성에 의한 관계가 형성됨
- 객체가 반응할 수 있는 메시지의 집합을 행위 → 객체는 행위의 특징
- 일정한 기억장소
2. 클래스 (Class)
- 공통된 속성과 연산(행위)를 갖는 객체의 집합 → 일반적인 타입(Type)을 의미
- 객체들이 갖는 속성과 연상을 종의하고 있는 틀
- 데이터를 추상화하는 단위
- 각 객체를 인스턴스(Instance)
- 클래스로부터 새로운 객체를 생성하는 것을 인스턴스화(Instantiation)
- 동일 클래스에 속한 객체들은 공통된 속성과 행위를 가지고 있으며, 속성에 대한 정보가 달라서 동일 기능을 하는 여러가지 객체를 나타냄
3. 캡슐화 (Encapsulation)
- 데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것
- 인터페이스를 제외한 세부 내용이 은폐(정보 은닉)되어 외부에서 접근이 제한적 → 외부 모듈 변경으로 인한 파급효과가 적음
- 재사용이 용이
- 인터페이스가 단순해지고, 객체 간의 결합도가 낮아짐
4. 상속 (Inheritance)
- 이미 정의된 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것
- 하위 클래스는 다시 정의하지 않고 즉시 자신의 속성으로 사용 가능
- 상속받은 속성과 연산 외에 새로운 속성과 연산을 첨가해 사용 가능
- 재사용을 높이는 중요한 개념
- 💡다중 상속(Multiple Inheritance) : 두 개 이상의 상위 클래스를 상속받는 것
5. 다형성 (Polymorphism)
- 하나의 메시지에 대해 여러가지 형태의 응답이 존재
- 하나의 함수나 연산자가 두 개 이상의 서로 다른 클래스의 인스턴스들을 같은 클래스에 속한 인스턴스처럼 수행할 수 있도록 하는 것
- 오버로딩(Overloading) : 동일 메소드명, 다른 매개변수
- 오버라이딩(Overriding) : 메소드 재정의
6. 연관성 (Relationship)
- 두 개 이상 객체(클래스)들이 상호 참조하는 관계
종류 | 의미 | 특징 |
is member of | 연관화 (Association) |
2개 이상의 객체가 상호 관련되어있음을 의미 |
is instance of | 분류화 (Classification) |
동일한 형의 특성을 갖틑 객체들을 모아 구성하는 것 |
is part of | 집단화 (Aggregation) |
관련 있는 객체들을 묶어 하나의 상위 객체를 구성하는 것 |
is a | 일반화 (Generalization) |
공통적인 성질들로 추상화한 상위 객체를 구성하는 것 |
is a | 특수화/상세화 (Specialization) |
상위 객체를 구체화하여 하위 객체를 구성하는 것 |
📖 Reference
728x90
반응형
'Certificate > 정보처리기사' 카테고리의 다른 글
[1과목 소프트웨어 설계] 애플리케이션 설계 - 025. ⭐ 모듈 (Module) (1) | 2024.05.29 |
---|---|
[1과목 소프트웨어 설계] 애플리케이션 설계 - 024. ⭐ 객체지향 분석 및 설계 (0) | 2024.05.28 |
[1과목 소프트웨어 설계] 애플리케이션 설계 - 022. ⭐ 아키텍처 패턴 (1) | 2024.05.28 |
[1과목 소프트웨어 설계] 애플리케이션 설계 - 021. ⭐ 소프트웨어 아키텍처 (0) | 2024.05.28 |
[1과목 소프트웨어 설계] 화면설계 - 020. HCI / UX / 감성공학 (0) | 2024.05.24 |