1. OOP
- Object Orientied Programming
- 먼저 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립해서 완성된 프로그램을 만드는 기법
2. 객체란?
- 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것
- 객체는 속성과 동작으로 구성되어 있습니다.
- 자바는 속성과 동작들을 필드와 메소드라고 부릅니다.
- 현실 세계의 객체를 소프트웨어 객체로 설계하는 것을 객체 모델링이라고 합니다.
3. 객체의 상호작용
- 현실 세계에서 일어나는 모든 현상은 객체와 객체 간의 상호작용으로 이루어져 있습니다.
- 소프트웨어에서도 객체들은 각각 독립적으로 존재하고, 다른 객체와 서로 상호작용하면서 동작합니다.
- 객체들 사이의 상호작용 수단은 메소드입니다.
- 객체의 상호작용은 객체 간의 메소드 호출을 의미하며 매개 값과 리턴 값을 통해서 데이터를 주고받습니다.
- 매개 값은 메소드를 실행하기 위해 필요한 데이터
- 리턴 값은 메소드가 실행하고 나서 호출 한 곳으로 돌려주는 데이터 (결과값)
4. 객체 간의 관계
집합 관계
- 객체는 하나의 [부품]이고 하나의 [완성품]에 해당합니다.
- Ex) 컴퓨터는 여러 부품으로 구성되어 있습니다.
- 컴퓨터 <-- 집합 관계 -- { CPU, GPU, HDD, MEMORY, POWER,... }
사용 관계
- 객체 간의 [상호작용], 객체는 다른 객체의 [메소드 호출]하여 원하는 결과를 얻어냅니다.
- Ex) 사람은 컴퓨터를 사용합니다.
- 사람 -- 사용 관계 --> 컴퓨터
상속 관계
- 상위(부모) 객체를 기반으로 하위(자식) 객체를 생성하는 관계를 말합니다.
- Ex) 컴퓨터는 기계의 종류입니다.
- 컴퓨터 --상속 관계-->기계
5. 객체 지향 프로그래밍의 특징
캡슐화(Encapsulation)
- 객체의 필드, 메소드를 하나로 묶고 실제 구현 내용을 감추는 것 입니다.
- 외부 객체는 객체 내부의 구조를 알지 못하며 객체가 노출해서 제공하는 필드와 메소드만 이용할 수 있다.
- 필드와 메소드를 캡슐화하여 보호하는 이유는 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하기 위해서입니다.
- 캡슐화된 멤버를 노출시킬 것인지, 숨길 것인지를 결정하기 위해 접근 제한자(Access Modifier)를 사용합니다.
- Access Modifier는 객체의 필드와 메소드의 사용 범위를 제한함으로써 외부로부터 보호합니다.
상속(Inheritance)
- 상위 객체는 자기가 가지고 있는 필드와 메소드를 하위 객체에게 물려주어 하위 객체가 사용할 수 있도록 해줍니다.
- 상속은 상위 객체를 재사용해서 하위 객체를 쉽고 빠르게 설계할 수 있도록 도와줍니다.
- 객체를 재사용해서 새로운 객체를 만들기 때문에 반복된 코드를 줄여줍니다.
다형성(Polymorphism)
- 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질을 말합니다.
- 다형성은 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있도록 해줍니다.
- 자바는 다형성을 위해 부모 클래스 또는 인터페이스의 타입 변환을 허용합니다.
- 부모 타입에는 모든 자식 객체가 대입될 수 있고, 인터페이스 타입에는 모든 구현 객체가 대입될 수 있습니다.
- 다형성의 효과로 객체는 부품화가 가능합니다.
'Backend > 객체 지향 프로그래밍' 카테고리의 다른 글
[Java] 클래스의 구성 멤버 (메소드) (0) | 2022.04.07 |
---|---|
[Java] 클래스의 구성 멤버 (생성자) (0) | 2022.04.06 |
[Java] 클래스의 구성 멤버 (필드) (0) | 2022.04.05 |
[Java] 객체와 클래스 (Object & Class) (0) | 2022.04.04 |
[Java] 객체 지향 프로그래밍의 특징 (자바 소스 코드) (0) | 2022.04.03 |