산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

Java OOP 개념: 기초, 예제, 장점 완벽 정리

OOP란 무엇인가?

객체지향 프로그래밍(OOP)은 추상화, 캡슐화, 상속, 다형성이라는 네 가지 핵심 원칙 위에 구축된 설계 패러다임입니다. 개발자가 현실 세계 엔티티를 객체로 모델링하고 그 위에서 동작하는 메서드를 정의할 수 있게 합니다. 목표는 문제 영역의 구조를 반영하는 재사용 가능하고 모듈화된 코드를 만드는 것입니다.

실전 예제로 보는 Java 핵심 OOP 개념

모든 Java 개발자가 마스터해야 할 기초 개념들:

1) 클래스 (Class)

클래스는 객체의 청사진입니다. 속성(데이터)과 행동(메서드)을 정의합니다. 예: Car 클래스는 make, model, speed 같은 속성과 drive(), brake(), reverse() 같은 메서드를 가질 수 있습니다. 이 클래스에서 인스턴스화된 객체들 — 메르세데스, BMW, 토요타 — 이 이 속성과 행동들을 상속받습니다.

2) 객체 (Object)

객체는 클래스의 구체적 인스턴스로, 실제 데이터를 보유하고 실행 가능한 메서드를 가집니다. 예: 특정 Chair, Bike, Pen. Java에서 객체는 상태와 행동을 모두 가집니다.

3) 상속 (Inheritance)

상속은 서브클래스가 슈퍼클래스의 필드와 메서드를 물려받게 해 부모-자식 관계를 만듭니다. 이는 코드 재사용과 논리적 계층을 촉진합니다. 예: Sedan 클래스가 Car를 상속받아 특화 기능 추가.

4) 다형성 (Polymorphism)

다형성은 단일 인터페이스로 서로 다른 하위 형태(서브클래스)를 표현하게 합니다. 오버라이딩과 메서드 오버로딩이 Java의 일반적인 구현입니다. 예: Vehicle 인터페이스를 Car와 Truck이 구현하며 각자 고유한 move() 로직 제공.

5) 추상화 (Abstraction)

추상화는 복잡한 구현 세부사항을 단순한 인터페이스 뒤에 숨깁니다. 자동차에서 사용자는 핸들과 액셀러레이터와 상호작용하지 엔진 메커니즘과 직접 다루지 않습니다. Java는 추상 클래스와 인터페이스로 추상화를 구현합니다.

6) 캡슐화 (Encapsulation)

캡슐화는 데이터와 메서드를 클래스 내부에 묶고 내부 상태에 대한 직접 접근을 제한합니다. 필드는 보통 private으로 표시하고 public 게터/세터로 접근합니다. 이는 데이터 무결성을 보호하고 모듈식 설계를 지원합니다.

7) 연관 (Association)

연관은 두 객체가 서로를 인지하지만 독립적 생명주기를 유지하는 관계입니다. 예: Student가 여러 Teacher 객체와 연관되고, 그 반대도 성립.

8) 집합 (Aggregation)

집합은 "has-a" 관계를 나타내는 특수한 연관 형태로, 포함된 객체가 독립적으로 존재할 수 있습니다. Department가 Teacher 객체들을 포함하지만 부서가 제거되어도 교사는 남습니다.

9) 합성 (Composition)

합성은 포함된 객체의 수명이 부모에 종속되는 강한 "has-a" 관계입니다. House 객체가 소멸하면 모든 Room 객체도 자동 제거됩니다.

Java에서 OOP의 장점

다른 프로그래밍 패러다임과의 비교: 뱅킹 예제

간단한 뱅킹 애플리케이션(deposit, withdraw, showBalance 기능)에서 Java OOP가 비구조적/구조적 프로그래밍과 어떻게 다른지 살펴봅시다.

비구조적 프로그래밍

초기 언어는 선형 흐름을 따라 각 연산마다 코드 반복:

int account_number = 20; int account_balance = 100;
// 입금 100
account_balance = account_balance + 100;
// 잔액 표시
printf("Account Number=%d", account_number);
printf("Account Balance=%d", account_balance);
// 출금 50
account_balance = account_balance - 50;
// 잔액 다시 표시
printf("Account Number=%d", account_number);
printf("Account Balance=%d", account_balance);

구조적 프로그래밍

함수/프로시저로 반복 로직 캡슐화해 가독성 향상:

void deposit(int amount) { account_balance += amount; }
void withdraw(int amount) { account_balance -= amount; }
void showBalance() { printf("Account Number=%d", account_number); printf("Account Balance=%d", account_balance); }

객체지향 프로그래밍 (Java)

데이터와 연산을 클래스로 묶어 OOP의 모든 혜택 누림:

public class Account {
    private int accountNumber;
    private int accountBalance;
    public Account(int number, int balance) {
        this.accountNumber = number;
        this.accountBalance = balance;
    }
    public void deposit(int amount) { accountBalance += amount; }
    public void withdraw(int amount) { accountBalance -= amount; }
    public void showBalance() {
        System.out.println("Account Number: " + accountNumber);
        System.out.println("Account Balance: " + accountBalance);
    }
}

데이터와 행동을 결합함으로써 Java OOP는 다음을 도입:

이 기능들이 종합적으로 코드 명확성을 높이고 중복을 줄이며 유지보수를 단순화합니다.

Java OOP 개념: 기초, 예제, 장점 완벽 정리

Java OOP 개념: 기초, 예제, 장점 완벽 정리

Java OOP 개념: 기초, 예제, 장점 완벽 정리

java

  1. Java 싱글톤 패턴 완벽 가이드: 안전하게 구현하고 사용하기
  2. C# 클래스와 객체 마스터하기: 실전 예제로 배우는 객체지향 프로그래밍
  3. C# Queue 마스터하기: Enqueue, Dequeue, 선입선출(FIFO) 연산 완전 정복
  4. Java 캡슐화 완전 가이드: 실전 예제와 핵심 개념
  5. Java String.indexOf() 마스터: 부분문자열 위치 찾기 & 실전 예제
  6. Java String compareTo() 마스터: 문법, 활용 케이스, 실전 예제
  7. Java 생성자 오버로딩: 실전 코드 예제로 이해하기
  8. Java 마스터하기: 객체, 클래스, 핵심 OOP 개념 이해
  9. 자바 객체 직렬화: 객체 영속화와 복원
  10. 자바 애플릿 완전 가이드: 기초부터 활용까지 (레거시 기술)