객체 지향 프로그래밍이란?

hyeop29·2023년 2월 19일
0

어느 날 학교 선배가 지금 좀 더 집중해서 공부했으면 하는 부분이 OOP, 객체지향이 뭔지, 어떻게 짜야 객체지향적인 건지 감이라도 잡으면 좋을 거 같다는 말을 듣고, 객체지향에 대해 정리하기로 했다.

객체

  • 구체적, 추상적 데이터의 단위
  • 프로그래밍에서 특정한 데이터와 그 데이터를 처리하는 메서드(Method)를 함께 묶어서 캡슐화(Encapsulation)한 것을 의미
  • ex) 학생, 회원, 주문, 자동차 등

즉, 객체는 데이터와 이를 처리하는 코드를 하나로 묶어서 독립적으로 존재하며, 다른 객체와 상호작용을 할 수 있습니다.

객체 지향 프로그램

객체 지향 프로그래밍(Object-Orientde Programming, OOP)은 컴퓨터 프로그래밍 패러다임 중 하나로, 실제 세계의 객체들을 소프트웨어 객체로 모델링하여 개발하는 방식입니다.
이때 객체는 데이터와 해당 데이터를 처리하는 메서드의 집합으로 이루어져 있습니다.

예를 들어, 자동차 객체를 만든다고 하면, 자동차 객체는 속성으로는 차종, 색상, 연식 등의 데이터를 가지고, 메서드로는 주행, 정지, 속도조절 등의 기능을 수행할 수 있습니다.
이렇게 객체를 정의하고 이용하는 것이 객체 지향 프로그래밍입니다.

객체 지향 프로그램의 장점으로는 코드의 재사용성이 높아지고, 유지보수성이 좋아지며, 코드의 가독성이 높아지는 등의 효과가 있습니다.

위의 자동차 객체를 Java를 사용한 예시입니다.

public class Car {
    // 데이터 속성 정의
    private String model;
    private String color;
    private int year;

    // 생성자 정의
    public Car(String model, String color, int year) {
        this.model = model;
        this.color = color;
        this.year = year;
    }

    // 메서드 정의
    public void drive() {
        System.out.println("자동차가 주행합니다.");
    }

    public void stop() {
        System.out.println("자동차가 멈춥니다.");
    }
    public void changeSpeed(int speed) {
        System.out.println(speed + " km/h로 속도 조절");
    }
}

자동차 객체를 정의하는 Java class입니다. 이렇게 정의된 'Car' 클래스를 이용하여 여러 대의 자동차 객체를 생성하고 이용할 수 있습니다.

절차 지향 프로그래밍과의 차이점

절차 지향 프로그래밍은 일련의 절차적인 단계들로 구성되어 있으며, 데이터와 함수가 서로 분리되어 있습니다. 이러한 접근 방식에서는 데이터가 중심이 아니라 함수가 중심이 되어 프로그래밍이 이루어집니다. 대표적인 절차 지향 프로그래밍의 예로는 C언어나 Pascal등이 있습니다.

절차 지향 프로그래밍은 프로그래밍이 단순하고 직관적이며, 메모리와 CPU 자원을 효율적으로 사용할 수 있습니다.

하지만, 객체 지향 프로그래밍에서는 데이터와 함수가 하나의 객체로 묶여 있습니다. 이러한 객체는 데이터와 해당 데이터를 조작하는 함수가 하나의 논리적인 단위로 묶여 있으며, 객체간의 상호작용을 통해 프로그래밍이 이루어집니다. 대표적인 예로는 Java, C++, Python 등이 있습니다.

profile
hyeop29

0개의 댓글