| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- 프로그래머스 #자바 #java #코딩테스트 #연속된 수의 합 #코딩
- JAVA #객체지향언어 #절차지향언어 #코딩 #Python #C #C++ #객체지향 #절차지향
- 프로그래머스 #JAVA #코딩테스트 #다음에 올 숫자 #코딩
Archives
- Today
- Total
Javadocs
Chap 3 - 3. 객체지향(Object-Oriented) 본문
point!!
- 객체지향의 특징과 객체지향과 관련된 용어들을 확실히 파악!
- 객체와 메시지의 개념을 묻는 문제가 출제.
- 클래스의 개념과 특징
- 캡슐화의 특징
- 상속의 개념
- 다형성의 의미
1. 개요
기계적인 부품들을 조립하여 제품을 만들 듯이 소프트웨어를 개발할 때에도 객체들을 조립해서 작성할 수 있는 기법을 말한다.
- 구조적 기법의 문제점*으로 인한 소프트웨어 위기의 해결책으로 채택되어 사용되고 있다.
| * 구조적 기법의 문제점 - 유지보수는 고려하지 않고 개발공정에만 너무 집중 - 개발이 시작된 이후 추가적인 요구사항에 대응하기 어려움 - 재사용이 어려워 이전에 개발한 소프트웨어와 유사한 소프트웨어를 다시 개발할 때 시간과 인력이 동일하게 소모. |
- 소프트웨어의 재사용 및 확장이 용이하여 고품질의 소프트웨어를 빠르게 개발할 수 있고 유지보수가 쉽다.
- 복잡한 구조를 단계적, 계층적으로 표현하고, 멀티미디어 데이터 및 병렬 처리를 지원한다.
- 사용자와 개발자가 쉽게 이해할 수 있다.
- 종류
- 객체(Object)
- 클래스(Class)
- 캡슐화(Encapsulation)
- 상속(Inheritance)
- 다형성(Polymorphism)
- 연관성(Relationship)
2. 객체(Object)
데이터와 데이터를 처맇는 함수를 묶어 놓은(캡슐화한) 하나의 소프트웨어 모듈.
| 데이터 | - 객체가 가지고 있는 정보로 속성이나 상태, 분류 등을 나타냄 - 속성(Attribute), 상태, 변수, 상수, 자료 구조라고도 함. |
| 함수 | - 객체가 수행하는 기능으로 객체가 갖는 데이터(속성, 상태)를 처리하는 알고리즘 - 객체의 상태를 참조하거나 변경하는 수단이 되는 것. 메소드, 서비스, 동작, 연산이라고도 함 |
- 특성
- 독립적으로 식별 가능한 이름을 가지고 있다.
- 객체가 가질 수 있는 조건을 상태(State)라고 하는데, 일반적으로 상태는 시간에 따라 변함.
- 객체와 객체는 상호 연관성에 의한 관계가 형성.
- 객체가 반응할 수 있는 메시지의 집합을 행위라고 하며, 객체는 행위의 특징을 나타낼 수 있음.
- 일정한 기억장소를 가지고 있음.
- 객체의 메소드는 다른 객체로부터 메시지를 받았을 때 정해진 기능을 수행한다.
3. 클래스(Class)
공통된 속성과 연산(행위)을 갖는 객체의 집합으로 객체의 일반적인 타입을 의미함.
- 각각의 객체들이 갖는 속성과 연산을 정의하고 있는 틀
- 객체지향 프로그램에서 데이터를 추상화하는 단위
- 클래스에 속한 각각의 객체를 인스턴스(Instance)라 하며, 클래스로부터 새로운 객체를 생성하는 것을 인스턴스화(Instantiation)라고 한다.
- 동일 클래스에 속한 각각의 객체(인스턴스)들은 공통된 속성과 행위를 가지고 있으면서, 그 속성에 대한 정보가 서로 달라서 동일 기능을 하는 여러 가지 객체를 나타내게 됨.
- 최상위 클래스는 상위 클래스를 갖지 않는 클래스를 의미.
- 슈퍼 클래스는 특정 클래스의 상위클래스이고, 서브 클래스는 특정 클래스의 하위 클래스 이다.
4. 캡슐화(Encapsulation)
데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것을 의미.
- 캡슐화된 객체는 인터페이스를 제외한 세부 내용이 은폐(정보은닉)되어 외부에서의 접근이 제한적이기 때문에 외부 모듈의 변경으로 인한 파급 효과가 적다.
- 재사용이 용이
- 객체 간의 메시지를 주고 받을 때 상대 객체의 세부 내용은 알 필요가 없으므로 인터페이스가 단순해지고, 객체 간의 결합도가 낮아짐.
5. 상속(Inheritance)
이미 정의된 상위(부모) 클래스의 모든 속성과 연산을 하위(자식) 클래스가 물려받는 것.
- 하위 클래스는 상위 클래스의 모든 속성과 연산을 자신의 클래스내에서 다시 정의하지 않고도 즉시 자신의 속성으로 사용할 수 있다.
- 상위 클래스로부터 상속받은 속성과 연산 외에 새로운 속성과 연산을 첨가하여 사용할 수 있다.
- 객체와 클래스의 재사용 ,즉 소프트웨어의 재사용을 높이는 중요한 개념
- 다중 속성(Multiple Inheritance) : 한 개의 클래스가 두 개 이상의 상위 클래스로부터 속성과 연산을 상속받는 것.
6. 다형성(Polymorphism)
메시지에 의해 객체(클래스)가 연산을 수행하게 될 때 하나의 메시지에 대해 각각의 객체(클래스)가 가지고 있는 고유한 방법(특성)으로 응답할 수 있는 능력을 의미.
- 객체(클래스)들은 동일한 메소드명을 사용하며 같은 의미의 응답을 한다.
- 응용 프로그램 상에서 하나의 함수나 연산자가 두 개 이상의 서로 다른 클래스의 인스턴스들을 같은 클래스에 속한 인스턴스처럼 수행할 수 있도록 하는 것.
7. 연관성(Relationship)
연관성은 두 개 이상의 객체(클래스)들이 상호 참조하는 관계를 말하며, 종류는 다음과 같다
| 종류 | 의미 | 특징 |
| is member of | 연관화(Association) | 2개 이상의 객체가 상호 관련되어 있음을 의미 |
| is instance of | 분류화(Classfication) | 동일한 형의 특성을 갖는 객체들을 모아 구성하는 것 |
| is part of | 집단화(Aggregation) | 관련 있는 객체들을 묶어 하나의 상위 객체를 구성하는 것 |
| is a | 일반화(Generalization) | 공통적인 성질들로 추상화한 상위 객체를 구성하는 것 |
| 특수화/상세화(Specialization) | 상위 객체를 구체화하여 하위 객체를 구성하는 것 |
'[ 정보처리기사 ] > [정보처리기사] 1. 소프트웨어 설계' 카테고리의 다른 글
| Chap.1 - 요구사항 확인(2) (1) | 2023.05.14 |
|---|---|
| Chap.1 - 요구사항 확인(4) (0) | 2023.05.12 |
| Chap.1 - 요구사항 확인(1) (0) | 2023.05.05 |
| Chap 3 - 2. 아키텍처 패턴 (0) | 2023.03.09 |
| Chap 3 - 1. 소프트웨어 아키텍처 (0) | 2023.03.09 |
Comments