깨알 개념 86

[Android] ViewModel - View에 객체(ViewModel) 전달

#1 개요 #1-1 Data Binding과 ViewModel [Android] Data Binding - View에 객체 전달 #1 객체 전달의 필요성 #1-1 이전 글 Data Binding - 기초 #1 데이터 바인딩 사용 전 #1-1 예시 앱 위과 같은 간단한 앱이 있다. Button을 누르면, EditText의 text가 바로 위에 있는 TextView의 text에 대입된다. 이 kenel.tistory.com 데이터 바인딩을 이용해 View에 객체를 보낼 수 있었다. 그렇다면, ViewModel의 객체 또한 같은 방식으로 보낼 수 있을 것이다. #1-2 ViewModel이 쓰인 샘플 앱 [Android] LiveData - 기초 #1 개요 #1-1 LiveData LiveData 개요 | An..

[Kotlin] 프로퍼티(Property)

#1 필드와 프로퍼티 #1-1 프로퍼티의 개념 // Java String name = "steve"; // Field System.out.println("my name is" + name); name = "kevin"; --- // Kotlin var name : String = "steve" // Property println("my name is" + name) name = "kevin" 코틀린에는 필드의 역할을 프로퍼티(속성)가 수행한다. 필드는 값 그리고 그 값에 접근하는 레퍼런스의 단순한 구성이다. 프로퍼티는 여기에 그 값을 다루는 메소드 즉, Getter와 Setter를 결합한 개념이다. 하지만, 위 코드에서 자바의 필드 name과 코틀린의 프로퍼티 name은 서로 다른 게 없어보인다. 이는 ..

[Android] LiveData - 기초

#1 개요#1-1 LiveData LiveData 개요  |  Android 개발자  |  Android DevelopersLiveData를 사용하여 수명 주기를 인식하는 방식으로 데이터를 처리합니다.developer.android.comLiveData. 문서적인 정의는 Data의 변경을 관찰할 수 있는 데이터 홀더 클래스고, 말 그대로 해석하면 살아있는(live) 데이터(data)다. Activity, Fragment, Service에 있는 Data, 예를 들어 어떤 변수 A가 있고 그 A를 어떤 TextView에 표시해놓은 상황을 생각해 보자. A의 값이 변경되면, TextView에 변경된 A값을 다시 할당해야한다. LiveData는 그 귀찮은 할당 과정을 프로그래머가 생략할 수 있게 만들어준다. L..

[Android] ViewModel - 뷰 모델에 인자(Argument) 전달 (ViewModelFactory)

#1 ViewModelProvider 클래스 분석#1-1 수정할 샘플 앱 [Android] View Model - 기초#1 View Model의 필요성#1-1 예제버튼을 누르면 TextView의 text가 1씩 증가하는 예시 앱이다. MainActivity.kt 코드는 다음과 같다. // package com.example.viewmodelbasics import androidx.appcompat.app.AppCompatActivity import androkenel.tistory.com위 게시글의 '완성된 앱'을 수정해서, ViewModel 클래스가 인자(Argument)를 받게 만들어본다. 그냥 class sampleViewModel(args: Int) : ViewModel() { ... }와 같이 ..

[Android] ViewModel - 기초

#1 View Model의 필요성#1-1 예제버튼을 누르면 TextView의 text가 1씩 증가하는 예시 앱이다. MainActivity.kt 코드는 다음과 같다. // package com.example.viewmodelbasicsimport androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport androidx.databinding.DataBindingUtilimport com.example.viewmodelbasics.databinding.ActivityMainBindingclass MainActivity : AppCompatActivity() {    private lateinit var binding: ActivityMai..

[Android] Data Binding - View에 객체 전달

#1 객체 전달의 필요성 #1-1 이전 글 Data Binding - 기초 #1 데이터 바인딩 사용 전 #1-1 예시 앱 위과 같은 간단한 앱이 있다. Button을 누르면, EditText의 text가 바로 위에 있는 TextView의 text에 대입된다. 이 앱의 코드는 다음과 같다. #1-2 activity_main.xml #1-3 Main kenel.tistory.com 이전 글에서 이어진다. 이전 글에선, 데이터 바인딩을 통해 View의 레퍼런스를 일괄적으로 가져와 참조할 수 있었다. 이번에는 반대로 View에게 객체를 보낸다. 아래의 예시 앱을 보자. #1-2 예시 앱 이 앱은 어떤 책 클래스의 객체를 받아 화면에 표시하는 앱이다. 화면 아래에 있는 버튼들을 누르면 화면 위 쪽의 TextVie..

[Android] Data Binding - 기초

#1 데이터 바인딩 사용 전 #1-1 예시 앱 위과 같은 간단한 앱이 있다. Button을 누르면, EditText의 text가 바로 위에 있는 TextView의 text에 대입된다. 이 앱의 코드는 다음과 같다. #1-2 activity_main.xml #1-3 MainActivity.kt // package com.example.databindingpractice import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Button import android.widget.EditText import android.widget.TextView class MainActivity : AppCom..

그래프, 그래프의 표현

#1 그래프#1-1 그래프그래프는 현상이나 사물을 정점(Vertex)와 간선(Edge)로 표현하는 것이다. 정점은 어떤 개체를 나타내고, 간선은 그 개체들 간의 관계를 나타낸다. 위 그림은 각 정점(도시)을 항공편(간선)이 잇는 모습을 표현한 예이다. n개의 정점 집합 V와 이들 간에 존재하는 간선의 집합 E로 구성된 그래프 G를 G = (V, E)로 기술한다. #1-2 가중치가 없는 그래프 vs 가중치가 있는 그래프간선에는 가중치를 줄 수 있다. 항공편으로 비유하자면, 운항비가 가중치가 된다. 가중치가 없는 그래프를 가중치가 있는 그래프처럼 생각할 수도 있다. 모든 가중치를 1로 보면 된다. #1-3 무향 그래프 vs 유향 그래프항공편은 반드시 양방향적이지는 않다. 예를 들어 런던에서 파리를 갈 수 있..

동적 프로그래밍 (Dynamic Programming), 상향식(Bottom-up) 및 하향식(Top-down) 접근

#1 알고리즘#1-1 정의동적 프로그래밍을 한 줄 요약하면 중복의 제거다. 정적(static)이라는 개념과 반대되는 개념으로서, 동적(dynamic)이라는 단어가 이름에 붙었다. 확실히 static이 붙을 만한 작업은 아니지만, 그렇다고 많은 단어들 중에 굳이 dynamic가 붙을 필요 또한 없다. '동적', ' dynamic'이라는 이름은 동적 프로그래밍의 (중복의 제거라는) 핵심을 직관적으로 이해하지 못하게 만든다. 하지만, 관례적으로 이미 굳어진 이름이라 앞으로도 쓰일 것이라는 사실은 안타까우면서도 분명하다. #1-2 종류동적 프로그래밍은 이와 같이 2가지 방식으로 나뉜다. #1-3 상향식(Bottom-up) 접근 [백준] 17626 - Four Squares#1 알고리즘 123 123 재귀 함수가..

API (Application Programming Interface)

#1 알고리즘 #1-1 API는 UI와 비슷하다. UI가 화면을 통해 사용자와 소프트웨어가 상호작용하는 규격이라면, API는 프로그래머끼리 또는 소프트웨어끼리 또는 프로그래머와 소프트웨어 간의 상호작용을 위한 규격이라는 점에서 그렇다. UI는 인터페이스에 불과하며, 실제 화면을 구성하는 것은 버튼ㆍ스크롤바ㆍ텍스트 박스ㆍ이미지 등이다. API 또한 엄연히 인터페이스에 불과하며, 실제로 기능을 구현하는 것은 라이브러리다. 예를 들어, Google Map 서비스를 실제로 구현하는 것은 구글 서버에 저장된 지도ㆍ위치 관련 라이브러리들이지 Google Map API 자체가 아니다. 사용자는 그저 API 즉, '연결된 라이브러리에 접근해 그 기능을 활용할 수 있는 관문(인터페이스)'을 통해 상호작용할 뿐이다. #1..