코틀린/코틀린 문법 11

Textwatcher

EditText의 값이 변경될 때마다 입력 된 값을 실시간으로 관찰하면서 특정 작업을 처리 해주기 위한 인터페이스   binding.emailArea.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { //텍스트가 변경되기 전 호출 } override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { // 텍스트가 변경될 때마다 호출 //..

Repository

지난주 금요일부터 5일동안 강의를 듣고 자료를 찾아보고 직접 쳐봐도repository패턴이 이해되지 않아 글을 써서 정리해보기로 했다.인터페이스를 잘 모르니까 코드 동작원리가 전혀 와닿지 않았고 그나마 이해하고 있는 개념도 흔들렸다. repository뿐만 아니라 보다 근본적인 개념도 같이 잡는 걸 목표로 작성을 시작한다.    Repository Pattern데이터를 캡슐화하여 출처에 관계 없이 동일한 인터페이스로 데이터에 접근할 수 있도록 하는 패턴 출처에 관계 없이 내부에서 preference, room 등으로 저장한 cache data와 외부에서 api 등으로 끌어온 response data로 구분한다. ViewModel은 직접 Data에 접근해 데이터를 가져오는 것이 아니라 Repository에..

object

객체 object클래스를 정의하면서 인스턴스를 생성하는 키워드선언 : object {} 선언식Object declaration싱글톤Singleton패턴. 단일 인스턴스이므로 생성자 사용불가, 상속불가, 인스턴스 추가생성 불가Thread-safe : 멀티 스레드 환경에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램 실행에 문제가 없는 것lazy initialization : Object 키워드가 선언된 클래스는 외부에서 객체가 사용되는 시점에 초기화 표현식익명객체annonymous object. 호출할 때마다 새로운 인스턴스 생성여러 메소드를 오버라이드해야되는 경우 권장되고 하나의 메소드일 경우 람다식이 효율적리스너(object: 클래스() {} 형태로 많..

코틀린문법 5주차 강의 [심화]

유용한 기능자료형 변환to자료형()메소드로 자료형을 변환할 수 있다. 원래 값 자체를 바꾸는 게 아니라 형태를 변환시켜주는 것문자를 숫자로 바꾸려면?정수 : Integer.parseInt() = toInt()실수 : .toDouble()Integer는 싱글턴으로 선언된 클래스Integer.parseInt() 와 Integer.valueOf()문자열을 정수로 변환해주는 메소드. parseInt는 결과를 기본 자료형 Int로 반환해주고 valueOf는 객체를 생성해 참조 자료형 Int로 반환해준다.  객체 as 클래스명as로 객체의 자료형을 변환할 수 있다. 상속관계에서 가능. OOP 5대 특징 중 가용성에 해당업캐스팅 : 자식클래스를 부모클래스의 자료형으로 객체 생성. 배열의 자료형이 부모 클래스 일 때 ..

코틀린문법 4주차 강의 [심화]

접근제한자무분별한 접근을 막아 데이터를 보호하고 유지보수에 용이 public : 기본. 어디서나 접근 가능internal : 같은 모듈만 접근 가능private : 같은 클래스만 접근 가능 protected : 상속받은 경우만 접근 가능 (기본적으로 private) 프로젝트 > 모듈(app) > 패키지(클래스)      예외처리오류 : 프로그램에서 발생하는 예외컴파일 에러 : 실행 전런타임 에러 : 실행 중(비정상적으로 종료) try-catch : 예외를 잡아주는 코드. try{예외 발생 가능성이 존재하는 코드} catch{예외가 발생했을 때 처리할 코드}예외가 발생하면 catch부문의 코드가 실행된다. finally{항상 실행하는 코드}를 추가하여 예외처리와 관계없이 주의를 줄 수 있다.throw : ..

코틀린문법 3주차 강의 [객체지향 프로그래밍]

객체지향 프로그래밍 OOP Object Oriented Programming코틀린은 모든 것이 클래스 형태이므로 객체화 할 수 있다.객체화 : 필요한 데이터를 추상화시켜 객체로 만드는 것OOP 5대 키워드 : 클래스, 추상화, 캡슐화, 상속, 다형성     메소드이름을 붙인 소스코드(로직). 함수메소드호출해서(상황에 맞게 이름을 불러서) 사용한다. 코드를 재사용할 수 있다. 코틀린의 진입점, 메인메소드fun main(){} 코틀린은 메인메소드를 시작점으로 정했기 때문에 호출하지 않아도 실행된다.       클래스정보(프로퍼티)와 행위(메소드)가 담겨있는 프로그램의 설계도 데이터 클래스data class메소드말고 프로퍼티만 필요할 때 쓰는 클래스. 기본 생성자에 1개 이상의 매개변수가 변수나 상수로 존재..

코틀린문법 2주차 강의 [컨벤션 ~ 반복문]

코딩 컨벤션 Coding Convention 다른 사람들도 이해하기 쉽게 코드를 작성하는 규칙프로그램 언어마다 상이 필요성 : 코드의 가독성 증가, 유지보수 용이, 효율적인 협업 가능표기법 : camelCase카멜케이스 표기법,  snake_case스네이크케이스 표기법,  PascalCase파스칼케이스 표기법    출력 & 입력 Output & Input 출력 : 프로그램에서 다른 장치로 데이터를 전송하는 행위입력 : 다른 장치로부터 데이터를 불러와서 프로그램에서 확인하는 행위    자료형 Type프로그램의 모든 정보를 저장할 수 있는 적절한 형태정수Long64비트Int32비트Short16비트Byte8비트실수Double64비트Float32비트문자Char16비트문자열StringX논리Boolean8비트  ..

코틀린문법 1주차 강의 [프로그래밍 ~ 개발환경]

프로그래밍프로그램을 제작하는 행위, 컴퓨터와 소통하는 행위 Program+ing : 명령어의 조합특정한 목정에 적절하게 사용하기 위해 여러가지 언어가 있다.  코틀린앱, 백엔드, 데스크탑 프로그램 등 다양한 프로그램을 개발할 수 있는 언어구글에서 안드로이드 앱 개발할 때 권장하는 언어JVM 언어와 100% 호환되는 언어Java의 단점을 개선한 코틀린자료형(타입) 명시하지 않아도 추론보다 간결한 코드작성Null 예외 방지로 보다 안정적  개발환경IDE (Integrated Development Environment)를 통해 코틀린으로 프로그램을 개발할 수 있다.대표적인 설치형 IDE : IntelliJ IDEA, Android Studio단축키(Mac기준)라인지우기 : Command + delete주석처리..

Git Book 문법 [코딩컨벤션 변수 함수 클래스]

코딩컨벤션 Coding Convention코드 작성규칙 명명규칙카멜 표기법 camel Case : 첫글자 소문자. 이후 새로운 단어의 첫글자 대문자로 표기. 변수명, 함수명상수명은 모두 대문자로 표기파스칼 표기법 Pascal Case (또는 camel case with an uppercase first letter) : 첫글자는 대문자. 이후 새로운 단어의 첫글자 대문자로 표기. 클래스명스네이크 표기법 SNAKE_CASE : 언더스코어로 단어구분. 상수명(원래 소문자. 상수명만 대문자로 한다.) 케밥 표기법 kebab-case : 모두 소문자. 하이픈으로 단어구분. 스프링의 yml파일이나 url주소에서 사용들여쓰기 Indent새로운 코드 블록이 시작되면 들여쓰기. 일반적으로 4칸씩 들여쓴다.    변수 ..

Git Book 문법 [안드로이드 스튜디오와 앱]

용어정리더보기더보기SDK Software Development Kit : 소프트웨어 개발도구 모음 dp Device independence Pixel : 다양한 화면 크기에서 동일한 비율로 출력되도록 하는 픽셀 단위View 뷰 : 레이아웃처럼 사용자에게 보이는 것들을 통칭 안드로이드 스튜디오 Android studio  SDK안드로이드 스튜디오는 편집을 편하게 해주는 도구일 뿐, 실제 개발환경은 모두 SDK에 있고 이 SDK에서 최종 설치파일을 만들어준다. SDK Platforms에서는 플랫폼 버전별로 확인 가능하고 SDK Tools의 주요 설명은 아래와 같다.Android SDK Build-Tools : 리소스 아이디를 가지고 있는 R 파일을 생성하고 설치 파일인 APK 파일을 최적화 하는 도구. 자바..