일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- channel
- Golang
- json
- go언어
- 영화
- Close
- http
- write
- Sync
- 리뷰
- Linux
- 책
- range
- Callback
- go
- tcp
- FOR
- windows
- package
- c++
- Python
- mutex
- window
- GO 언어
- C
- API
- install
- bitcoin
- File
- JavaScript
- Today
- Total
목록has-a (2)
Code Habit
has-a 모델의 두개의 클래스 간 정보를 주고 받기 위해서는 callback을 활용할 수 있다. 예를들어 class A가 class B를 갖고 있다고 하자. A클래스 객채에서는 B클래스에 있는 변수나 함수를 사용하기 용이하지만 B클래스 객체에서는 A클래스에 접근하기 힘들다. 이럴때 callback을 이용하여 B클래스에서 A클래스에 있는 변수나 함수에 접근할 수 있다. ( 보통 B클래스 작업을 마무리 하고 A클래스에 통보할 일이 필요할 때 이를 활용하게 된다.) ex) class Callback { public: // 구현은 이를 상속하는 클래스에서 하기 때문에 // virtual 즉, 가상의 함수로 선언한다. virtual void done() = 0; }; class B { public: // cal..
Go언어는 클래스를 제공하지 않으므로 상속 또한 제공하지 않는다. 하지만 구조체에서 임베딩(Embedding)을 사용하면 상속과 같은 효과를 낼 수 있다. 먼저 간단하게 Has-a 관계를 정의해 보겠다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 type Person struct { // 사람 구조체 정의 name string age int } func(p *Person) greeting() { // greeting 함수 Person구조체에 연결 fmt.Println("Hello") } type Student struct { p Person // 학생 구조체 안에 사람 구조체를 필드로 가지고 있음( Has - a ) school string grade int }..