이것저것

OOP 란? 본문

Java

OOP 란?

nays111 2021. 4. 20. 02:48

[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. 다형성

- 어떤 변수, 메서드가 상황에 따라 다른 결과를 내는 것


[오버로딩과 오버라이딩]

오버로딩 : 하나의 클래스에서 메서드의 이름이 같지만, 파라미터가 다른 것

오버라이딩 : 부모 클래스의 메서드를 자식 클래스의 용도에 맞게 재정의하여 코드의 재사용성을 높임

Comments