본문 바로가기

분류 전체보기254

[Kotlin] 깊은 복사 (Deep Copy) 3가지 방법 🤔복사가 뭐가 중요한데?가끔 그럴때가 있다.분명 A 변수/인스턴스의 값을 변경했는데 B까지 바뀐 그런 슬픈 일..띠용해서 주솟값을 찍어보면 더 띠용한다.내가 직접 변경한 A와 변경된 B가 같은 주솟값을 가지고 있다.그것은 바로 얕은 복사와 깊은 복사를 구분하지 않았기 때..문..내 변수는 소중하니까.. 복사하는 방법에 대해 알아보자.. 😮얕은 복사(Shallow Copy) vs 깊은 복사(Deep Copy)얕은 복사는 말 그대로 얕게 복사하고 깊은 복사는 깊게 복사한다.얕은 복사(Shallow Copy)얕은 복사 : 객체를 복사할 때, 객체의 주솟값을 복사하는 방법class SampleClass(var id: Int) { ...}위와 같은 SampleClass가 존재할 때 얕은 복사는 다음과 같이 진.. 2024. 11. 2.
[Kotlin] Object 키워드 (with companion object) 이번 포스팅에서는 Kotlin에서 object 키워드가 무엇을 의미하고  class와 object는 어떤 차이가 있는지에 대해 알아보겠습니다.object 키워드의 의미와 사용코틀린에서 object 키워드는 클래스를 정의하는 동시에 객체를 생성하는 것이라고 볼 수 있습니다.Kotlin에는 Java에서 쓰이는 static 키워드가 존재하지 않기 때문에 object를 사용해 static의 개념을 표현합니다. object 키워드는 주로 다음과 같은 경우에 사용됩니다.1. 싱글톤(Singleton) 클래스 정의2. 동반객체(companion object) 생성3. 익명 클래스 생성 1. 싱글톤(Singleton) 클래스 정의싱글톤(Singleton)은 프로젝트에서 어떤 객체를 매번 생성하지 않고 하나의 객체만 생.. 2024. 11. 2.
[Kotlin] Data Class란? 자바와 다르게, 코틀린은 다양한 Class 를 제공해준다. 그 중 하나로 Data Class 라는 것이 있는데, 이는 자바 개발자들의 고충과 니즈를 정확히 파악한 기능을 갖고 있다. 정말 감동적이지 아니할 수 없다!이번 포스팅에선, Data Class (데이터 클래스) 가 우리에게 선사하는 감동을 느껴보자! Data Class (데이터 클래스) 개념일반 클래스와 달리, 다양한 메소드를 자동으로 생성해주는 클래스이다. 만약 자동으로 생성되는 메소드들이 별로 필요하지 않는 녀석들이었다면, 개발자들 사이에서 쓰이지도 않았을 터이다. 하지만 매우 폭발적인 편리함을 제공하는 유용한 메소드들이 자동 생성된다. Data Class 생성 시 같이 만들어지는 녀석들hashCode()copy()equals()toStrin.. 2024. 11. 2.
[Kotlin] Sealed Class란? Enum Class 이야기enum 은 C언어에도 존재할 만큼, 범용성이 뛰어난 녀석이다. 코틀린에도 당연하게 enum 클래스가 존재한다. 이를 활용해서 아래와 같은 동작을 구현할 수 있었다.enum class Color(val r: Int, val g: Int, val b: Int) { RED(255, 0, 0), ORANGE(255, 165, 0), YELLOW(255, 255, 0), GREEN(0, 255, 0), BLUE(0, 0, 255); fun rgb() = (r * 256 + g) * 256 + b}fun getColorName(color: Color) = when (color) { Color.RED -> "빨강" Color.ORANGE -> "주황" .. 2024. 11. 2.
[Android] Theme vs Style Theme != Stylethemes 와 styles 둘 다   아래에서 보듯이 style의 각 key는 layout 에서 설정할 수 있는 attribute들입니다. 이것들을 style 로 추출하면 여러 view 에서 쉽게 재사용할 수 있고, 유지보수도 용이합니다. UsageStyles 은 layout의 각 view 에서 사용될 수 있습니다. View 는 하나의 style만 적용합니다. - 웹에서 css 가 여러 class들을 적용할 수 있는 것과 대조됩니다. Scopeview 에 적용된 style 은 바로 그 view 에만 적용되고, 자식들에게는 적용되지 않습니다. 예를 들어 3개의 버튼을 가진 ViewGroup이 있을 때, InlineAction style을 ViewGroup에 적용하더라도 자식 버튼.. 2024. 10. 27.
[Android] View에 대하여 (2) - CustomView 만들기 커스텀 뷰 만들기커스텀뷰는 왜 필요할까?안드로이드 프레임워크에서 기본 제공되는 위젯들로는 Button, TextView, EditText, ListView, CheckBox, RadioButton, Spinner 등이 있고 레이아웃으로는 LinearLayout, FrameLayout, RelativeLayout 등이 있습니다.하지만 실제로 앱을 만들다 보면 기획자, 디자이너, 사용자(클라이언트)의 요구사항에 맞는 기능을 위의 열거한 뷰들로 만들기 어렵거나 불가능한 경우가 부지기수입니다. 예를들면, 원형 썸네일을 표현하기 위한 뷰를 만들기 위해서 ImageView를 상속할 수있고, 텍스트의 일부 내용만 보여주고 원할 때 펼쳐 모든 내용을 보여줄 수 있는 뷰를 만들기 위해서는 TextView를 상속할 수도 .. 2024. 10. 27.