이번 시간에는 dart의 Class와 Instance에 대해 배웠습니다.
배운지 오래되었던(거의 3년..) 자바에서 나오던 Class와 Instance의 약간씩 헷갈렸던 것들을 이번 시간에 확실히 알게 되어 그저 유익한 것으로 넘어가지 않고, 이번에도 알게된 것들을 정리하며 다시 한번 짚고 넘어가고자 합니다.
우선 Dart는 객체 지향 프로그래밍 언어로, Class(클래스), Instance(인스턴스), Object(객체) 개념을 사용합니다. 이러한 개념은 다른 객체 지향 언어(Java, Kotlin 등)에서도 사용되며, 객체 지향 프로그래밍의 기본 요소라고 볼 수 있습니다.
여기서 Class는 객체를 만들기 위한 일종의 설계도입니다. Class에서는 객체의 속성(attribute)과 동작(behavior)을 정의합니다.
속성은 Class의 멤버 변수(member variable)로 표현되고, 동작은 Class의 메서드(method)로 표현됩니다.
Class를 사용하여 객체를 생성하고, 생성된 객체는 해당 클래스의 내부에 있는 속성과 동작을 사용할 수 있습니다. 예를 들어, 지구
라는 Class는 이름
이라는 속성(멤버 변수)과 살고있다
이라는 동작(메서드)을 가질 수 있습니다.
자, 이제 객체를 생성하는 설계도를 만들었으니 생성을 해봐야겠죠?
Instance는 Class를 통해 생성한 실제 예시입니다. 더 쉽게 말하자면, 설계도를 통해 만들어진 결과물
입니다. 이 결과물을 객체(Object)라고 하는데 Class에서 정의된 속성과 동작을 가지고 있습니다.
Instance는 가지고 있는 속성을 설정하고, 동작을 호출할 수 있습니다.
또한, 같은 클래스로부터 생성된 여러 Instance(객체)는 각각 독립적인 개체로 동작하기도 합니다.
Constructor(생성자)은 Instance를 생성하는 형태라고 볼 수 있습니다.
Constructor은 Instance를 초기화하고 속성을 설정하기 위해 사용됩니다. Dart에서는 다양한 속성 유형을 사용하여 Constructor을 정의하는데, 그중에는 named parameter, optional parameter가 있습니다.
만약, 설정해야하는 속성이 많다면 named parameter로 설정해주면 됩니다.
named parameter를 사용하기 위해서는 Instance를 생성하는 형태인 생성자의 ()소괄호 안에 {}중괄호
를 넣고, 데이터 타입이 Null을 허용하지 않는다면 this 앞에 required
를 사용해줍니다.
named parameter는 Instance의 순서를 외우지 않아도 되고, 순서를 바꿔도 된다는 장점이 있습니다.
optional parameter는 속성을 선택적으로 전달하려할 때 사용하기 적합합니다.
필수적으로 전달해야하는 속성을 가진 필수 parameter와 동시에 사용가능하지만, 그럴 경우 필수 parameter가 앞에 와야하며, 마지막 parameter에 ,(콤마)를 찍을 수 없습니다.
Class는 객체를 생성하는 틀이고, Instance는 틀에서 생성된 결과물이다.
결론적으로는 이정도만 기억해도 큰 주제는 아는 거라고 생각합니다. (아마도?)
생성자 관련해서는 다음에 더 추가적으로 알아보고 수정할 예정입니다. Named parameter가 무엇인지와 Positional parameter와 Optional parameter에 대한 부분을 추가할 예정입니다.
수정할 부분 : Named parameter의 개념, Optional parameter 생성자의 예시, Positional parameter 개념 및 예시, 스크린샷의 print 코드 문맥 수정.