본문 바로가기

전체 글134

06-2 뷰 클래스 티스토리 단축키 확인 ctrl + '/' 키 코드블록 단축키 alt+ctrl+',' 뷰 클래스의 기본 구조 뷰 객체의 계층 구조 액티비티 화면을 구성할 때 사용하는 클래스는 모두 View의 하위 클래스이다. 그래서 화면구성과 관련한 클래스를 통칭하여 뷰 클래스라고 한다. 뷰 클래스의 하위에는 다양한 클래스가 있고 각 클래스의 역할은 다음과 같다. View: 모든 뷰 클래스의 최상위 클래스. 액티비티는 이 클래스의 서브 클래스만 화면에 출력함 ViewGroup: View의 하위클래스지만 자체 UI는 없어서 화면에 출력해도 아무것도 나오지 않음. 다른 뷰 여러개를 묶어서 '제어'하는 목적. 그릇 역할. 컨테이너 기능 담당. 실제로는 ViewGroup의 서브클래스인 레이아웃클래스를 사용함. TextView: .. 2023. 6. 15.
06-1 화면을 구성하는 방법 티스토리 단축키 확인 ctrl + '/' 키 코드블록 단축키 alt+ctrl+',' 06~10장: 셋째마당-앱의 기본 기능 구현하기 액티비티-뷰 구조 안드로이드 앱의 기본 구조는 컴포넌트를 기반으로 한다. 즉 안드로이드 앱은 액티비티, 서비스, 브로드캐스트 리시버, 콘텐츠 프로바이더와 같은 컴포넌트를 적절하게 조합해서 만든다. 그런데 이중에서 화면을 출력하는 컴포넌트는 액티비티 뿐이다. 앱에서 화면을 출력하고 싶다면 액티비티가 필수인 것이다. 액티비티는 화면을 출력하는 컴포넌트일 뿐, 그 자체가 화면인 것은 아니라서 별도의 화면 구성을 필요로 한다. 화면 구성 없이 액티비티만 실행하면 텅 빈 흰 화면이 보인다. 화면에 내용을 표시하려면 뷰(view) 클래스를 이용해 구성해야 한다. ex. TextView.. 2023. 6. 15.
05-2 널 안정성 티스토리 단축키 확인 ctrl + '/' 키 코드블록 단축키 alt+ctrl+',' 널(Null) 안정성 널(Null)이란? 객체가 선언되었지만 초기화되지 않은 상태 객체는 데이터가 저장된 주소를 참조하므로 흔히 '참조 변수'라고 함. 데이터가 메모리에 저장되면 어디에 저장됐는지 알아야 이용할 수 있는데, 이때 해당 메모리 위치를 식별하는 것이 '주소'. 정리하면, 객체가 메모리에 담긴 데이터를 이용하기 위해, 객체에는 데이터가 직접 저장되는 것이 아닌 데이터가 저장된 메모리의 '주소'가 저장된다. 그 주소로 메모리에 접근해서 데이터를 이용한다. 그런데 널은 객체가 주소를 가지지 못한 상태를 나타낸다. 다음 코드에서는 data1 변수에 "hello"라는 데이터를 저장했다. 하지만 실제로는 "hello"라.. 2023. 6. 15.
05-1 람다 함수와 고차 함수 람다 함수(람다식) 코틀린 뿐만 아니라 많은 프로그래밍 언어에서 익명함수(anonymous function)를 정의할 때 사용됨 고차함수는 매개변수나 반환값으로 함수를 이용하는데, 람다 함수는 주고받을 함수를 간단하게 정의할 때 사용함. 즉, 그 자체도 가치가 있지만 고차 함수를 이해하고 사용하려면 꼭 알아야 한다! 람다 함수 선언과 호출 일반적인 함수는 fun 키워드로 선언하지만, 람다함수는 중괄호 { } 이용함 fun 함수명(매개변수) { 함수 본문 } // 함수 선언 형식 { 매개변수 -> 함수 본문 } // 람다 함수 선언 형식 코틀린에서의 람다 함수 사용 규칙 람다 함수는 { }로 표현함 { } 안에 화살표(->)가 있으며 화살표 왼쪽은 매개변수, 오른쪽은 함수 본문임 함수의 반환값은 함수 본문.. 2023. 6. 15.
04-3 코틀린의 클래스 종류 데이터 클래스 data 키워드로 선언 자주 사용하는 데이터를 객체로 묶어줌. VO(value-object) 클래스를 편리하게 이용할 수 있게 해줌. equals() 함수 객체의 데이터를 비교함 VO 클래스는 데이터를 주요하게 다루므로 데이터가 같은지 자주 비교함 ❗️'객체가 같은지'가 아니라 객체의 '데이터가 같은지' 를 비교함❗️ // 데이터 클래스 선언 예시 class NonDataClass(val name: String, val email: String, val age: Int) // 일반 클래스 data class DataClass(val name: String, val email: String, val age: Int) // 데이터 클래스 // 두 클래스의 주 생성자는 매개변수 구성이 같음 //.. 2023. 6. 14.
04-2 클래스를 재사용하는 상속 상속과 생성자 상속(inheritance)이란? 클래스를 선언할 때 다른 클래스를 참조해서 선언하는 것 코틀린에서는 어떤 클래스를 상속받으려면 선언부에 '콜론(:) 상속받을 클래스 이름' 붙여주면 됨(기존 클래스 재사용) 상위 클래스: 상속 관계에서 상속대상이 되는 클래스 하위 클래스: 상속 받는 클래스 클래스는 기본적으로 상속이 불가능 ➡️ 'open' 키워드 사용 상위 클래스를 상속받은 하위클래스의 생성자에서는 상위클래스의 생성자를 호출해야 함 // 클래스 상속 형식 open class Super { // open 키워드 사용하여 상속할 수 있게 됨 } class Sub: Super() { // 콜론과 상위 클래스 이름+(매개변수 없는)생성자 함께 호출함(괄호가 생성자 그자체) } // 매개변수 있는.. 2023. 6. 14.