본문 바로가기
Java

객체지향 프로그래밍(OOP: Object Oriented Programming)이란?

by 그냥팬더 2021. 5. 2.
반응형

객체지향 프로그래밍(이하 OOP)이란?

컴퓨터 프로그래밍 패러다임 중 하나로, "객체"의 모임으로 파악하고, 각 "객체"는 서로 메세지를 주고받고, 데이터를 처리할 수 있다

OOP의 기본 요소

  • 클래스: 같은 속성과 행위를 정의한 것. OOP의 기본적인 사용자 정의 데이터형식
  • 객체: 클래스의 인스턴스. 객체는 자신의 고유한 속성을 가지고, 정의된 행위를 할 수 있다.
  • 메서드: 클래스로부터 생성된 객체를 사용하는 방법. 한 객체의 서브루틴 형태로 객체의 속성을 조작하는데 사용된다.
  • 메세지: 객체에 내리는 명령. 객체 간 통신은 메세지를 통해 이뤄진다.

OOP의 특징

1. 추상화(Abstraction)

  • 불필요한 정보는 없애고, 중요한 정보만을 표현함으로 프로그래밍을 쉽게만든다
  • 객체지향의 관점에서 클래스를 정의하는 것

논외로, 속성 위주의 추상화가 아닌 동작 위주의 추상화를 하는 것이 좋다 동작에 필요하지 않은 속성은 결국 불필요하다

2. 캡슐화(Encaptulation)

  • 객체의 데이터를 외부에서 접근하지 못하게 막고, 함수(메소드)를 통해서 조작이 가능하게 하는 작업
  • SW 공학 관점에서 높은 응집도와 낮은 결합도를 유지할 수 있도록 설계하는 것 유지보수 할 때 유연하게 대처가 가능하다
    • 응집도(Cohension): 클래스나 모듈 안의 요소가 얼마나 밀접하게 관련되어 있는지
    • 결합도(Coupling): 어떤 기능을 수행하는데 다른 클래스나 모듈에 얼마나 의존적인지

코드를 수정 없이 활용 할 수 있도록 한다.

요청자는 '무엇'을 할지만 요청하고, 수신자는 '어떻게' 처리할 지를 결정하면 됨

3. 상속(Inheritance)

  • 부모(조상) 클래스의 속성과 기능을 그대로 사용할 수 있다
  • 기능의 일부를 변경할 경우 상속받은 자식 클래스에서 다시 정의하여 사용할 수 있게 하는 것
  • General한 클래스를 만들어 두면 반복적으로 구현하지 않아도 됨

4. 다형성(Polymorphism)

  • 동일한 요청에 대해 다양한 방식으로 응답할 수 있다.
    즉, 오버로딩, 오버라이딩이 가능하다

오버로딩(Overloading): 같은 이름의 메서드를 여러개 정의하고, 매개변수 타입과 개수를 다르게 해 매개변수에 따라 다르게 호출한다

오버라이딩(Overriding): 부모클래스와 메서드와 같은 이름의 동작을 재정의한다

OOP의 장점

  • 코드 재 사용이 용이하다 상속을 통해 확장하거나, 남이 정의한 클래스를 사용하기 쉽다
  • 유지보수가 쉽다 절차지향언어에서는 수정할 부분을 찾아야 하지만, OOP에서는 클래스 내부를 수정하면 쉽게 해결할 수 있다
  • 대형 프로젝트에 적합하다

OOP의 단점

  • 처리속도가 상대적으로 느림
  • 설계시 많은 노력이 필요하다

참고:

반응형

'Java' 카테고리의 다른 글

Java Code Convention  (0) 2021.05.02
VO, DTO, Entity  (0) 2021.05.02
JVM이란 무엇인가?  (0) 2021.04.27

댓글