제네릭은 기본적으로 Generalize, '일반화'한다에서 나온 개념이다. 즉, 데이터의 타입을 일반화 한다는 것이다. 이것을 통해서 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 타임에 미리 지정하는 방법이다. 이전의 JDK 버전에서는 여러가지 타입을 사용하는 클래스나 메소드에서 인수나 반환값으로 최상위 객체인 Object 타입을 이용해 왔다. 이 때는 Object 객체를 다시 원하는 타입으로 변환해야 하기에 오류가 발생할 가능성이 높았다. 하지만 이후 버전에서부터는 제네릭의 도입으로 컴파일 시에 미리 타입이 정해져 안정성이 증가하고 타입 변환과 검사를 할 필요가 없어졌다. 그리고 제네릭(타입 T)에 대한 일반 메소드를 구현해 놓으면 모든 타입의 객체에 사용할 수 있어서 확장성이 증가되었다. 정..
전체 글
개발 블로그앞 게시글에서 Palette에서 자주 사용되는 View에 대해 알아보았다. 이번에는 Palette의 또 다른 카테고리인 Layout에 대해서 다루어 보겠다. 안드로이드 Layout 클래스는 View 위젯들을 화면에 배치하는 과정에서 위젯의 위치를 정렬하거나 연관된 위젯들을 그룹화하는 역할을 수행한다. 즉, Layout 클래스는 View 위젯들을 그룹화하여 배치하기 위한 용도로 사용되는 ViewGroup이다. 하지만 자체적인 UI 표시 기능이나 사용자 이벤트 처리 기능은 매우 제한적으로 사용된다. 1. LinearLayout LinearLayout의 Linear은 '선형'이라는 뜻이다. 따라서 LinearLayout은 화면은 가로방향이나 세로방향으로 나열할 때 사용하는 Layout이다. Horizontal..
Palette 메뉴에는 Common(자주 사용되는 컴포넌트들) / Text / Buttons / Widgets / Layout / Container / Google(구글에서 제공하는 광고판, 맵 뷰) 로 이루어진 하위 카테고리가 있다. 여기에서 각 카테고리별로 자주 사용되는 View에 대해 정리해보고자 한다. 1. Text TextView: 화면에 텍스트를 표시하는 기능을 제공한다. 2. Buttons Button: User가 탭하거나 클릭해서 작업을 수행할 수 있는 사용자 인터페이스 요소이다. MainActivity에서 setOnClickListener로 버튼을 누르면 어떤 작업을 수행할 것인지 설정할 수 있다. ImageButton: 사용자가 누르거나 클릭할 수 있는 이미지 버튼을 표시한다. Chip..
앱 구성 요소 Android 앱의 필수적인 구성요소로, 각각은 시스템이나 사용자가 앱에 들어올 수 있는 진입점(EntryPoint)의 역할을 한다. 이 구성요소는 크게 Activity, Service, Broadcast Reciever, Content Provider 총 4가지로 분류된다. 1. Activity Activity란 앱과 사용자가 상호작용을 하기 위한 진입점이다. 앱을 실행할 때에는 앱을 전체적으로 호출하는 것이 아니라 앱의 Activity를 호출한다. 모든 앱에 반드시 1개 이상 존재해야 한다. Activity는 사용자의 상호작용을 위한 UI가 있다. 앱이 실행되면 화면이 표시되고, 사용자의 입력값을 받으며, 사용자에게 제공하고자 하는 내용을 화면에 표시한다. 사용자의 입력값을 받는다는 것..
안드로이드 프로젝트에는 반드시 포함되어야 하는 파일이 있다. 그것은 바로 AndroidManifest.xml파일 이다. Manifest 파일은 프로젝트의 Source Set의 루트에 위치해야 한다. (별도의 루트를 성절하지 않았다면 src/main에 위치해야 한다.) Manifest 파일은 앱에 대한 필수적인 정보를 Android Build Tool과 Android OS, 그리고 Google Play에 제공한다. Manifest의 주요 속성을 알아보자. , , , , , , , , , 순으로 정리되어 있다. 1. AndroidManifest.xml 파일의 루트 요소로 단 하나의 요소를 포함해야 한다. Namespace를 지정해주는 xmlns:android 속성, package 속성을 지정한다. 2. 1번..
내가 여태껏 공부 해왔던 C나 C++과는 다르게 Kotlin에서는 Null을 사용할 수 있는 변수/사용할 수 없는 변수를 구분하여 변수를 선언해 줄 수 있다. Null이 불가능한 선언 val a:Int = 30 var b:String = "Hello" Null이 가능한 선언 val a:Int? = null var b:String? = null 위와 같이 Null이 불가능한 선언에서는 평소 우리가 알듯 선언을 해주면 되지만 Null이 가능한 선언에서는 자료형 뒤에 ?를 넣어줘서 Null이 가능한지 여부를 검사해주면 된다. 이 때 Null이 가능한지 여부를 검사해주는 것이 중요한데, 이는 NPE 즉, Null Pointer Exception이 발생할 수 있기 때문이다. 이는 null을 사용할 수 없는 변수에..
자료형은 변수에 입력한 자료가 문자이냐, 정수이냐, 실수이냐에 따라 달라진다. 1, 2, 3과 같은 정수에서는 Int, "Hello"와 같은 경우 문자열, 1.2, 3.6 과 같이 실수형인 경우 Float, Double 등이 있다. 변수를 선언할 때에는 두가지 방법이 있다. C나 C++에서는 #include// C++인 경우 #include // using namespace std; int main() { int a; float b; double c; char str[10]; return 0; } 위와 같이 선언하지만 Kotlin에서는 fun main() { val a:Int = 4 val b:Float = 1.5F val c:Double = 2.6 val str:String = "Hello" var d..
컴퓨터 언어에는 여러가지 종류가 있다. 제일 하위 언어로는 어셈블리어가 있는데, 어셈블리어는 기계가 이해할 수 있는 0과 1을 이용해서 만들어진 언어이다. 각각의 하위 명령어 세트로 이루어진 내용물을 우리가 다 일일히 외우고 있을 수는 없기에 상당히 어려운 프로그래밍에 속한다. 따라서 기계가 이해하기는 쉽지만 사람이 이해하기에는 어려운 언어이다. 어셈블리어 이후에 절차지향 언어로 C언어가 있다. C언어는 하드웨어를 다루는데 인간 친화적이면서도 유용하기 때문에 임베디드 분야에 많이 이용된다. C언어 이후에는 대형 프로그램을 만들기 위한 객체지향형 패러다임을 도입한 언어인 Java가 만들어졌다. 객체지향형 패러다임은 대형 소프트웨어를 만들기에 적합해서 Java 언어가 오랫동안 많은 분야에 사용되고 있다. J..