새소식

프로그래밍 언어/JAVA

자바 기초 - 객체 지향 프로그래밍 (OOP)

  • -

객체지향 프로그래밍


객체지향 프로그래밍에 대해서 알아보기 위해서는 우선 객체(Object)에 대해서 알아야 합니다.

 

객체사전적 의미로 주체에 반대되는 말로 주체가 활용하는 것, 실세계에 존재하거나 생각할 수 있는 것을 의미합니다.

간단하게 말해 우리 주변의 모든 것들을 객체라고 부릅니다.

 

객체를 지향한다라는 의미의 객체지향 프로그래밍은 주변의 많은 것들 오브젝트화(객체화)하여 프로그래밍 하는 것을 의미합니다.

 

게임을 좋아하시는 분이라면 게임 내에서 오브젝트가 의미하는게 대강 무슨 뜻인지 아실거라 생각합니다. 각각의 오브젝트가 모여서 각기 다른 역할을 하며, 이러한 오브젝트들이 모여 하나의 게임을 구성하는 것처럼 현실 세계를 객체를 통해 구현하는 것을 객체지향 프로그래밍이라고 할 수 있습니다.

 

 

 

 

객체지향 언어의 특징


객체지향 언어의 특징을 간단하게 요약하면 다음과 같습니다.

 

  • 추상화 (Abstraction) : 현실의 객체를 필요한 요소만 뽑아 추상화해서 클래스로 구성
  • 다형성 (Polymorphism) : 하나의 객체를 여러 가지 타입으로 바꾸어 참조 가능
  • 상속 (Inheritance) : 부모 클래스의 자산을 물려받아 자식을 정의하여 코드를 재사용
  • 캡슐화 (Encapsulation) : 데이터를 클래스 내부에 숨겨 외부로 노출시키지 않고 메소드를 이용해 보호

 

객체지향 프로그래밍의 장점


객체지향 프로그래밍은 다음과 같은 장점을 가지고 있습니다.

 

  • 블록 형태의 모듈화된 프로그래밍
    • 신뢰성 높은 프로그래밍이 가능
    • 추가 / 수정 / 삭제가 용이
    • 재 사용성이 높음

 

레고를 생각해보면 이해하기 쉽습니다. 각각의 레고(객체)블록은 검증된 크기와 색상, 모양을 가지고 있고 이를 끼우거나 빼거나 움직일 수 있습니다. 이를 가지고 자동차도 만들고, 비행기도 만들고, 디자인이 마음에 안든다면 특정 부품만 바꿔서 끼울 수 있고.. 이처럼 모듈화가 되어있다면 유연성을 가지고 폭넓은 확장성을 가지게 됩니다.

 

 

Class vs Object


처음 배울 땐 두 단어가 같은게 아닌가 생각했는데, 공부하다보니 다르다는 걸 알게 되었습니다. 

 

  • 현실의 객체가 갖는 속성과 기능을 추상화하여 하나의 틀(설계도)로 만든 것이 Class
  • 클래스라는 설계도를 통해 만들어낸 것이 Object(or Instance)

 

프로그래밍 언어에서 클래스는 직접 사용할 수 없고, 객체를 만들기 위한 틀만을 제공합니다.

객체의 경우, 클래스를 데이터 타입으로 가지며 메모리에 직접 생성되어 실제로 동작하게 됩니다. 자바에서는 이렇게 클래스를 이용해 생성된 객체를 보통 인스턴스라고 부릅니다.

'프로그래밍 언어 > JAVA' 카테고리의 다른 글

자바 기초 - 상속  (0) 2023.07.19
자바 기초 - 생성자  (0) 2023.07.19
자바 기초 - 조건문과 반복문  (0) 2023.07.12
자바 기초 - 5. 연산자  (0) 2023.04.10
자바 기초 - 4. 변수와 데이터 타입  (0) 2023.04.06
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.