본문 바로가기

전체 글

(38)
[Kotlin] Kotlin 기본 문법 by "Code with Joyce" 2편 - (2) Code with Joyce님과 함께하는 '코틀린 3강으로 끝내기 - 2편 기본 문법'이다. 1. Companion Object 가장 이해하기 난해했던 내용으로 사실상 '암기'하기로 결정 내린 부분이다. Joyce님이 Companion Object를 설명할 때 클래스의 static 멤버(member)로 소개했으며 효과 또한 static 멤버와 동일해 보였기 때문에 'Companion Object는 static 멤버이다'라고 이해했다. 그러나 다른 사람들의 의견과 Kotlin 공식문서를 통해서 Companion Object는 static 멤버와 유사할 뿐이지 실제 객체의 인스턴스 멤버라고 암기했다. 각설하고, 클래스의 인스턴스(instance)와 독립적으로 사용될 클래스 멤버를 정의하기 위해 Compani..
[OOP] OOP의 5원칙 1. OOP(Object-Oriented Programming)란 프로그램 설계방법론이자 개념의 일종으로, 프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라 프로그램을 수많은 객체(object)라는 기본 단위로 나눠서 이들의 상호작용으로 프로그래밍하는 방식이다. 이러한 OOP에서 꼭 지켜야 할 5개의 원칙을 객체지향 5원칙이라 한다. 2. 객체지향 5원칙 SPR(단일 책임 원칙, Single Responsibility Principle) : 객체는 오직 하나의 책임을 가져야 하며, 클래스를 변경하는 이유는 단 하나의 이유여야 한다. OCP(개방-폐쇄 원칙, Open-Closed Principle) : 객체는 확장에 대해서는 개방적이고 수정에 대해서는 폐쇄적이어야 한다는 원칙이다. 즉, 객체 기..
[Kotlin] Kotlin 기본 문법 by "Code with Joyce" 2편 - (1) Code with Joyce님과 함께하는 '코틀린 3강으로 끝내기 - 2편 기본 문법'이다. 1. 람다(Lambda) 람다식은 간단히 람다라고도 불리는 익명 함수(이름 없는 함수)이며 우리가 마치 value처럼 다룰 수 있다. 람다는 메서드의 파라미터로 넘겨줄 수 있고 return 값으로도 활용할 수 있다. 람다를 선언하는 방법은 다양하다. // 기본형 val lambdaName : Type = { argumentList -> codeBody } // 람다를 생성하여 greeting에 할당 val greeting: () -> Unit = { println("Hello") } // number의 자료형이 추론되므로 지정할 필요가 없음 val square1 : (Int) -> (Int) = { number ..
[Kotlin] Kotlin 기본 문법 by "Code with Joyce" 1편 - (2) 1. 클래스(Class) 클래스의 기본형은 다음과 같다. // class 클래스명 constructor(변수명 : 자료형) class Human constructor(name: String) { val name = name fun eatingCake() { println("This is so YUMMYYYY") } } fun main() { // 인스턴스를 생성할 때 new 연산자를 사용하지 않음 val human = Human() human.eatingCake() } 클래스명 옆에 오는 생성자를 기본 생성자(primary constructor)라고 하며, 기본 생성자에 주석 혹은 visibility modifiers(public, private 등의 접근 제한자)가 없을 경우 constructor 연산..
[Kotlin] Kotlin 기본 문법 by "Code with Joyce" 1편 - (1) kotlin을 공부하게 된 계기는 바로 '취업'이다. 불과 2년 전까진 kotlin의 인기를 몰랐고, Java로 충분히 취업할 수 있다고 생각하고 있었다.(사실 외면하고 있던 걸지도) 학교를 졸업하고 취준생이 된 지금은 kotlin의 강세를 온몸으로 느끼고 있다. 엄청난 위기감을 체감하고 있기 때문에 kotlin도 공부하게 되었다. 그래도 '컴퓨터공학 전공자'라는 명찰을 달고 있기도 하고 kotlin이 Java 문법과 유사해서 금방 익힐 수 있었다. 유튜버 "Code with Joyce"님의 '코틀린 3강으로 끝내기 - 1편 기본 문법'으로 kotlin 문법을 공부했다. 간략하게 핵심만 짚어서 알려주셔서 기본 문법을 살펴보기 좋다고 느꼈고, 공부한 내용을 정리하려고 한다. kotlin은 안드로이드 앱 개..
[Architecture] 안드로이드가 권장하는 앱 아키텍처 개발자 모집공고를 보면 'MVVM 아키텍처'라는 단어를 쉽게 찾아볼 수 있다. 아키텍처는 시스템을 구성하는 서브 시스템, 컴포넌트와 같은 구성요소 간의 관계를 관리하는 시스템 구조이고, MVVM은 아키텍처의 한 기법으로 Model, View, ViewModel의 줄임말이다. 하나의 소프트웨어를 최대한 기능적으로 작은 단위로 나누어(이를 관심사 분리라 한다.) 테스트가 쉽고 큰 프로젝트도 상대적으로 관리하기 쉬워진다. 라는 것이 간단한 검색을 통해 얻은 사전적 지식이다. 이렇게 좋은 SW 설계 기법이지만 나는 아키텍처를 잘 모른다. 이번에 뉴스 앱을 따라 만들어 보면서 다음의 대략적인 '흐름'만 느낄 수 있었을 뿐이다. View에서 상호작용(예: 버튼 누름) 발생 - ViewModel이 Model에게 변동..
[Android] Layout 속성 설정할 때 조심할 것 이미지를 보면 앱 화면 상단에 빈 공간이 잡히는 걸 볼 수 있다. RecyclerView로 item들을 띄우는 fragment의 미리보기에서는 저런 공간이 없는데도 activity_main 레이아웃으로 들어오면 저 모양이다. 저걸 없애고자 3시간 가량 구글링 하고 있던 찰나에 이미지 뷰가 전체화면으로 출력되지 않는다고 도와달라는 글에서 adjustViewBound 속성을 제거하라는 대답을 볼 수 있었다. 순간 나도 속성값 잘못 준거 아닌가?! 라는 생각에 서둘러 activity_main으로 향했고, 아니나 다를까 paddingTop 속성에 액션바 만큼의 사이즈를 value로 설정해두었다. paddingTop 속성을 지우자 빈 공간이 사라졌다. 아까운 내 시간.. 해서 무작정 코드를 적지말자는 취지에서 이..
[Android] 뉴스 앱 만들어 본 후기 뉴스 앱을 만들게 된 계기는 원티드(Wanted)에서 진행하는 프리온 보딩(preonboarding) Android에 지원하기 위해서였다. 2주간의 기간 동안, 주어진 조건의 뉴스 앱을 만들어야 했는데 뚜껑을 열어보니 기간을 맞추지 못 할 것 같았다. 당장에 API 사용법 조차 몰라서 적용해보지도 못한 상황이었으니 어쩔 수 없었다. 그래서 인터넷에 올라오는 각종 예제들을 살펴보면서 공부해보자 라는 생각으로 시작했다. 다행히 많은 예제들이 GitHub에 올라와 있었고, 그중 하나를 골라 하나하나 뜯어봤다. 나는 여러 개의 Activity를 만들어 놓고 intent를 통해서 데이터 담고 Activity끼리 주고받을 줄만 알았지 data class, Factory / Resource Manage(?) 패턴, ..