[JAVA] 김영한의 실전 자바; 객체 지향 프로그래밍

선뀰·2023년 12월 27일
0

JAVA

목록 보기
11/25

1. 절차 지향 프로그래밍

- 절차 지향 프로그래밍

실행 순서를 중요하게 생각하는 방식이다.

  • 데이터를 묶음
public class MusicPlayerData {
    int volume = 0;
    boolean isOn = false;
}

- 절차 지향 프로그래밍 메서드 추출

코드의 중복을 피하기 위해 메서드를 사용하여 각각의 기능을 구분하기
메서드를 통해 각각의 기능을 모듈화하고, 여러번 호출하면 된다.

절차 지향 프로그래밍의 한계

데이터와 기능이 분리되어 있다는 점이다. 유지보수 할 때 관리 포인트가 2곳으로 늘어난다.

= 객체 지향 프로그래밍을 통해 데이터와 기능을 하나로 묶어서 사용할 수 있다.

메서드는 객체를 생성해야 호출할 수 있다. 그런데 static이 붙으면 객체를 생성하지 않고, 메서드를 호출할 수 있다.

  • 클래스와 메서드
    인스턴스의 메서드를 호출하는 방법은 .을 찍어서 메서드를 호출한다.
    클래스는 속성(데이터, 멤버 변수)와 기능(메서드)를 정의할 수 있다.
    객체는 자신의 메서드를 통해 자신의 멤버 변수에 접근할 수 있다.
    객체의 메서드 내부에서 접근하는 멤버 변수는 객체 자신의 멤버 변수이다.

- 객체 지향 프로그래밍

객체를 지향한다. 객체를 중요하게 생각하는 방식이다.
객체들 간의 상호작용을 중심으로 프로그래밍 하는 방식이다. '무엇을' 중심으로 프로그래밍 한다.

public class ValueData {
    int value; // 속성

    void add() { // 기능
        value++;
        System.out.println("숫자 증가 value=" + value);
    }
}

데이터와 기능을 한곳에 두는 것을 객체 지향 프로그래밍이라고 한다.

  • 캡슐화
    속성과 기능이 하나의 속성에 싸여있는 것 같다. 속성과 기능을 하나로 묶어서 필요한 기능을 메서드를 통해 외부에 제공하는 것이 캡슐화이다.
public class MusicPlayer {
    int volume = 0;
    boolean isOn = false;

    void on() {
        isOn = true;
        System.out.println("음악 플레이어를 시작합니다.");
    }
    void off() {
        isOn = false;
        System.out.println("음악 플레이어를 시작합니다.");
    }
}

- 절차 지향 프로그래밍

절차를 지향한다. 실행 순서를 중요하게 생각하는 방식이다.
절차 지향은 데이터와 해당 데이터에 대한 처리 방식이 분리되어 있다.
프로그램의 흐름을 순차적으로 처리하는 방식이다. "어떻게"를 중심으로 프로그래밍한다.

- 객체 지향 프로그래밍

객체를 지향한다. 객체를 중요하게 생각하는 방식이다.
객체들 간의 상호작용을 중심으로 프로그래밍 하는 방식이다.
객체지향은 데이터와 그 데이터에 대한 행동(메서드)가 하나의 '객체' 안에 포함되어 있다.

- 객체란?

속성(데이터)와 기능 2가지로 설명할 수 있다.
객체 지향 프로그래밍은 모든 사물을 속성과 기능을 가진 객체로 생각하는 것이다.

ex. 자동차
속성 : 차량 색상, 현재 속도
기능 : 엑셀, 브레이크, 문 열기, 문 닫기

문제와 풀이

문제 1. 절차 -> 객체코드로 변경하기

문제 2. 은행 계좌를 객체로 설계하기

profile
공부 기록

0개의 댓글