본문 바로가기
  • 스스로 행복을 가꾸는 교육을 꿈꾸다
MAKING/우리반 쌤의 똑똑한 메이커 테이블

코틀린_공부_2

by FermeH 2020. 9. 14.

이번주 목표는 메모 램프에 해당하는 어플리케이션을 완성하는 것입니다!

작동에 필요한 아두이노 회로가 구성되어야 램프 디자인에 들어갈 수 있을 것 같아서,

이 부분을 먼저 해보려고 합니다. 

 

안드로이드 앱의 해당 페이지 구성 및 동작을 1차 목표로 설정하고,

아두이노와 스크린을 연결하는 것을 2차 목표로 설정했습니다. 

 

공부에 참고한 책:

 

[알게된 점]

*상수 val  (cf. var) 

- 상수로 정의된 값은 바뀌지 않음 

 

*네이밍 컨벤션 

- 코딩 컨벤션: 각각의 프로젝트의 코드 작성 규칙 

- 코틀린 -> 캐멀 케이스 Camel Case      //cf. 스네이크 케이스(Snake Case-상수면ㅇ만 대문자로 사용하고 다른때는 소문자 사용)

클래스명  class MainActivity
//첫글자, 새로운 단어의 첫글자 대문자)
상수명  val HELLO: String = "안녕"
var HOW_ARE_YOU: String = "어떻게 지내?"
//모두 대문자, 여러 단어일 경우 스네이크 케이스  
함수명, 변수명  fun onCreateActivity () 
var intValue: Int 
//새로운 단어의 첫글자 대문자
   

*조건문 - if문과 when문의 차이점 

   if문: 판단에 사용되는 데이터의 범위가 넓고 값을 특정할 수 없을 경우 

   when문: 판단에 사용되는 데이터의 범위가 제한되고 값을 특정할 수 있을 경우 

 

*배열과 컬렉션  

- array

     선언시 개수 특정 및 변경 불가 

     종류: IntArray/LongArray/CharArray/FloatArray/DoubleArray     cf. 문자 배열: Array(개수, {item->""})

     값으로 공간 할당: arrayOf(...)

- 컬렉션

    개수 수정 가능 

    리스트 List: mutableListOf<타입>(), add/get/set/removeAt/size 

    셋 Set: 중복을 허용하지 않는 리스트, mutableSetOf<타입>()/add/remove

    맵 Map: 키+값, mutableMapOf<키 타입, 값 타입>()/add/put/remove 

- 이뮤터블 컬렉션 Immutable Collection   

   크기 변경 불가, 값 변경 불가 -> 불변형 컬렉션 

   listOf()

 

*함수  

- fun 함수명(파라미터 이름: 타입): 반환 타입 {

       return 값
}

- 함수 파라미터는 모두 이뮤터블 - 값 변경 불가 

 

*클래스 

- init {} 이 클래스 호출 시 디폴트로 실행되는 함수 

- 데이터 클래스(data class): 간단한 값의 저장 용도로 사용 

      data class 클래스명 (val 파라미터1: 타입, var 파라미터2: 타입)

      toString() 메서드 호출: 값 반환 - 모니터링시 좋음 

      copy() 메서드 호출: 값 복사 

- 상속: 만들어 놓은 클래스 확장 (더하기)

     open class 상속될 부모 클래스 {...}

     class 자식 클래스 (value: String) : 부모 클래스(value) {...}

- 오버라이드: 만들어 놓은 클래스 수정 

 

*접근 제한자 

- private: 다른 파일에서 접근 불가 

- internal: 같은 모듈에 있는 파일만 접근 가능 

   //이때의 모듈: 한번에 같이 컴파일되는 모든 파일, 하나의 앱 or 하나의 라이브러리 = 하나의 모듈

- protected: private과 같으나 상속 관계에서 자식 클래스가 접근 가능 

- public: 제한 없이 모든 파일에서 접근 가능 

 

*제네릭 Generics 

- 주로 컬렉션이나 배열에서 입력되는 값의 타입을 특정하기 위해 사용 -> 안정성 유지

 - var list: MutableList<값의 타입> = mutableListOf(...)

 

[해결한 문제] 

- 화면이 가로로 전환되었을 때 표가 끝까지 보이지 않음 - 어떻게 설정? (해결)

  > 스크롤뷰를 사용  = 최상위 레이아웃을 스크롤할 수 있는 요소로 감싸야 함 

       1. 기본 레이아웃을 스크롤뷰로 변경 후 

       2. 그 안에 LinearLayout으로 감싼 후, orientation을 vertical 로 변경 

 

성공! 

[발견한 문제] 

- 화면이 가로로 전환되었을 때 버튼이 각자 마음대로 움직임 (해결) 

  > 여러개의 대상을 체인으로 연결 

  > LinearLayout으로 감싼 후, orientation을 horizontal 로 변경 

- 마지막 행의 너비가 표의 끝까지 채우도록 만들고 싶음 (해결)

  > TableLayout 에 android:stretchColumns="(몇 번째 열)" 

레퍼런스:  https://developer.android.com/reference/android/widget/TableLayout#attr_android:stretchColumns 

 

TableLayout  |  Android 개발자  |  Android Developers

 

developer.android.com

 

'MAKING > 우리반 쌤의 똑똑한 메이커 테이블' 카테고리의 다른 글

아두이노 나노 33 IoT 탐색  (0) 2020.09.22
코틀린_공부_3  (0) 2020.09.16
코틀린_공부_1  (0) 2020.09.10
이것은 바로!! 사업 선정 결과!!  (0) 2020.05.24
사이즈 표시 기능 보완  (0) 2020.05.10

댓글