본문 바로가기
Programming/Java

자바로 배우는 객체지향 프로그래밍: 캡슐화, 상속, 다형성, 추상화의 핵심

by Devsaurus 2023. 12. 21.
728x90

Object-Oriented Programming (OOP)은 "객체" 개념을 기반으로 하는 프로그래밍 패러다임으로, 이는 데이터(속성 또는 프로퍼티)와 코드(메서드 또는 함수)를 포함할 수 있는 "객체"를 중심으로 합니다. OOP의 네 가지 주요 원칙은 다음과 같습니다:

 


1. 캡슐화

캡슐화는 데이터(속성)와 해당 데이터를 조작하는 메서드(함수)를 하나의 단일 단위인 클래스로 묶는 것입니다. 자바에서 클래스는 객체를 생성하기 위한 청사진이며, 캡슐화는 객체의 내부 세부 사항을 숨기고 필요한 부분만 노출함으로써 도움을 줍니다.

예시 (자바):

public class Car {
    private String model;
    private int year;

    public void setModel(String model) {
        this.model = model;
    }

    public String getModel() {
        return model;
    }
// 'year' 및 다른 메서드에 대해서도 유사합니다...
}




2. 상속

상속은 한 클래스가 다른 클래스로부터 속성과 동작을 상속받을 수 있는 메커니즘입니다. 이는 코드의 재사용성을 촉진하며 자바에서는 슈퍼클래스(기본 클래스)와 서브클래스(파생 클래스) 간의 관계를 설정합니다.

예시 (자바)

public class Animal {
    public void eat() {
        System.out.println("동물이 먹고 있습니다");
    }
}

public class Dog extends Animal {
    // Dog가 Animal의 'eat' 메서드를 상속받습니다.
    public void bark() {
        System.out.println("개가 짖고 있습니다");
    }
}




3. 다형성

다형성은 서로 다른 유형의 객체를 공통 유형의 객체로 처리할 수 있게 하는 기능입니다. 자바에서는 메서드 오버로딩 및 메서드 오버라이딩을 통해 다형성을 구현합니다.

예시 (자바)

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }

    public double add(double a, double b) {
        return a + b;
    }
}




4. 추상화

추상화는 복잡한 시스템을 핵심 속성과 동작을 기반으로 클래스를 모델링함으로써 단순화하는 개념입니다. 이는 개발자가 객체가 어떻게 기능하는지보다는 무엇을 수행하는지에 중점을 두게 합니다.

예시 (자바)

public abstract class Shape {
    // 추상 메서드 - 슈퍼클래스에서 구현이 없습니다.
    public abstract double calculateArea();
}

public class Circle extends Shape {
    private double radius;

    // 서브클래스에서 추상 메서드를 구현합니다.
    @Override
    public double calculateArea() {
        return Math.PI * radius * radius;
    }
}




이러한 자바 OOP의 원칙은 코드를 현실 세계 엔터티와 그들의 상호 작용 주변에 구성함으로써 모듈화되고 확장 가능하며 유지보수가 용이한 소프트웨어를 구축하는 데 기여합니다.

728x90