오늘 한 과제의 내용은 이렇다.
해당 과제를 보고 나는 1번부터 차례대로 적어내려갔다.
var age: Int = 25
var interestRate: Float = 3.45
var balance: Double = 10234.56
var isLoggedIn: Bool = false
var userName: String = "Alice"
var firstLetter: Character = "A"
var anyValue: Any = "Swift"
이렇게 1번을 완료하고나서 다른 팀원이 한 것을 봤는데 class
를 이용해 이렇게 정리를 했더라.
final class UserInfo {
var age: Int
var interestRate: Float
var balance: Double
var isLoggedIn: Bool
var userName: String
var firstLetter: Character
var anyValue: Any
init(age: Int, interestRate: Float, balance: Double,
isLoggedIn: Bool, userName: String, firstLetter: Character,
anyValue: Any) {
self.age = age
self.interestRate = interestRate
self.balance = balance
self.isLoggedIn = isLoggedIn
self.userName = userName
self.firstLetter = firstLetter
self.anyValue = anyValue
}
}
final class
로 정의된 UserInfo
클래스를 이용한 것이 답과 달라서 신박했다. 단순한 변수들을 선언하고 각각의 변수에 초기값을 할당한 것인 내것과는 달랐다. init
메서드를 사용해서 각 객체를 생성할 때 초기값도 설정을 해줬고 final
키워드를 사용했기 때문에 상속도 불가능하게 했다.
내가 한 방식은 각각의 변수를 하나의 값으로만 저장할 수 있었고 사용자가 여러명일 때 변수를 재사용할 수도 없다. 이러한 방식은 특정한 사용자 한 명의 정보만 관리하기에 적합한 것이고 확장성이 떨어진다는 것..
클래스처럼 객체를 생성할 수 없기에 여러 사용자 정보를 효율적으로 관리하기 어렵다는 것이다.
다른팀원이 한 UserInfo
클래스의 경우 여러 인스턴스도 생성할 수 있어서 확장성도 좋고, 사용자가 많을 때도 효율적으로 데이터관리까지 할 수 있다.
결론적으로 여러명의 사용자 정보를 관리하려면 클래스
를 사용하는 것이 좋기에 과제를 할 때도 클래스를 이용한 것이 추후 프로젝트를 진행 할 때에도 많은 도움이 될 수 있는 방법인 셈이다.
이번 경험을 통해 효율적인 데이터 관리가 얼마나 중요한지, 그리고 클래스와 같은 객체 지향 프로그래밍의 도구들이 어떻게 그 문제를 해결하는지 더 깊이 이해하게 된 듯 하다. 앞으로 프로그래밍할 때 여러 사용자의 데이터를 다룰 때는 클래스를 적극적으로 활용해야겠다는 생각이 들었다.
다음 문제부터 같이 클래스로 레고레고
구조체랑 차이점도 공부 레고레고