안드로이드 4대 컴포넌트 안드로이드 앱은 독립된 형태로 존재하며, 고유의 기능을 수행하는 Component(컴포넌트)로 구성되어있다 Activity, Service, Broadcast Receiver, Content Provider 4가지 유형으로 존재한다 각 컴포넌트는 Intent를 통해 서로 상호작용한다 ✔️ Activity (액티비티) UI를 담당하는 컴포넌트이며 사용자와의 상호작용을 담당한다 모든 안드로이드 어플리케이션은 반드시 하나 이상의 Activity를 가진다 LifeCycle 메소드를 재정의하여 원하는 기능을 정의할 수 있다 각 Acitivity는 Manifest에 등록되어 있어야 한다 하나 이상의 view 또는 ViewGroup을 가질 수 있다 두 개의 Activity를 동시에 화면에 보..
Room Room은 구글에서 제공하는 공식 ORM(Object-realational mapping)이다 Room 라이브러리를 사용하면 실행 기기에 앱 데이터 캐시를 만들고 네트워크 연결 여부와 관계없이 보여지게 할 수 있다! Room은 그림과 같은 3가지 요소들로 구성된다 DataBase : 데이터베이스 접근 지점을 제공하며 DAO를 관리한다 Dao : 데이터베이스에 접근할 수 있는 함수들이 정의되어 있으며 이 함수들은 쿼리문을 이용해 구현해줘야 한다 Entity : 데이터베이스 내의 DB 테이블을 나타낸다 Room 적용하기 ✔️build.gradle(app) dependencies { def room_version = "2.2.5" implementation "androidx.room:room-runt..
지난주 스터디에서 그래프를 공부했다고 실버 안풀어보고 덤볐다가 시간초과때매 두시간동안 고생했다ㅜ0ㅜ 까먹기 전에 정리해서 이제 똑같은 이유로는 안틀릴거다☠️ 문제 방향그래프가 주어지면 주어진 시작점에서 다른 모든 정점으로의 최단 경로를 구하는 프로그램을 작성하시오. 단, 모든 간선의 가중치는 10 이하의 자연수이다. 입력 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1≤V≤20,000, 1≤E≤300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1≤K≤V)가 주어진다. 셋째 줄부터 E개의 줄에 걸쳐 각 간선을 나타내는 세 개의 정수 (u, v, w)가 순서대로 주어진다. 이는 u에서 v로 가는 가중치 w인 간선이 존재한다는 뜻이다...
의존성 주입 (Dependency Injection) 이란❓ 구성 요소간의 코드 내부가 아닌 외부에서 의존 객체를 생성하여 넘겨주는 디자인 패턴중 하나이다 // 내부에서 멤버로 생성 class Person{ private val dog = Dog() fun walk(){ dog.walk() } } fun main(args: Array) { val person = Person() person.walk() } 먼저 위의 경우 Dog 클래스의 인스턴스를 Person 클래스 내부에서 생성해서 사용하게 된다 이 때, Person 클래스는 Dog 클래스에 의존성을 가지고 있다고 할 수 있는데 Dog 클래스에 변화가 생기면 Dog클래스를 참조하는 모든 클래스를 수정해줘야 한다 // 외부에서 생성자로 주입 class ..
AAC (Android Architectire Components) 안드로이드 아키텍처 구성요소는 테스트와 유지관리가 쉬운 앱을 디자인하도록 돕는 라이브러리의 모음이다 앱의 수명 주기를 관리하여 구성 변경을 유지하고 메모리 누수를 방지하며 UI에 쉽게 데이터를 로드할 수 있게 해준다 현재 AAC는 아래 5개 라이브러리를 제공한다 LifeCycle LiveData ViewModel Room Paging 아래의 그림은 아키텍처 컴포넌트들이 상호작용하는 순서를 나타낸 그림이다 ViewModel MVVM 패턴에서 ViewModel은 Repository와 View를 연결해주는 다리 역할을 한다 ViewModel에서는 UI를 위한 데이터를 가지고 있으며, 화면 회전과 같이 구성을 변경할 때도 데이터를 유지할 수 있..
예상문제 풀면서 계속 반복해서 나온 내용을 외우기 위해 블로그에 정리하기로 했다! 정처기 실기를 준비하는 모두에게 도움이 됐으면 좋겠다 01. 요구사항 확인 현행 시스템 파악 절차 : 구성/기능/인터페이스 파악 -> 아키텍쳐 및 소프트웨어 구성 파악 -> 하드웨어 및 네트워크 구성 파악 요구공학 : 시스템 개발, 변경의 목적을 식별하기 위해 이해관계자들의 요구를 이해, 조정하는 과정 요구사항 개발 프로세스 : 도출 -> 분석 -> 명세 -> 확인 요구사항 도출 필요성 : 범위 기준선 제공, 일정/원가 영향, 추적성 제공 요구사항 도출 기법 : 핵심그룹, 심층워크샵, 인터뷰, 집단창의력기법, 프로토타입 등 요구사항 추출 방법 : 기능적 (사용자, 기능, 자료, 인터페이스) / 비기능적 (자원, 성능, 보안..
Comparable Interface 클래스의 기본 정렬 기준을 설정하는 인터페이스 Comparable Interface의 compareTo() 메소드를 구현하여 정렬의 기준이 되는 메소드를 정의하여 사용한다 정렬 가능한 클래스들로 Arrays.sort() 호출 시 실행되는 함수가 바로 Comparable Interface에 기본으로 오름차순으로 정의되어 있는 compareTo() 메소드이다! 하지만 특정 클래스 타입의 객체는 정렬 기준을 따로 정해줘야하기 때문에 해당 클래스에서 Comparable Interface를 상속받아 compareTo() 메소드를 override하여 정렬의 기준이 되는 메소드를 정의해줘야 한다 사용 방법 정렬하고자 하는 객체의 클래스에 Comparable Interface를 상..
문제 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크기가 N×M인 직사각형으로 나타낼 수 있으며, 직사각형은 1×1 크기의 정사각형으로 나누어져 있다. 연구소는 빈 칸, 벽으로 이루어져 있으며, 벽은 칸 하나를 가득 차지한다. 일부 칸은 바이러스가 존재하며, 이 바이러스는 상하좌우로 인접한 빈 칸으로 모두 퍼져나갈 수 있다. 새로 세울 수 있는 벽의 개수는 3개이며, 꼭 3개를 세워야 한다. 예를 들어, 아래와 같이 연구소가 생긴 경우를 살펴보자. 2 0 0 0 1 1 0 0 0 1 0 1 2 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 ..