Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added week4/images/1.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
75 changes: 75 additions & 0 deletions week4/week4.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# 데이터 클래스 만들기

## 1. 폴더
![1](https://github.com/user-attachments/assets/fa666f63-90b6-4dab-a946-b670d1e1b850)


## 2. 데이터 클래스 타입 만들기
Affirmation.kt는 데이터 클래스 타입을 저장, Data class로 생성
```kotlin
//안드로이드에서는 리소스에 고유한 정수형 ID를 부여
data class Affirmation(
val stringResourceId: Int,
val imageResourceId: Int
)
```
```kotlin
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes

//어노테이션을 이용해 타입 검증이 일어남
data class Affirmation(
@StringRes val stringResourceId: Int,
@DrawableRes val imageResourceId: Int
)
```

## 3. 데이터 클래스 만들기
Datasource.kt : 데이터를 저장

**클래스의 프로퍼티로 저장**

객체 생성 시 데이터가 생성 되어 유연성이 부족하고 메모리를 차지
```kotlin
//Datasource.kt
import com.example.affirmations.R
import com.example.affirmations.model.Affirmation

class Datasource {
val affirmations = listOf(
Affirmation(R.string.affirmation1, R.drawable.image1),
Affirmation(R.string.affirmation2, R.drawable.image2),
...
)
}

//MainActivity.kt
affirmationList = Datasource().affirmations
```

**메서드로 정의**

유연성: 메서드를 호출할 때마다 데이터를 생성할 수 있어, 필요에 따라 데이터를 동적으로 생성하거나 업데이트할 수 있습니다.

캡슐화: 데이터 생성 로직이 함수 내부에 감춰져 있어 코드의 유지보수와 확장이 용이합니다.

메모리 효율성: 필요할 때만 메서드를 호출해 데이터를 가져오기 때문에 메모리 관리가 효율적일 수 있습니다.

```kotlin
//Datasource.kt
import com.example.affirmations.R
import com.example.affirmations.model.Affirmation

class Datasource() {
fun loadAffirmations(): List<Affirmation> {
return listOf<Affirmation>(
Affirmation(R.string.affirmation1, R.drawable.image1),
Affirmation(R.string.affirmation2, R.drawable.image2),
...
)
}
}

//MainActivity.kt
affirmationList = Datasource().loadAffirmations()
```