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
'STUDY > Rust' 카테고리의 다른 글
Rust - 23. 고급 기능 (1) Unsafe RUST (1) | 2024.03.31 |
---|---|
Rust - 22. 패턴과 매칭 (0) | 2024.03.26 |
Rust - 20. 동시성, 병렬성 (1) | 2024.03.24 |
Rust - 19. 스마트 포인터 (2) Rc<T>, RefCell<T>, 순환 참조 (1) | 2024.03.23 |
Rust - 18. 스마트 포인터 (1) Box<T>, Deref, Drop (0) | 2024.03.21 |