Gradle 프로젝트의 모든 코드를 가져와 대상 환경에서 실행할 수 있는 배포 가능한 단위로 패키징하는 빌드 자동화 도구 소규모 프로젝트를 빠르게 구축하거나 시간이 오래 걸리는 매우 복잡한 프로젝트를 구축할 수 있다. Gradle 빌드는 JVM(Java Virtual
OOP(Object-Oriented Programming) WHAT 프로그램을 객체들의 집합으로 무엇을 어떻게 할 것인지에 집중하여 결과를 만들어내는 명령형 프로그래밍 방법 객체 사전적 의미 : 실생활에서 우리가 인식할 수 있는 사물이나 개념으로 속성과 동작을 갖고 있
간결하고 실용적이며, 자바 코드와의 상호운용성을 중시하는 정적 타입 지정 언어 상호운용성 : 하나의 시스템이 다른 시스템과 아무런 제약없이 서로 호환되어 사용할 수 있는 성질 정적 타입 지정 언어 모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고, 프로그램
둘 다 프로그램의 실행과 관련된 단어들 프로그램(Program) : 어떤 작업을 위해 실행할 수 있는 파일 프로그램과 프로세스의 연관성 : 모든 프로그램은 운영체제가 실행되기 위한 메모리 공간을 할당해 줘야 실행될 수 있다. 프로그램을 실행하는 순간 파일은 컴퓨터 메모
효율적인 루핑을 위한 이터레이터를 만드는 함수 combinations(iterable, r) : iterable에서 원소 개수가 r개인 조합 뽑기 combinations_with_replacement(iterable,r) : iterable에서 원소 개수가 r개인 중복
WHAT) 해시 함수를 사용해서 변환한 값을 인덱스로 삼아 키와 값을 저장해서 빠른 데이터 탐색을 제공하는 자료구조 HOW) 키와 데이터를 일대일 대응하여 저장하기 때문에 키를 통해 데이터에 바로 접근할 수 있다. WHY) 어떤 데이터를 찾을 때 처음부터 끝까지 순차
Git : 소스 코드 기록을 관리하고 추적할 수 있는 버전 제어 시스템 GitHub : Git 저장소를 관리하는 클라우드 기반 호스팅 서비스 Git 저장소 호스팅 서비스 : 로컬 컴퓨터/서버 외부에서 Git 버전 제어 프로젝트를 추적하고 공유할 수 있는 온라인 ...
개발자들이 작성한 코드를 공유 저장소에 정기적으로 통합하는 접근 방식이다. 이 과정에서 코드는 자동화된 빌드와 테스트를 거쳐 통합되기 때문에 오류가 발생하면 즉시 알 수 있다. 예를 들어, 오랜 시간 동안 변경된 코드가 통합되지 않다가 올라가게 되면 ...
배열을 정렬하면 현재 문자 다음에 오는 문자는 같거나 다르다. set을 이용하여 중복되는 문자인지 확인한다. hashset : Set 인터페이스에서 지원하는 구현 클래스Set + in = O(1) vs List + in = O(N) 중복되는 문자가 없다면 원래 ...
UI 요소와 데이터를 프로그램적 방식으로 연결하지 않고, 선언적 형식으로 결합할 수 있게 도와주는 라이브러리이다. 뷰를 참조하거나 UI 업데이트를 위해 별도의 코드를 작성할 필요가 없어 코드가 더 간결해진다. UI와 관련된 로직이 XML 레이아웃 파일에 직접 ...
LinearLayout은 세로나 가로의 단일 방향으로 모든 하위 요소를 정렬하는 뷰 그룹이다. ConstraintLayout은 부모나 다른 뷰에 대한 제약 조건을 설정하여, 다양한 화면 크기와 해상도에 대응하여 반응형 레이아웃을 쉽게 구현할 수 있도록 도와준다.
드로잉과 이벤트 처리를 담당하는 UI 구성요소의 기본 클래스로, View를 상속받아 구현하는 TextView, Button과 같은 특정 기능을 하는 View의 서브 클래스들 위젯, 컴포넌트라고 부르기도 한다. 사용자 인터페이스 구성 요소의 기본 구성 요소를 ...
return 키워드와 블록을 만드는 중괄호({})를 생략하는 단일 식 형태의 함수로, 컴파일러가 표현식의 타입을 추론할 수 있기 때문에 명시적인 반환 타입을 생략해도 된다. 로직이 단순하고 결과를 바로 반환하는 경우 식이 본문인 함수를 쓰는게 더 좋다.
순수 Kotlin 프로젝트에서 권장되는 디렉터리 구조는 공통 루트 패키지가 생략된 패키지 구조를 따른다. Kotlin 파일이 단일 클래스나 인터페이스를 포함하고 있다면(관련 최상위 선언이 포함될 수 있음), 그 파일 이름은 클래스의 이름과 동일하게 하고 ...
객체에서 어떤 Class를 참조해서 사용해야하는 상황이 생긴다면, 그 Class를 직접 참조하는 것이 아니라 그 대상의 상위 요소(추상 클래스 or 인터페이스)로 참조하라는 원칙객체들이 서로 정보를 주고 받을 때는 의존 관계가 형성되는데, 이때 객체들은 나름대로의...
범용적인 인터페이스 보다는 클라이언트(사용자)가 실제로 사용하는 Interface를 만들어야 한다는 의미로, 인터페이스를 사용에 맞게 끔 각기 분리해야 한다는 설계 원칙. 인터페이스를 잘게 분리함으로써, 클라이언트의 목적과 용도에 적합한 인터페이스만을 제공하는 것
서브 타입은 언제나 기반(부모) 타입으로 교체할 수 있어야 한다는 원칙. 교체하다 : 자식 클래스는 최소한 자신의 부모 클래스에서 가능한 행위는 수행이 보장되어야 한다는 의미즉, 부모 클래스의 인스턴스를 사용하는 위치에 자식 클래스의 인스턴스를 대신 사용했을 때...
기존의 코드를 변경하지 않으면서, 기능을 추가할 수 있도록 설계가 되어야 한다는 원칙확장에 대해서는 개방적(open)이고, 수정에 대해서는 폐쇄적(closed)이어야 한다. 다형성과 확장을 가능케 하는 객체지향의 장점을 극대화하는 설계 원칙 모듈의 확장성을...
프로그램의 유지보수 성을 높이기 위한 설계 기법으로, 클래스(객체)는 단 하나의 책임(기능)만 가져야 한다는 원칙즉, 하나의 클래스는 하나의 기능을 담당하여 하나의 책임을 수행하는 데 집중되도록 클래스를 따로따로 여러개 설계하라는 원칙. 하나의 클래스에 기능이...
객체지향 설계에서 지켜줘야 할 5개의 소프트웨어 개발 원칙. SRP (Single Responsibility Principle) : 단일 책임 원칙. OCP (Open Closed Principle) : 개방 폐쇄 원칙. LSP, ISP, DIP ...