[java] 객체지향 프로그래밍 개념과 Java의 구현

개요

객체지향 프로그래밍(Object-Oriented Programming, OOP)은 소프트웨어 개발을 위한 프로그래밍 패러다임 중 하나입니다. 이러한 패러다임은 코드의 재사용성, 유연성, 확장성을 향상시키기 위해 객체라는 개념을 중심으로 하는 방식입니다. 자바(Java)는 OOP를 구현하기 위한 유명한 프로그래밍 언어 중 하나로 알려져 있습니다.

객체지향 프로그래밍 개념

객체지향 프로그래밍은 다음과 같은 핵심 개념을 갖고 있습니다:

  1. 객체(Object): 소프트웨어에서 특정한 역할과 기능을 가지는 실체로, 데이터와 해당 데이터를 처리하는 메서드들을 포함합니다. 예를 들어, 자동차 객체는 속성으로는 차량 번호, 제조사, 모델 등을 가지고 있으며, 메서드로는 주행, 정비, 연비 계산 등의 기능을 가지고 있습니다.

  2. 클래스(Class): 객체의 설계도이며, 객체를 생성하기 위해 사용됩니다. 클래스는 객체의 속성과 동작을 정의하는 변수와 메서드의 집합입니다. 자동차 클래스는 자동차 객체를 생성하기 위한 규칙과 구조를 정의합니다.

  3. 상속(Inheritance): 상속은 클래스 간에 계층 구조를 만들어주는 개념으로, 부모 클래스의 속성과 메서드를 자식 클래스가 상속받아 사용할 수 있도록 합니다. 이를 통해 코드의 재사용성과 확장성을 높일 수 있습니다.

  4. 다형성(Polymorphism): 다형성은 하나의 추상 인터페이스에 대해 다양한 구체적인 구현을 제공할 수 있는 능력을 의미합니다. 다형성을 통해 객체들을 일관된 방법으로 다룰 수 있으며, 유연하고 확장 가능한 코드를 작성할 수 있습니다.

Java에서의 객체지향 프로그래밍 구현

Java는 객체지향 프로그래밍을 구현하기 위한 다양한 기능과 문법을 제공합니다. 기본적으로 클래스와 객체를 정의하고, 상속과 인터페이스를 사용하여 객체 간의 관계를 구성할 수 있습니다.

아래는 Java에서 클래스와 객체를 정의하는 예제입니다:

public class Car {
    private String carNumber;
    private String manufacturer;
    private String model;
    
    public Car(String carNumber, String manufacturer, String model) {
        this.carNumber = carNumber;
        this.manufacturer = manufacturer;
        this.model = model;
    }
    
    public void drive() {
        System.out.println("Driving the car");
    }
    
    public void service() {
        System.out.println("Servicing the car");
    }
}

위 코드에서 Car 클래스는 자동차 객체를 생성하기 위한 설계도입니다. 클래스 내부에는 차량 번호, 제조사, 모델을 나타내는 속성과 주행, 정비를 나타내는 메서드가 정의되어 있습니다.

객체를 생성하고 메서드를 호출하는 예제는 다음과 같습니다:

public static void main(String[] args) {
    Car myCar = new Car("1234", "Hyundai", "Sonata");
    myCar.drive();
    myCar.service();
}

위 코드에서는 Car 클래스를 사용하여 myCar라는 객체를 생성하고, drive()와 service() 메서드를 호출합니다.

자바의 다형성 개념을 활용한 예제는 다음과 같습니다:

public interface Vehicle {
    void drive();
}

public class Car implements Vehicle {
    public void drive() {
        System.out.println("Driving the car");
    }
}

public class Bike implements Vehicle {
    public void drive() {
        System.out.println("Riding the bike");
    }
}

public static void main(String[] args) {
    Vehicle myVehicle1 = new Car();
    myVehicle1.drive();
    
    Vehicle myVehicle2 = new Bike();
    myVehicle2.drive();
}

위 코드에서는 Vehicle 인터페이스를 정의하고, Car 클래스와 Bike 클래스가 이 인터페이스를 구현하도록 합니다. main 함수에서 Vehicle 타입의 변수를 선언하고, Car 객체와 Bike 객체를 할당하여 drive() 메서드를 호출합니다.

참고 자료