캡슐화

이제우·2024년 3월 1일
0

캡슐화?

캡슐화는 객체와 메서드는 한곳에 묶어서 외부에서 직접적으로 접근하지 못하도록 막는 것.

전에 공부한 getter와 setter도 캡슐화의 일부가 아닐까 싶다.

캡슐화를 하는 이유?
위에 말한 것처럼 외부에서 객체의 값에 직접적으로 접근하지 못하여 정보 은닉에 도움을 주고, 코드의 유지보수와 재사용성을 향상시키기 위해서이다.

왜 유지보수와 재사용성이 향상되나?
보안에 도움이 되는 것은 알겟지만 왜 유지보수와 재사용성이 향상되는지는 한번에 이해가 되지 않았는데 직접 코드와 연관지어 생각해보니 이해가 쉽다.

export class Account {
  private readonly accountNum: string;
  private readonly accountHolder: string;
  private balance: number = 0;
  constructor(accountNum: string, accountHolder: string) {
    this.accountNum = accountNum;
    this.accountHolder = accountHolder;
  }
  public getAccountNum(): string {
    return this.accountNum;
  }
  public deposit(money: number): void {
    this.balance += money;
  }
  public withdraw(money: number): void {
    this.balance -= money;
  }
  public getAccountNumber(): string {
    return this.accountNum;
  }
  public getBalance(): number {
    return this.balance;
  }
}
const account = new Account("1234567891234", "wooje");
// 3만원 입금
account.deposit(30000);
// 1만원 인출
account.withdraw(10000);
// 잔액 조회하기
console.log(`잔액 : ${account.getBalance()}`);

위의 코드를 보면 Account 클래스의 계좌번호나 예금주, 잔액에 외부에서 직접적으로 접근을 못하기 때문에 내부 속성이 바뀔일은 없다. 그렇기때문에 다른 코드에서도 Account 클래스에서 선언한 메서드를 코드를 수정할 필요없이 재사용할 수 있으면 유지보수가 간편하다.

profile
게으른 사람 중에 제일 부지런하게 사는 사람이 꿈

0개의 댓글