Junior — Middle
Ինչպե՞ս կարող է արտաքին կոդը փոփոխել դասի վիճակը։
sobes.tech AI
Պատասխան AI-ից
Ելքային կոդը կարող է փոփոխել դասի վիճակը մի քանի եղանակով.
- Հասանելի մեթոդների (setters) միջոցով — դասը տրամադրում է մեթոդներ իր դաշտերը փոխելու համար, օրինակ
setName(String name): - Հասանելի դաշտերի միջոցով — եթե դասի դաշտերը հայտարարված են որպես
public, արտաքին կոդը կարող է դրանք ուղղակի փոխել (չի խորհուրդ տրվում ինկապսուլյացիայի խախտման պատճառով): - Դիզայնի նմուշների օգտագործմամբ — օրինակ, Builder նմուշի կամ մեթոդների միջոցով, որոնք վերադարձնում են փոփոխական օբյեկտներ:
Kotlin (Android) օրինակ:
class User {
var name: String = ""
private set // արգելում է ուղղակի արտաքին փոփոխությունը
fun updateName(newName: String) {
name = newName
}
}
val user = User()
user.updateName("Иван") // վիճակի փոփոխություն մեթոդով
Լավագույն մոտեցումը այն է, որ տրամադրել վերահսկվող մուտք դեպի վիճակի փոփոխություն՝ դասի մեթոդների միջոցով, պահպանելով ինկապսուլյացիան։