오늘은 캡슐화와 Collection(컬렉션)에 대해서 배웠는데, 어제 올린 포스팅의 내용대로 저는 Class와 Instance에 대해 제대로 이해하지 못한 상태였기에 캡슐화도 정확히 이해하지 못한 상태였습니다. 오늘 배운 내용을 블로그에 정리하면서 다시 한번 확실하게 이해하는 시간을 가져보도록 하겠습니다.
캡슐화(Encapsulation)란 프로그램의 구성 요소를 논리적으로 그룹화하고, 그룹화된 요소에 대한 외부 접근을 제한하는 개념입니다.
더 쉽게 설명하자면, 저에게 비타민
이 하나 있다고 가정해보겠습니다. 저는 비타민에 어떤 성분이 들어가서 어떻게 작용하는지 알지 못합니다. 하지만, 비타민을 먹으면 건강해진다는 것을 알고 있습니다. 네, 이게 바로 캡슐화의 핵심 개념이라고 할 수 있겠습니다.
캡슐화는 데이터와 해당 데이터를 처리하는 메서드를 하나로 묶어 캡슐화된 객체를 생성하고, 객체 간에 상호작용할 수 있도록 합니다.
Dart에서 주로 캡슐화를 구현하는 방법은 Class
와 접근 지정자
를 사용하는 것입니다.
접근 지정자(Access Modifiers)는 Class의 필드(속성)와 메서드에 대한 접근 권한을 제어하는 역할을 합니다. Dart에서는 3가지 접근 지정자를 제공합니다.
_(밑줄)
을 붙여 표시합니다. 동일한 라이브러리(자신이 속한 Class)에서만 접근할 수 있고, 외부에서는 접근이 불가능합니다. 나중에 코드 넣을 부분
휴먼 에러(human error)
를 방지할 수 있게 합니다.Dart에서는 다양한 Collection 타입을 제공하여 데이터를 저장하고 조작할 수 있으며, 주요 Collection type으로는 List, Set, Map이 있습니다.
List는 순서가 있는 항목의 Collection입니다.
동일한 타입의 값들을 여러 개 저장할 수 있고, [](대괄호)
를 사용하여 생성해 인덱스로 항목에 접근할 수 있습니다. 또한, List는 동적으로 크기를 조절할 수 있습니다.
예시 코드
Set은 중복이 없는 고유한 값들의 Collection입니다.
순서가 없으므로 인덱스를 사용하여 항목에 접근할 수 없습니다. {}(중괄호)
를 사용하여 생성하며, add()
메서드를 사용하여 항목을 추가할 수 있습니다.
예시 코드
Map은 key-value 쌍의 Collection입니다.
각 key는 고유해야 하며, key를 사용하여 해당 키에 대한 value 값을 저장하고 검색할 수 있습니다. Map은 {}(중괄호)
를 사용하여 생성하며, key와 value 값은 :(콜론)
으로 구분합니다. 또한, Map은 json처럼 사용할 수도 있습니다.
예시 코드
Collection은 Dart에서 데이터를 구조화하고 조작하는 도구입니다. 필요에 따라 List, Set, Map을 적절하게 사용해 효율적으로 프로그램을 개발할 수 있습니ㅏ.
getter, setter를 사용하면서 조건문을 사용해서 Exception 띄우기를 했는데, Class 내부의 생성자를 작성하는 부분에서 막혀서 선생님께 도움을 받았고, 후에 main()에서 실행시킬 때도 Exception이 발생하지 않길래 선생님께 질문했더니 생성한 객체로는 Exception이 발생하지 않고, 생성하고 나서 값을 추가로 넣어야지 Exception이 발생한다고 하셨다.
나는 그것도 모르고 print 찍으면서 어?? 안되네?? 하면서 얼타고 있었다.. (나중에 이부분도 수정하면서 넣으면 좋을 것 같다.)
수정할 게 점점 늘어나는 기분이..
참고 블로그 : https://devkingdom.tistory.com/53