본문 바로가기
Java

Java 기본 - 객체지향 프로그래밍

by KongJiHoon 2024. 12. 7.

절차 지향 프로그래밍

  • 절차 지향 프로그래밍은 이름 그대로 절차를 지향.
  • 실행 순서를 중요하게 생각하는 방식이다.

 

**객체 지향 프로그래밍과의 차이

  • 절차 지향은 데이터와 해당 데이터에 대한 처리 방식이 분리되어 있다. 반면 객체 지향에서는 데이터와 그 데이터에 대한 메서드가 하나의 객체 안의 포함되어 있다.

예시 코드

 

MusicPlayerMain3

package oop1;

public class MusicPlayerMain3 {


    public static void main(String[] args) {

        MusicPlayerData data = new MusicPlayerData();



        // 음악 플레이어 켜기
        On(data);

        // 볼륨 증가

        increase(data);
        // 볼륨 증가


        increase(data);
        // 볼륨 감소

        decrease(data);

        // 음악플레이어 상태
        state(data);

        // 음악플레이어 끄기

        Off(data);
    }

    static void On(MusicPlayerData data) {
        data.isOn = true;

        System.out.println("음악 플레이어를 시작합니다.");

    }

    static void Off(MusicPlayerData data) {
        data.isOn = false;

        System.out.println("음악 플레이어 끄기.");

    }

    static void increase(MusicPlayerData data) {
        data.volume++;

        System.out.println("음악 플레이어 볼륨: " + data.volume);


    }

    static void decrease(MusicPlayerData data) {
        data.volume--;

        System.out.println("음악 플레이어 볼륨: " + data.volume);


    }

    static void state(MusicPlayerData data) {
        System.out.println("음악 플레이어 상태 확인");

        if (data.isOn) {
            System.out.println("음악 플레이어 ON, 볼륨: " + data.volume);
        } else {
            System.out.println("음악 플레이어 OFF");
        }
    }

}

 

MusicPlayerData

package oop1;

public class MusicPlayerData {

    int volume = 0;

    boolean isOn = false;

}

 

** 위 코드는  MusicPlayerData클래스에는 속성만이 정의 되어 있고, 메서드는 MusicPalyerMain3에 정의되어 있다. 절차지향 프로그래밍에서는 위와 같이 속성과 메서드가 분리되어 있다.

 

객체 지향 프로그래밍

** 객체 지향 프로그래밍은 실제 세계의 사물이나 사건을 객체로 보고, 이러한 객체들 간의 상호작용을 중심으로 프로그래밍 하는 방식이다. 데이터와 그 데이터에 대한 행동(메서드)이 하나의 '객체' 안에 포함되어 있다.

 

예시 코드

 

MusicPlayer

package oop1;

public class MusicPlayer {

    int volume = 0;

    boolean isOn = false;

    void on() {
        this.isOn = true;

        System.out.println("음악 플레이어를 시작합니다.");

    }

    void off() {
            this.isOn = false;

            System.out.println("음악 플레이어 끄기.");


    }

    void volumeUp() {
        this.volume++;

        System.out.println("음악 플레이어 볼륨: " + this.volume);

    }

    void volumeDown() {
        this.volume--;

        System.out.println("음악 플레이어 볼륨: " + this.volume);

    }

    void showStatus() {
        System.out.println("음악 플레이어 상태 확인");

        if (this.isOn) {
            System.out.println("음악 플레이어 ON, 볼륨: " + this.volume);
        } else {
            System.out.println("음악 플레이어 OFF");
        }
    }

}

 

MusicPlayerMain4

package oop1;

public class MusicPlayerMain4 {


    public static void main(String[] args) {

        MusicPlayer musicPlayer = new MusicPlayer();

        musicPlayer.on();

        musicPlayer.volumeUp();
        musicPlayer.volumeUp();
        musicPlayer.volumeDown();

        musicPlayer.showStatus();

        musicPlayer.off();

    }


}

 

  • 객체 지향 프로그래밍에서는 위 코드와 같이 MusicPlayer 클래스 안에 속성과 메서드가 함께 정의 되어 있고, MusicPlayerMain4에서는 객체를 생성하고 MusicPlayer의 속성과 메서드를 사용하고 있다.

캡슐화

  • 속성과 기능을 하나로 묶어서 필요한 기능을 메서드를 통해 외부에 제공하는 것을 캡슐화라고 한다.

** 객체란?

  • 세상의 모든 사물을 단순하게 추상화해보면 속성과 기능 2가지로 설명할 수 있다.
  • 자동차
    • 속성: 차량 색상, 현재 속도
    • 기능: 엑셀, 브레이크, 문 열기, 문 닫기
  • 동물
    • 속성: 색상, 키, 온도
    • 기능: 먹는다, 걷는다
  • 객체 지향의 특징은 속성과 기능을 하나로 묶는 것 뿐만 아니라 캡슐화, 상속, 다형성, 추상화, 메시지 전달 같은 다양한 특징들이 있다.

'Java' 카테고리의 다른 글

Java 기본 - 접근제어자  (0) 2024.12.21
Java 기본 - 생성자  (0) 2024.12.08
Java 기본 - 기본형과 참조형  (0) 2024.12.04
Java 기본 - 클래스(배열)  (0) 2024.11.19
Java 기본 - 클래스, 객체, 인스턴스  (0) 2024.11.11