본문 바로가기
JAVA

[JAVA(자바)] 객체지향 프로그래밍이란? (feat. 추상화, 캡슐화, 상속, 다형성)

by 초이사 2023. 1. 10.

자바는 대표적인 객체지향 프로그래밍 언어이다.

 

 

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

  • 프로그램에 필요한 객체를 파악해 만들고 이를 조립해서 프로그램을 만드는 것을 말한다.
  • 객체지향 프로그래밍은 객체 간 독립적이기 때문에 부분 수정이 용이하다. -> 유지보수 비용이 적게 든다.

* 객체

- 물리적인 것(사람, 나무, 자동차)과 개념적인 것(주문, 결제) 중에서 다른 것과 식별이 되는 것

- 자바에서 객체는 필드와 메소드를 가진다.

 

 

순차적으로 처리되는 것을 중요시하고 프로그램 전체가 유기적으로 이어지도록 만드는 절차적 프로그래밍과 주로 비교한다. (서로 반대되는 개념은 아니다.)

  객체 지향 프로그래밍(OOP : Object Oriented Programming) 절차적 프로그래밍(PP : Procedure Programming)
방식 데이터를 중심으로 함수로 만들어 프로그래밍 데이터와 기능을 하나의 객체로 생각, 객체들을 사용해 프로그래밍
장점 1. 코드 재사용이 용이함
2. 유지보수가 쉬움
3. 디버깅이 쉬움
컴퓨터의 처리 구조와 유사 -> 실행속도 빠름
단점 1. 처리속도가 비교적 느림
2. 설계시 많은 시간이 소요됨

유지보수 어려움 (하나가 문제 생기면 전체를 고쳐야함, 순서가 정해져 있어 코드의 순서가 바뀌면 결과에 문제 생길 수 있음)
예시 JAVA, Python,C#, C++ 등 C언어

이렇게 정리하면 객체 지향 프로그래밍의 장점이 많지만 프로그래밍을 할 때 절차적 프로그래밍도 사용된다.

객체 지향 프로그래밍은 어떤 모듈에 있는 하나의 기능만 필요하다해도 그 모듈을 전부 가져와야 하기 때문에 프로그램의 사이즈가 불필요하게 커질 수 있다. 또한 그만큼 처리 속도도 느려질 수 있다. 이런 점이 중요시 될 때는 절차적 프로그래밍이 사용된다.

 

 

 

 

객체지향 프로그래밍 특징

  • 추상화
    • 공통되는 부분을 따로 모아두는 것을 말한다.
    • ex) 강아지, 고양이, 호랑이를 각각의 객체라 할 때, 공통된 특징인 사족보행을 한다 등을 찾고 이를 동물이라는 클래스로 묶어두는 것을 말한다.
  • 캡슐화
    • 객체를 캡슐로 싸서 내부를 보호하고 볼 수 없게 하는 것을 말한다. (= 객체의 필드(데이터)와 메소드를 하나로 묶고 실제 구현 내용은 외부로부터 감춘다.)
    • 은닉화라고도 한다.
    • 외부의 잘못된 사용으로 객체가 손상되지 않게 하기 위해 사용한다. 
    • 자바에서는 캡슐화된 멤버의 노출은 접근 제어자를 통해 결정한다. (public, private, protected, defalut)
  • 상속
    • 상위 개념의 특징을 하위 개념이 물려받는 것을 말한다.
    • 예를 들어 동물은 생물의 속성을 물려받고 있는데, 동물의 속하는 사람은 동물과 생물의 속성을 모두 물려받고 있다.
    • 부모 객체의 필드와 메소드를 자식이 추가로 작성하지 않고 사용할 수 있기 때문에 코드의 재사용이 용이하다.
    • 부모 객체의 필드와 메소드를 수정하면 자동으로 자식에서도 수정되기 때문에 유지보수 시간이 줄어든다.
  • 다형성
    • 사용 방법은 동일하나(같은 이름의 메소드 호출) 실행 결과가 다르게 동작하는 것을 말한다.
    • 부모 클래스의 동작을 자식 클래스 내에서 오버라이딩 되어 사용되는 것을 말한다.
    •  ex) 강아지, 고양이, 호랑이는 모두 소리를 낸다. 하지만 어떤 동물이냐에 따라 소리가 달라진다. 메소드를 소리내다로 생각하면 결과인 소리는 동물마다 달라진다.

 

 

댓글