OOP(객체 지향 프로그래밍)

<aside> 📌

객체는 모바일, 책, 테이블, 컴퓨터, 시계 등과 같은 실제 세계의 개체를 의미한다. 객체 지향 프로그래밍은 CLASS와 객체를 사용하여 프로그램을 설계하는 방법론 또는 패러다임이다. 몇 가지 개념을 제공하여 소프트웨어 개발 및 유지 관리를 단순화한다.

</aside>

java-oops-concepts.jpg


2-1. 객체와 객체 지향 프로그래밍

<aside> 💡

우리 주위에 있는 객체를 생각해 보면 사람, 자동차, 건물 등이 있다. 눈에 보이는 사물은 모두 객체라고 할 수 있다. 그런데 눈에 안 보이는 것도 객체가 될 수 있다. 주문, 생산, 관리 등 어떤 행동을 나타내는 단어도 객체가 될 수 있다. 객체 지향 프로그래밍 이란 ‘어떤 대상(객체)을 가지고 프로그래밍 한다’ 라는 개념이다.

</aside>


2-2. CLASS

<aside> 💡 객체 지향 프로그램은 CLASS를 기반으로 프로그래밍 한다. CLASS는 객체의 속성과 기능을 코드로 구현 한 것이다. 객체를 CLASS로 구현하는 것을 ‘CLASS를 정의한다. 라고 한다.

</aside>

CLASS의 구성 요소

  1. 멤버 필드 : 멤버로 속성을 표현한다, CLASS 블록 내에서 선언된 변수

  2. 멤버 Mehtod : 기능을 표현한다.

    1. 정의하는 유형에 따라 4가지로 분류한다. (return 타입과 매개변수 유무에 따라)
      1. void method이름() : 매개변수가 없을 때 (void)표기
      2. void method이름(매개변수) : setter method
      3. . return타입 method이름() : getter method
      4. return타입 method이름(매개변수)
  3. 생성자 : 생성된 객체의 필드를 초기화한다.

        (따로 만들지 않아도 CLASS를 정의하면 기본 생성자 가 생성된다.)
    
  4. CLASS 이름 짓는 규칙

    1. CLASS 이름은 대문자로 시작한다. 소문자로 시작한다고 해서 오류가 발생하는 것은 아니지만 대문자로 시작하는 것이 개발자들 사이의 규칙이다.

getter, setter Method

<aside> 💡 객체 지향 프로그래밍에서 객체의 데이터는 외부에서 직접적으로 접근하는 것을 막는다. 객체 데이터를 외부에서 읽고 변경 시 데이터의 무결성이 깨질 수 도 있기 때문이다. 따라서 객체 지향 프로그래밍에서는 Method를 통해 데이터에 접근하는 방식을 선호한다. 필드를 선언 할 때는 private을 선언해서 보호하고 필드는 getter, setter 메소드를 통해 불러오고 사용하는 것이 좋다.

</aside>

  1. setter : 외부에서 Method를 통해 데이터에 접근하도록 유도한다. 필드 값을 설정해야 하므로 매개변수가 필요하다.