본문 바로가기
프로그래밍/CS

객체 지향 프로그래밍

by 숙님 2022. 5. 25.
728x90

객체 지향 프로그래밍 

의의: 데이터와 기능이 별개로 취급되지 않고, 한 번에 묶여서 처리 가능 

 

 OOP

- 사람이 세계를 보고 이해하는 방법을 흉내 낸 방법론 

- 프로그램 설계 철학

- 모든 것은 객체로 그룹화 

- 4가지 컨셉

캡슐화(encapsulation): 데이터와 기능을 하나의 단위로 묶는 것, 코드나 데이터의 은닉에 포커스

// TypeScript 문법입니다
// 클래스 내부에서만 쓰이는 속성 및 메서드를 구분시키기 위해 private이라는 키워드를 제공
// 은닉화를 도와주는 기능이 JavaScript에 지원하는 브라우저가 적음

class Animal {
  private name: string;

  constructor(theName: string) {
    this.name = theName;
  }
}

new Animal("Cat").name; // 사용 불가
// Property 'name' is private and only accessible within class 'Animal'.

상속(inheritance): 부모 클래스의 특징을 자식 클래스가 물려받는 것 

추상화(abstraction): 실제 노출되는 부분은 단순하게 만듦, 단순화 포커스

//추상화는 속성과 메서드의 이름만 노출시켜서 사용을 단순화한다는 의미
//추상화는 인터페이스(interface)의 단순화를 의미
// TypeScript 문법

interface ClockInterface {
  currentTime: Date;
  setTime(d: Date): void;
}

class Clock implements ClockInterface {
  currentTime: Date = new Date();
  setTime(d: Date) {
    this.currentTime = d;
  }
  constructor(h: number, m: number) {}
}

다형성(polymorphism): 다양한 형태

 

클래스(청사진)+constructor(생성자, 세부사항)=인스턴스  

 

댓글