우당탕탕 무작정 앱 개발하기

일반인의 Flutter 앱개발 5. Dart(Class, Named parameter)

간다간다숑간다 2022. 10. 6. 02:32
728x90

대망의 Class를 배우는 날

평소대로 더코딩파파님의 강의로 듣는데 도저히 이해가 안 됐다 ^^ 

코딩 인생 3일 차에 처음으로 난관에 부딪혀서 공부를 그만두고 10분간 쉬어줬다.

휴식 후 코드팩토리 채널의 강좌를 들어보았으나 더 방대한 내용에 좌절감을 맛보았다. 

3일 만에 포기할 수 없기 때문에 눈물을 머금고 한 걸음씩 걸어가 보기로 했다. ㅠㅠ

오늘 Class는 더코딩파파님과 코드팩토리님의 강좌를 같이 녹여서 이해해 봐야겠다.


Class가 뭐냐 대체

OOP(Object Oriented Programming) - 객체지향 프로그래밍에서 굉장히 중요하게 여겨지는 게 이 클라쓰라는 거다.

응 이것도 무슨 말인지 하나도 모르겠고 나중에 알게 될 것이라고 하니 '그렇구나' 하고 넘어가본다.

Class는 비슷한 성격이나 기능의 변수, 함수들을 모아놓은 것.

이라고 이야기를 하나 예를 들어봐야 알 수 있으니 예제를 보며 하나씩 따라가 본다.


 

Class 맛보기

Idol이라는 class를 만들어줬다. class를 만들 땐 첫 문자를 대문자로 해줘야 한다. 소문자도 되긴 하는데 색상이 주황색이 아니라 하늘색으로 나와서 클래스의 구분이 안 간다.

Idol이라는 class 안에는 name과, sayName이라는 함수를 만들어줬다. 

그런데 여기서 'this'? 이게 뭔가 싶지 않은가? 잘 보면 class와 this의 색이 같다. 

그 말은 'this'가 바로 저 'class'를 지칭한다는 것. this에 대해서 잘 이해하고 넘어가자.

this다음에 오는 '.'은 Idol class안에 name을 사용하겠다는 말이다. 

이렇게 '.' 을 누르면 사용할 수 있는 것들을 나열해준다.

이렇게 나열을 해준 것에서 name을 선택해도 되고 우리가 만들었던 sayName함수를 선택해도 된다.

 

Idol이라는 Class를 이용해 red Velvet이라는 변수를 만들어줬다. (다른 언어에서는 'new' 키워드를 쓰지만 Dart에서는 안써도 된다.)

이 과정을 '변수화'라고 부르고 우리는 이 redVelvet이라는 변수를 'object or Instance'라고 부른다. 

Idol이라는 형태를 그대로 따라서 만들었기 때문에 redVelvet 오브젝트 안에는 우리가 넣어줬던 name과 sayName이라는 함수가 그대로 들어 있다. 

당연한 이야기같이 들리지만 똑같은 형태의 다른 오브젝트도 만들어줄 수 있다. bts도 만들어 보았다.

결과는 아래와 같다.

출력결과

BTS가 자기 정체성을 잃고 레드벨벳이라고 고백하게 되었다.

BTS가 자신이 BTS라고 소개를 할 수 있도록 만들어 주는 것이 바로 Constructor다.


Constructor
Constructor는 처음 Class가 선언될 때 원하는 변수들을 Class 안에 집어넣는 기능

Constructor는 Class와 똑같은 이름으로 안에다 작성을 하면 된다.

Constror는 외부에서 값을 입력받을 거라 함수에서 괄호 안에 Parameter를 넣었던 것과 같은 요령으로 해준다.

Parameter라는 모르는 말이 나왔으니 즉석에서 찾아본다 ^^

Parameter(매개변수)는 함수 선언 시 괄호 안에 들어가는 것.
Argument(전달인자)는 함수 사용 시 넣어주는 값.
프로그래머들끼리 이야기할 때는 입력값으로 통하기도 한다고 한다.

 

외부에서 가져온 빨간 입력값이 노란 변수에 저장이 되는 것

이걸로 BTS가 BTS라고 고백하게 해 보자

고백성공♥


Named parameter

더코딩파파 형님이 강의를 끝 마치시기 전에 하나만 더 하자고 하셔서 들어봤는데 어려워서 포기하게 만든 놈이다.

지금은 이해를 했지만 처음 들었을 땐 뭔 소린가 했는데 블로그도 찾아보고 하다 보니 이젠 이해가 갔다. 나의 시행착오를 기반으로 설명을 하면 도움이 되리라 믿는다.

 

위의 예시는 입력값을 순서에 맞게 입력해줬어야 했다.

입력값을 순서에 맞게 해야 한다.

지금은 입력값이 2개지만 입력값 종류가 20개고 그중에 몇 가지만 넣어줘야 한다면 선택적으로 입력을 할 수 있어야 하지 않겠나? 그때 필요한 게

'Named parameter' 이 놈은 선택적으로 내가 넣고 싶은 parameter만 골라 넣을 수 있다

일반 parameter 'age'는 소괄호 안에, Named parameter는 중괄호 안에 넣으면 된다. 

중괄호 안에 넣어주고 기본값을 입력 안 했더니 오류가 나서 기본값을 'Rap Monster'와 'BangTan'으로 설정해 주었다.

Null에 대한 설명은 밑을 펼쳐보라.

더보기

Null or Nil 은 프로그래밍에서 값이 없음을 나타낸다.

 

Named parameter 연습

 


이제 main 함수를 보자

일반 parameter 'age'는 값을 입력해줬고 Named parameter 'name'은 주석 처리해서 입력을 해주지 않았고 group만 'BTS'라고 입력해주었다. 결과는 어떻게 나올지 상상해보며 상상이 끝났으면 아래를 펼쳐 보자.

더보기
맞췄으면 머리를 쓰다듬어 주자

다음 포스팅도 Class에 관해서 할 예정이다.

Class 익히고 나면 이제 좀 재미있는 것들을 할 수 있지 않을까 생각해본다.

틀린 점이나 궁금한 점이 있으면 댓글로 알려달라.
입문자라 아무것도 모르고 이상한 소리를
썼을 가능성이 매우 매우 농후하다.
궁금한 점은 댓글로 토론하며 정답을 찾아보자.
유튜브 더코딩파파의 'Dart언어 한 시간 만에 건너뛰기'와 코드팩토리님의  Dart강의를 보고 공부중입니다.
728x90