OOP

OOP(Object Oriented Programming)의 개념과 이해

ROSEV 2021. 7. 12. 18:05

OOP를 이해하기 위한 Class, Instance, Object의 간단한 개념

클래스

  • 객체를 만들기 위한 설계도.
  • 아래 사진을 보면 붕어빵 틀이라고 할 수 있다.

객체

  • 구현할 대상(클래스에서 선언된 그대로 만들어진 것), 즉 붕어빵이다.

인스턴스

  • 설계도를 바탕으로 객체를 실체화 하면 그것이 인스턴스 이다.
  • 객체는 메모리에 할당되어 있지않으며, 단순히 클래스 내 함수로 선언 되어 있는 것이며, 클래스 밖에서 변수로 선언 되어 메모리가 할당되어지는 경우를 인스턴스라 한다.

 

또 다른 쉬운 그림을 보자면 아래와 같다.

 

 

객체vs 인스턴스

: 다시한번 살펴보자면, 객체는 클래스 타입으로 선언되엇을 때 객체라 하며, 해당 객체가 메모리에 할당되어 실제 사용 될 때 인스턴스 라고 한다. 헷갈리지 않게 주의하자. 크게 보자면 인스턴스는 객체에 포함관계이다.

코드로 보는 예시

// 클래스 //
public class snack_foods {
  ...
}
/* 객체와 인스턴스 */
public class Main {
  public static void main(String[] args) {
    snack_foods swingchip, potatochip; // '객체'

    // 인스턴스화
    swingchip = new snack_foods(); // swingchip snack_foods 클래스의 '인스턴스'(객체를 메모리에 할당)
    potatochip = new snack_foods(); // potatochip snack_foods 클래스의 '인스턴스'(객체를 메모리에 할당)
  }
}

OOP의 개념

: OOP란 프로그래밍 하는 방식 중 하나이며, 모든 물체를 클래스와 인스턴스, 함수, 변수 라는 obejct로 변환하여 프로그램을 구성한다. 즉, C언어같은 절차 지향적인 프로그래밍이 아닌 객체의 관점에서 프로그래밍을 한다는 의미이다.

목적(사용하는 이유)

: OOP를 통해 코드의 가독성을 높이고, 함수의 재사용, 재활용을 통해 코드의 중복 문제를 해결할 수 있다.

OOP의 구성

캡슐화

  • 캡슐화
    • 내부 속성(변수)와 함수(메소드 등)을 하나의 클래스로 묶는 것을 의미한다.

상속

  • 상속과 포함(Inheritance & Composition)
    • 상속 : 상위 클래스의 모든 기능(함수, 변수)을 재사용하는 것.
    • 포함 : 다른 클래스의 일부 기능(함수)만을 재사용 하는 것

추상화

  • 추상화
    • 추상화란 복잡한 내용에서 필요한 부분만을 요약하는 것을 의미한다.
    • 즉 객체들의 공통적인 부분을 묶어 하나의 추상적인 객체로 크게 정의하는 것을 추상화라고 한다

다형성

  • 다형성
    • 상속과 유사하지만, 상위 클래스의 기능을 변경하여 사용하는 것을 말한다(그대로 재사용 되진 않는다)
    • 이를 통해 코드의 재사용 및 코드 길이가 감소되어, 유지보수가 용이 해진다
    • 간단하게 설명하면 동물은 움직임(A함수)과 울음소리(B함수)를 낸다 하지만 고양이와 개는 각기 다르게 움직이고(A) 다르게 울음소리를 낸다(B)