STUDY/Rust

Rust - 21. 객체 지향 프로그래밍

sinawi95 2024. 3. 25. 21:11
728x90

객체지향은 봐도 써먹질않아서 잘모르겠다. 

  • 객체는 속성과 행동을 갖는다. 속성은 변수고, 행동은 함수다. 정도?
  • 상속 가능하다. 정도?

1. 객체지향 언어의 특성

객체(object)

  • 객체는 데이터 및 데이터를 활용하는 프로시저를 포함한다.
  • 프로시저들을 보통 메서드(method) 혹은 연산(operation)이라고 부른다.
  • 러스트에서 구조체, 열거형, impl 등을 사용해서 동일한 기능을 제공할수 있다.

캡슐화(encapsulation)

  • 객체의 상세 구현에 접근할 수 없게 하는 것.
  • 객체와 상호작용하기 위해선 객체의 공개 API를 사용해야한다.
  • 러스트에서 pub를 사용해서 데이터나 메서드를 공개할 수 있다.

상속(inheritance)

  • 다른 객체의 정의로부터 요소를 재사용할수 있는 메커니즘
  • 러스트에서는 상속을 지원하지 않는다. 트레이트(trait)를 사용해서 같은 기능을 구현할 순 있다. 
    • 트레이트: 특정한 타입이 가지고 있으면서 다른 타입과 공유할 수 있는 기능을 정의함. 공통 기능을 추상적으로 정의할수 있음

다형성(polymorphism)

  • 자식 타입을 부모 타입과 같은 위치에서 사용할수 있게하는 것
  • 러스트에서는 제네릭과 트레이트 바운드를 이용해서 해당 타입들이 반드시 제공해야하는 제약사항을 부과한다.

 

2. 객체지향 디자인 패턴 구현

상태 패턴(state pattern)

  • 어떤 값이 내부적으로 가질 수 있는 상태 집합을 정의한다는 것
  • 상태(state object)는 상태 객체의 집합으로 표현됨
  • 값의 동작은 상태에 기반하여 변경됨

 

여기는 천천히 다시 읽어봐야할듯


https://doc.rust-kr.org/ch17-00-oop.html