이것저것
OOP 란? 본문
[OOP 란?]
OOP 란 Object-Oriented Programming의 줄임말로 객체 지향 프로그래밍 방식을 의미한다.
[OOP 외의 프로그래밍 방식은 무엇이 있을까?]
- 절차적 프로그래밍 방식
입력을 받은 순서대로 처리하여 결과를 내는 방식
- 구조적 프로그래밍 방식
함수단위로 쪼개고, 함수를 호출하는 방식
큰 문제를 작은 문제 여러개로 나누어 해결 (Top-Down 방식)
- 객체 지향 프로그래밍 방식
큰 문제를 작은 문제 여러개로 나누는 것이 아닌, 작은 문제들을 해결하는 객체를 만드는 방식
객체를 조합하여 큰 문제를 해결 (Bottom-Up 방식)
[OOP의 다섯가지 원칙 : SOLID]
S (Single Respinsibilty Principle)
: 한 클래스는 하나의 책임만 갖는다.
O (Open/Closed Principle)
: 확장에는 열려있으나, 변경에는 닫혀있다.
L (Liskov's Substitution Principle)
: 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 변경 가능하다.
I (Interface Segregation Principle)
: 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
D (Depedency Inversion Principle)
: 구체화에 의존하지 말고 추상화에 의존한다.
[OOP의 특징 4가지]
1. 캡슐화
- 실제 구현 부분을 외부에 드러나지 않도록 하는 것
- 변수와 메소드를 하나로 묶는다
- 데이터를 외부에서 직접 접근하지 않고, 함수를 통해서만 접근
- ex) public, protected, private
private : 클래스 내부에서만 접근 가능
protected : 상속받은 자식 클래스에서만 접근 가능
public : 클래스 외부에서 접근 가능
2. 상속
- 자식 클래스가 부모 클래스의 특성과 기능을 물려받는 것
- 기능의 일부분을 변경하는 경우, 자식 클래스에서 상속받아 수정 및 사용
- 상속은 캡슐화를 유지, 클래스의 재사용을 용이하게끔 해준다.
3. 추상화
- interface로 클래스들의 공통적인 특성 (변수, 메서드) 들을 묶어 표현하는 것
4. 다형성
- 어떤 변수, 메서드가 상황에 따라 다른 결과를 내는 것
[오버로딩과 오버라이딩]
오버로딩 : 하나의 클래스에서 메서드의 이름이 같지만, 파라미터가 다른 것
오버라이딩 : 부모 클래스의 메서드를 자식 클래스의 용도에 맞게 재정의하여 코드의 재사용성을 높임
'Java' 카테고리의 다른 글
static 변수와 static 메서드 (0) | 2021.05.12 |
---|---|
자바 데이터 타입, 변수 그리고 배열 (0) | 2021.04.26 |
가비지 컬렉션(Garbage Collection)이란? (0) | 2021.04.18 |
JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가? (0) | 2021.04.18 |