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

이상혁·2023년 11월 15일
0

객체지향 프로그래밍은 Object-Oriented Programming으로 OOP라고 불린다.
그러다면 이 객체 지향 프로그래밍은 무엇일까?
이 객체 지향 프로그래밍에 대해서 알아보자

객체지향프로그래밍

객체지향 프로그래밍은 여러 독립적인 부품들 즉, 객체들의 유기적인 협력과 결합으로 프로그래밍을 하는 것을 말한다.

업로드중..

조금 더 쉬운 설명을 위해서 자동차를 예시로 들 수 있다.
자동차는 일체형으로 만드는 것이 아니라 부품들을 조합해서 만드는 것이다.
엔진, 핸들, 문, 바퀴 등등 각자의 부품들이 하나의 연결되고 조립이 되어서 자동차가 된다.

객체지향 프로그래밍도 똑같다.
부품, 즉 객체들이다.
이 객체들이 서로 결합되도 유기적으로 협력을 하면서 프로그램을 만드는 프로그래밍 방법론이다.

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

나중에 객체지향 프로그래밍의 특징을 공부하다 보면 자연스럽게 알게 되겠지만 객체지향 프로그래밍의 장점을 알고 가자
객체지향 프로그래밍의 가장 큰 장점은 프로그램을 보다 유연하고 변경이 용이하게 만들 수 있다.

위에서 예시로 들었던 차를 다시 가지고 와보자
만약 차에 타이어에 구멍이 뚫리면 우리는 타이어를 교체한다.
이 때, 차를 아예 바꾸거나 다른 부분들 싹 다 다시 교체하는 것이 아니라 구멍이 난 타이어만을 바꾼다.
그러면 차는 운전을 하는데 아무 이상이 없을 것이다.

여기서 중요한 것은 문제가 있는 타이어만 교체를 한 것이다.
엔진, 핸들과 같은 다른 부품들은 건디리지 않았다.

이와 마찬가지로 객체지향 프로그래밍을 잘 설계한 프로그램도 문제가 있는 객체만을 수정하거나 다른 객체로 변경을 해서 코드의 변경과 유지 보수를 하는데 유리하다.

또 다른 장점으로는 코드의 재사용을 통해서 반복적인 코드를 최소화하고, 코드를 최대한 간결하게 표현할 수 있다.

객체란

자, 객체지향 프로그래밍에 대해서는 뭔지 알아보았다.
그렇다면 이 객체라는 것은 무엇일까?

객체는 사전적 정의로 모든 실재하는 대상이라고 정의가 되어 있다.
우리 눈 앞에 보이는 의자, 책상, 컴퓨터 등등 우리가 만지고 인지하고 볼 수 있는 것을 객체라고 본다.

프로그래밍에서의 객체는 클래스에 정의 내용을 가지고 메모리에 생성된 것을 말한다.
아 객체는 속성과 기능을 가지고 있는데, 속성을 표현한 것이 변수이고 기능을 표현한 것이 함수이다.

쉬운 설명을 위해서 아이폰을 예시로 들겠다.
각각의 아이폰마다 다르겠지만 용량, 색상은 다 가지고 있고 전화라는 기능을 가지고 있다.
즉, 용량의 크기다 다 다르고 색상도 다르지만 모든 아이폰은 용량을 가지고 있고 색상을 가지고 있다.
또한 전화하는 기능을 가지고 있다.
이렇게 용량과 색상이라는 공통된 속성과 전화라는 기능을 설계도로 만든다.
이 설계도를 클래스라고 생각하면 된다.

그리고 이 설계도를 통해서 다양한 아이폰을 만들 수 있다.
이렇게 만들어진 것을 객체 또는 인스턴스라고 한다.

사실 객체는 인스턴스를 품고 있는 더 큰 개념이긴하다.
우리가 클래스를 통해서 구현해할 대상이 객체이다.
클래스를 통해서 실제로 구현을 한 것이 인스턴스이다.
객체에는 인스턴스가 포함이 된다.

조금 더 쉬운 설명을 위해서 코드를 보자

/* 클래스 */
public class IPhone {
  ...
}

/* 객체와 인스턴스 */
public class Main {
  public static void main(String[] args) {
    IPhone redIPhone, blueIPhone; // '객체'

    // 인스턴스화
    redIPhone = new IPhone(); // redIPhone IPhone 클래스의 '인스턴스'(객체를 메모리에 할당)
    blueIPhone = new IPhone(); // blueIPhone IPhone 클래스의 '인스턴스'(객체를 메모리에 할당)
  }
}

위 코드 처럼 클래스는 설계도이다.
속성에 자신의 원하는 값을 넣어서 객체를 만들 수 있도록 해주는 것이다.
그리고 클래스의 타입으로 변수를 선언을 한 것을 객체라고 부른다.
마지막으로 new 생성자를 통해서 실제 메모리에 객체를 할당하면 인스턴스라고 부른다.

조금 더 풀어서 설명을 하자면
클래스는 아이폰의 공통된 속성과 기능을 뽑아서 어떻게 만들지 설계도를 만드는 과정이고

변수 선언은 어떤 아이폰을 만들지 구현할 대상을 정하는 것이다.
우리가 redIPhone이라고 선언하면 우리에게 이 redIPhone는 구현할 대상이 된다.
아까 객체는 구현할 대상이라고 했다.
즉, redIPhone은 객체가 되는 것이다.

new 생성자로 만드는 것은 실제 우리가 redIPhone을 만든 것이다.
인스턴스는 클래스를 통해서 구현된 실제이다.
그래서 이렇게 new 생성자로 만드는 것을 인스턴스라고 한다.

이렇게 객체지향 프로그래밍이 무엇인지,
장점은 어떤 것이고 객체는 무엇인지에 대해서 알아 보았다.

다음 블로그에는 객체지향 프로그래밍의 특징에 대해서 알아보자

profile
개발 공부 하기 위해 만든 블로그

0개의 댓글