개발을 하다 보면 "인터페이스(interface)"라는 단어를 정말 자주 듣습니다.“이 클래스는 인터페이스를 구현해야 해”, “두 시스템 간 인터페이스 정의가 필요해” 등 상황에 따라 인터페이스라는 단어가 조금씩 다르게 사용되는 걸 느끼셨을 겁니다. 이번 글에서는 우리가 흔히 사용하는 객체 지향 프로그래밍(OOP)과 소프트웨어 공학(개발론)에서의 인터페이스가 어떻게 다르고, 어떤 공통점과 차이점이 있는지를 정리해 보겠습니다.1. 객체 지향에서의 인터페이스란?객체 지향 프로그래밍에서의 인터페이스는 클래스가 반드시 구현해야 할 메서드 목록, 즉 행동의 명세(Contract)를 정의하는 추상적인 구조입니다. 특징메서드 시그니처만 정의하고, 구현은 없음다형성을 가능하게 함여러 클래스가 동일한 인터페이스를 구현하..
분류 전체보기
하이브리드 앱을 개발할 때 종종 웹 페이지에서 window.open()을 호출하는 케이스를 마주하게 됩니다. 대부분은 팝업을 새 창으로 띄우기 위한 목적인데, Android WebView는 기본적으로 이 기능을 지원하지 않기 때문에 직접 처리를 구현해주어야 합니다. 이 글에서는 Android WebView에서 window.open()을 처리하는 방법을 예시와 함께 정리해 보겠습니다.1. 새창 열기 이벤트란?웹에서는 특정 사용자 액션에 따라 **새 창(또는 새 탭)**을 여는 이벤트가 발생합니다. 대표적인 경우는 다음과 같습니다:window.open(url)을 호출한 경우 (JavaScript) 형태의 링크 클릭일반 브라우저에서는 이러한 요청이 자동으로 새 탭/창을 열어 처리되지만, Android Web..
오늘은 Solid 원칙에 대해 작성해보려고 한다. Solid 원칙은 코드를 더 깨끗하고 견고하게 만들기 위해 개발자들이 따라야 할 기본 가이드라인으로, Robert C. Martin이 제안했다. 객체 지향 프로그래밍에서 코드의 유지보수성, 확장성, 재사용성을 높이는 데 도움을 주는 다섯 가지 설계 원칙이다. 자세한 내용은 아래에 정리하려고 한다. 1. 단일 책임 원칙 (Single Responsibility Principle, SRP) "클래스는 하나의 책임만 가져야 한다." 하나의 객체는 하나의 책임만 담당책임을 적절히 분배하면서 책임 변경이 다른 책임의 변경으로 전파되지 않음.코드 가독성이 좋아지고, 유지보수가 쉬워짐책임을 드러낼 수 있는 명확한 이름으로 클래스를 생성하는게 좋음낮은 결합도와 높은 ..

오늘은 최근 처음 경험한 GitHub Copilot에 대한 내용을 작성해보려고 합니다. 현재 약 2달 무료 사용이 가능하고, 그 이후에는 자동 결제되니 체험만 해보실 분은 참고 부탁드립니다.아래 내용의 경우 IntelliJ로 체험해 보았고, Android Studio도 사용 방법은 동일합니다. GitHub Copilot?디버깅 시간을 보다 효율적으로 도와주는 도구 중 하나가 바로 GitHub Copilot입니다.AI를 기반으로 작성한 주석, 코드 등을 분석하여 코드를 자동완성 시켜주는 도구입니다. 사용법1. IntelliJ에서 GitHub Copilot 플러그인 설치 2. 설치 완료 후 IDE 재실행 및 코파일럿 로그인 버튼 클릭 3. Device Code 확인 후 GitHub 연동 4. GitHub 페..

서론안드로이드에서 다이얼로그(Dialog)는 사용자와 상호작용할 수 있는 중요한 UI 구성 요소입니다. 다이얼로그를 구현하는 방법에는 여러 가지가 있지만, 그중 AppCompatDialog와 DialogFragment는 자주 사용되는 두 가지 방법입니다. 두 가지 다이얼로그 구현 방식의 차이점과 각각의 장단점을 정리해보려고 합니다.1. AppCompatDialog란?AppCompatDialog는 androidx.appcompat.app.AppCompatDialog 클래스를 상속받아 구현되는 다이얼로그입니다. 이는 기존의 Dialog 클래스를 확장하여, 더 향상된 테마와 기능을 제공하며, 특히 앱의 전체 테마가 AppCompat 라이브러리를 사용하는 경우 일관된 스타일을 유지할 수 있습니다. 특징스타일 ..
서론오늘 코딩 테스트 연습을 하던 중 반복문이 아닌 정규식을 사용할 때 효율이 더 좋은 경우가 있어서 정규 표현식에 대해 정리해보려고 한다. 정규 표현식정규 표현식 또는 정규식은 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어이다.정규 표현식(Regular Expression, 줄여서 Regex)은 문자열에서 특정 패턴을 찾거나, 추출하거나, 교체하는 데 사용되는 강력한 도구이다.kotlin에서는 정규 표현식을 쉽게 다룰 수 있는 다양한 기능을 제공한다. 정규 표현식 문법^ : 문자열의 시작을 의미$ : 문자열의 끝을 의미. : 문자 한 개를 의미. '.'이 위치한 곳에 어떤 문자든지 1개의 문자가 들어감[ ] : 대괄호에 있는 문자 중 한 개를 의미. [abc]는 a, b, c ..

서론okHttp는 Square에서 개발한 java 및 android 용 HTTP 클라이언트 라이브러리이다. 위 라이브러리를 활용하면 HTTP 통신을 쉽고 효율적으로 처리할 수 있다. API 통신 시 Retrofit2와 결합하여 자주 사용되는데 okHttp에 대한 내용을 간단하게 정리해보려 한다.주요 기능 비동기 요청 지원 : okHttp3는 비동기 요청을 지원하여 네트워크 통신 중 UI 스레드를 블로킹하지 않음커넥션 풀링(Connection Pooling): HTTP/1.1의 Keep-Alive 기능과 HTTP/2의 멀티 플렉싱을 통해 효율적인 커넥션 풀링을 지원한다. 이는 네트워크 사용을 최적화하고 성능을 향상함투명한 GZIP 압축: 응답 본문을 자동으로 GZIP 압축 해제하여 네트워크 트래픽을 줄인다..
gitignore에 대한 추가 설명은 이전 포스팅 참고 부탁드립니다.https://ystech.tistory.com/entry/Git-gitignore-commit-%EC%8B%9C-%ED%8C%8C%EC%9D%BC-%EA%B4%80%EB%A6%AC [Git] gitignore - commit 시 파일 관리서론 기존 프로젝트를 진행하면서, 작업 내용을 git에 commit 할 때 작업한 내용 외에 불필요한 .gradle, .idle 등의 파일들이 노출되는 것을 본 적이 있을 것이다. 이를 제어할 수 있는 gitignore에 관해ystech.tistory.com gitignore가 제대로 작동하지 않아서 기존에 ignore 처리 했던 파일이 커밋 변경 내역에 노출될 때가 있는데, git의 캐시 때문에 발생..
서론코딩 테스트에서 자주 활용되는 filter() 함수에 대해 정리해보려고 한다. 코테 문제 풀이 시 자주 사용되는 함수이니 알아두면 도움이 될 거라고 생각한다. filter() 함수?filter() 함수는 컬렉션(배열, 리스트) 등에서 조건을 만족하는 모든 요소들을 필터링하여 새로운 컬렉션을 반환하는 함수이다. 이 함수는 람다식을 인자로 받아 각 요소를 평가하고, 조건을 만족하는 요소들만을 포함하는 새로운 컬렉션을 생성한다. 보통, 주어진 조건을 만족하는 요소를 선택적으로 추출할 때 자주 사용된다. 예를 들면, 특정 조건을 만족하는 숫자, 문자열 또는 사용자 정의 객체를 선택하고자 할 때 사용할 수 있다. 특징사용 방법 : filter() 함수는 컬렉션에 대해 호출되며, 람다식을 인자로 받는다. 이 람..

서론 지난 포스팅에 Jetpack navigation에 대해 정리해 보았다. 오늘은 navigation 사용 시 데이터 전달에 활용되는 Safe Args에 대해 정리해보려 한다. 이전 포스팅은 아래 내용 참고해주세요🤗 https://ystech.tistory.com/entry/Android-Jetpack-Navigation%EC%97%90-%EB%8C%80%ED%95%B4 [Android] Jetpack Navigation에 대해 서론 Android에서 자주 사용되는 Jetpack Navigation에 대해 정리해보려 한다. 기존 화면 전환 시 intent, transaction을 사용하지만, 앱 구성이 복잡해질수록 코드도 복잡해질 수 있다. 화면 구성 및 UI 전환 ystech.tistory.com S..