[TIL] 24.11.16 SAT

GDORI·2024년 11월 16일
0

TIL

목록 보기
104/143
post-thumbnail

12월 말이 되기 전에 프로젝트 하면서 틈틈히 완강을 ...

객체 지향 프로그래밍은 객체를 사용하여 개발하는 방식이다.
각 객체는 상태(데이터)와 행동(메서드)을 가질 수 있다.
이를 통해 현실 세계의 사물이나 개념을 소프트웨어 세계에서 유연하게 표현하고, 객체 간의 협력을 통해 복잡한 시스템을
개발할 수 있다.

객체 지향의 핵심 원칙

  1. 캡슐화

    • 객체 내부의 상태와 기능을 하나의 단위로 묶어 외부의 접근을 막는다.
      외부에서는 객체가 제공하는 메서드를 통해 상태에 접근하거나 변경할 수 있다.(getter,setter)
    • 예시: 자바스크립트에서 private 접근 제한자(#)를 사용해 객체 내부의 속성을 외부에서 수정할 수 없게 만드는 것.
  2. 상속

    • 상위 클래스의 속성과 메서드를 하위 클래스에서 재사용할 수 있도록 한다.
      이를 통해 코드 중복을 줄이고 재사용성을 높일 수 있다.
    • 예시: Mother 클래스에서 공통적인 속성과 메서드를 정의하고, 이를 Child 클래스가 상속받아 사용.
    • 지난번 과제에서 gameData를 해당 방식으로 구현
  3. 다형성

    • 같은 이름의 메서드가 객체의 타입에 따라 다르게 동작할 수 있는 능력이다.
      다형성은 주로 메서드 오버로딩과 오버라이딩을 통해 구현된다.
    • 예시: Animal 클래스가 있고, DogCat 클래스가 각각 makeSound()라는 메서드를 오버라이딩하여 다르게 구현하는 경우.

객체 지향 프로그래밍의 장점

  • 가독성 향상: 객체 지향적 설계를 통해 코드를 구조적으로 나누고, 각 객체의 역할을 명확히 적용
  • 재사용성: 상속을 이용해 기존 코드를 재사용하거나, 객체 간의 협업을 통해 유연하게 확장
  • 유지보수 용이성: 객체 단위로 기능을 나누어 유지보수나 수정이 필요할 때, 영향을 받는 객체만 수정하면 되므로 관리가 용이

객체 지향 설계 방법

  • 추상화: 객체의 복잡한 내부 구현을 숨기고, 외부에 필요한 인터페이스만 제공하여 사용자가 쉽게 이해하고 사용
  • 모듈화: 객체 단위로 기능을 나누어 각 모듈을 독립적으로 개발하고 테스트

OOP 예제 코드 (TypeScript)

캡슐화 예제:

class User {
  private name: string;
  private age: number;

  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }

  setName(name: string) {
    this.name = name;
  }

  getName() {
    return this.name;
  }

  setAge(age: number) {
    this.age = age;
  }

  getAge() {
    return this.age;
  }
}

const user = new User('John', 25);
user.setName('Doe');
console.log(user.getName()); // 'Doe'

상속 예제:

class Animal {
  constructor(public name: string) {}

  makeSound() {
    console.log(`${this.name} makes a sound`);
  }
}

class Dog extends Animal {
  constructor(name: string) {
    super(name); // 부모 클래스의 생성자 호출
  }

  makeSound() {
    console.log(`${this.name} barks`);
  }
}

const dog = new Dog('Buddy');
dog.makeSound(); // 'Buddy barks'
profile
하루 최소 1시간이라도 공부하자..

0개의 댓글