전체 글 135 정적 타입 지정 vs 동적 타입 지정 정적 타입 지정 언어 정적 타입 지정 언어는 C, C#, C++, Java, Kotlin 등의 언어가 있습니다. 정적 타입 지정 언어는 변수에 들어갈 값에 따라 미리 자료형을 지정해주어야 합니다. 정적 타입 지정 언어는 모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고 프로그램 안에서 필드나 메소드를 사용할 때마다 컴파일러가 타입을 검증해줍니다. 런타임에서 어떤 메소드를 호출할 지 알아내는 과정이 생략되어 메소드 호출이 더 빠릅니다. 컴파일러가 프로그램의 정확성을 검증하기 때문에 실행 시 프로그램이 오류로 중단될 가능성이 낮아집니다. 코드에서 다루는 객체가 어떤 타입에 속하는지 알 수 있기 때문에 파악하기가 쉽습니다. 동적 타입 지정 언어 동적 타입 지정 언어는 JavaScript, Groov.. Computer Science/Programming 2021. 3. 29. 의존성 (Dependency) 의존성에는 크게 Class 사이 의존성과 Package 사이 의존성으로 나눌 수 있다. Class 사이 의존성 1. 연관관계 (Assosication) 아래와 같이 A 클래스가 B라는 클래스를 객체 참조하는 경우를 말한다. 연관관계는 A 클래스에서 B 클래스로 갈 수 있는 영구적인 경로가 있다고 볼 수 있다. class A { private val b:B = B() } 2. 의존관계 (Dependency) A클래스의 파라미터나 리턴타입에 B 클래스 타입이 나오거나, 메소드에서 B 클래스 타입의 인스턴스를 생성하는 경우이다. 의존관계는 협력하는 B 클래스와 일시적인 관계를 맺는 경우이다. class A { fun b(): B { return B() } } 3. 상속관계 (Inharitance) B 클래스의.. Computer Science/Programming 2021. 3. 29. [Java] 다형성 다형성이란 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미합니다. 예를 들어 키보드라는 클래스에 누른다라는 동작이 있습니다. 그렇다면 ENTER를 누르는 것과 ESC, SPACE를 누르는 것은 서로 다른 동작을 하게 됩니다. 이러한 동작을 다형성이라고 합니다. 다형성에 대해 가장 많이 언급되는 것이 상속과 Overriding, OverLoading입니다. OverLoading에 대해서는 의견이 분분하다고 많은 책들에서 언급되지만 예시에 포함하도록 하겠습니다. Overloading 같은 이름을 가지지만 매개변수의 개수 또는 타입에 따라 서로 다른 동작 방법을 하는 것을 오버로딩이라고 합니다. public class Printer { public void print(int nu.. Language/Java 2021. 1. 1. [Java] 실행 데이터 영역 (Runtime Data Area) 자바 실행 데이터 영역 (Runtime Data Area) Runtime Data Area는 JVM 이 프로그램을 수행하기 위해 할당 받는 메모리 영역이라고 할 수 있습니다. 실제 성능 문제에 직면했을 때, 대부분의 문제점은 Runtime Data Area에서 발생 하는 경우가 많습니다. Memory Leak 이나 Garbage Collection 인 경우를 그 예로 볼 수 있습니다 . 이러한 문제가 발생할 때, 이 문제가 왜 발생한 것인지 어디에서 발생한 것인지 확인하는 것은 쉽지 않습니다. 이 경우 Runtime Data Area 아키텍처를 이해한다면 해당 문제를 분석하는데 도움이 될 것입니다. Runtime Data Area는 크게 다섯 가지 영역으로 나뉘게 됩니다 . 그것은 PC Register,.. Language/Java 2020. 12. 27. [Java] 자바 클래스 로더 자바 클래스 로더 자바 프로그램은 한 개 혹은 그 이상의 클래스들의 조합으로 실행됩니다. 그리고 실행 시 모든 클래스 파일이 한 번에 로딩되지 않고 요청되는 순간 로딩됩니다. 자바의 클래스 로더는 자바의 큰 장점 중 하나로 컴파일타임이 아닌 런타임에 Class를 로딩할 수 있게해주는 기술입니다. 바이트 코드를 읽어 들여 class 객체를 생성하는 역할을 담당합니다. 즉, 클래스 로더는 클래스가 요청될 때 파일로부터 읽어 메모리로 로딩하는 역할을 하며 자바 가상 머신의 중요한 요소 중 하나입니다. 자바 런타임 환경(JRE)의 일부입니다. 클래스 로더는 Loading, Linking, Intialize의 순서로 진행됩니다. 로딩( Loading ) 클래스 로더가 .class 파일을 읽고 그 내용에 따라 적절.. Language/Java 2020. 12. 26. [Java] 자바란? ( Java ) 자바란? ( Java ) 운영체제에 독립적 Java로 작성된 애플리케이션은 JVM이라는 가상의 기계에서 동작하기 때문에, Java는 운영체제와 하드웨어에 독립적입니다. 따라서 한번 작성하면 어디에서나 실행이 가능합니다. Write Once, Run anyWhere 하지만 Java 애플리케이션이 동작하는 JVM은 각 OS마다 다른 JVM이 존재하기 때문에 운영체제에 종속적입니다. JVM을 한단계 더 거치고, 하드웨어에 맞게 컴파일 된 상태가 아니기 때문에 해석(Interpret) 과정을 거치기 때문에 속도가 느리다는 단점이 있습니다. 하지만 JIT 컴파일러와 향상된 기술로 속도의 격차가 많이 줄어들었습니다. 객체지향 Java는 상속, 추상화, 다형성, 캡슐화의 특징을 가진 객체 지향 언어( Object-O.. Language/Java 2020. 12. 25. [Android] MVC vs. MVP vs. MVVM MVC (Model,View,Controller) MVC 패턴은 Controller가 사용자로부터 Action을 받아, Model에게 전달하고 모델이 해당 Action에 대한 처리를 마친 뒤에 View적용하는 방식입니다. Model과 View 사이의 의존성이 높고, Controller가 안드로이드 API에 깊게 종속되므로 유닛 테스트가 어렵다는 단점이 있습니다. 모델(Model) 앱의 두뇌 역할을 합니다. 데이터, 상태, 비즈니스 로직을 처리합니다. 뷰나 컨트롤러에 묶이지 않습니다. 뷰(View) 모델의 표현 입니다. UI를 그리고 사용자가 앱과 상호작용할 때 컨트롤러와 통신하는 책임을 맡습니다. 뷰는 하위 모델에 대한 지식이나 상태에 대한 이해가 없고, 사용자가 버튼을 클릭하거나 값을 입력하는 등의 행.. Domain/Android 2020. 9. 21. [Android] DataBinding 레이아웃의 UI 구성요소를 앱의 데이터 소스와 결합할 수 있는 지원 라이브러리입니다. 레이아웃 파일에서 구성요소를 결합하면 활동에서 많은 UI 프레임워크 호출을 삭제할 수 있어 파일이 더욱 단순화되고 유지관리 또한 쉬워집니다. 앱 성능이 향상되며 메모리 누수 및 null 포인터 예외를 방지할 수 있습니다. 데이터 변경을 쉽게 식별하기 위한 클래스 및 메서드를 제공합니다. 기본 데이터 소스가 변경될 때 UI 새로고침에 관해 신경쓰지 않아도 됩니다. 변수 또는 속성을 식별 가능하게 만들 수 있습니다. 라이브러리를 통해 객체, 필드 또는 컬렉션을 식별 가능하게 만들 수 있습니다. 레이아웃의 변수 및 뷰에 액세스하는 데 사용되는 결합 클래스를 생성합니다. 이 페이지는 생성된 결합 클래스를 사용하고 맞춤설정하는 .. Domain/Android 2020. 9. 21. [Kotlin] 일급함수(First-class citizen) 코틀린의 함수는 일급함수입니다. 일급함수는 아래와 같은 조건을 만족하는 것을 말합니다. 변수나 데이터를 할당 할 수 있어야 한다. (variable) 객체의 인자로 넘길 수 있어야 한다. (parameter) 객체의 리턴값으로 리턴 할 수 있어야 한다. (return value) 변수나 데이터를 할당 할 수 있어야 한다. val test: () -> String = { "function" } 객체의 인자로 넘길 수 있어야 한다. val test: () -> String = { "function" } fun func(f: () -> String): Unit { println("$f") } 객체의 리턴값으로 리턴 할 수 있어야 한다. fun func(): () -> Unit { return { println.. Language/Kotlin 2020. 9. 16. [Android] Context란? Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc. 애플리케이션 환경에 대한 글로벌 정보에 대한 인터페이스입니다. 이것은 Android 시스템에서 구현하는 추상 클.. Domain/Android 2020. 9. 8. 이전 1 ··· 10 11 12 13 14 다음