📋 객체 지향 프로그래밍(OOP: Object-Oriented Programming)
✅ 객체지향(OOP)과 절차지향(PP)
- 절차지향: 시간, 사건의 흐름에 따른 프로그래밍. 데이터와 함수 분리. 주로 순차적인 처리 강조.
- 객체지향: 데이터와 함수를 객체로 캡슐화하여 문제 해결. 객체는 상태와 행동을 포함하며, 객체 간의 상호작용을 통해 프로그램 실행.
package section08;
public class BankProcedural {
// 전역 변수로 계좌 잔액 관리
static double balance = 0.0;
// 입금 함수
public static void deposit(double amount) {
balance += amount;
}
// 출금 함수
public static void withdraw(double amount) {
balance -= amount;
}
// 잔액 출력 함수
public static void printBalance() {
System.out.println("잔액: " + balance);
}
public static void main(String[] args) {
deposit(1000);
printBalance();
withdraw(500);
printBalance();
}
}
package section08;
// BankAccount 클래스 정의
class BankAccount {
private double balance;
// 생성자
public BankAccount() {
this.balance = 0.0;
}
// 입금 메서드
public void deposit(double amount) {
balance += amount;
}
// 출금 메서드
public void withdraw(double amount) {
balance -= amount;
}
// 잔액 출력 메서드
public void printBalance() {
System.out.println("잔액: " + balance);
}
}
public class BankOOP {
public static void main(String[] args) {
// BankAccount 객체 생성
BankAccount account = new BankAccount();
// 입금, 출금, 잔액 출력
account.deposit(1000);
account.printBalance();
account.withdraw(500);
account.printBalance();
}
}
✅ 객체지향 프로그래밍 구현
- 객체 생성하는 클래스 정의
- 각 객체의 속성, 기능 구현
- 각 객체가 제공하는 기능들 간의 소통(메시지 전달) 통해 객체간의 협력 구현
✅ 객체지향의 특징
- 추상화(Abstraction): 대상에서 핵심적이고 특징적인 공통점을 뽑아내는 과정, 모델링
- 캡슐화(Encapsulation): 프로그램의 세부 구현을 외부로 드러나지 않도록 특정 모듈 내부로 감춤, 정보 은닉. 응집도 높이고, 결합도 낮춤.
- 상속(Inheritance): 자식(sub) 클래스가 부모(super) 클래스의 속성, 기능 재사용, 확장
- 다형성(Polymorphism): 하나의 타입으로 다양한 객체 사용, 다양한 결과
📋 클래스와 객체