Language 40

[Java] 변수 (Variable) 하나의 값을 저장할 수 있는 메모리 공간입니다. 여기서 메모리 공간은 RAM을 의미합니다. 메모리 공간을 1Byte 단위로 나누고 0부터 연속적인 번호를 부여하였는데 이것을 메모리 주소라고 합니다. 원래 메모리의 값을 저장하거나 읽을 때 메모리 주소를 이용해야하지만 이 메모리 주소는 숫자로 구성되어 사람이 기억하기 불편합니다. 그래서 특정 메모리 영역에 이름을 부여하고 주소대신 이름을 이용하여 메모리의 값을 저장하거나 읽을 수 있게 해주는게 변수입니다. 변수는 단 하나의 값만 저장할 수 있기때문에 변수에 새로운 값을 저장하게 되면 기존에 있던 값은 사라지고 새로 저장한 값만 남게 됩니다. 변수를 선언하는 것은 값을 저장할 공간을 마련하는 것 입니다. 변수의 선언하는 방법은 변수 타입과 변수 이름으로 선언.. Language/Java 2021. 10. 16.
[Java] SOLID 목적 변경에 유연합니다. 이해하기 쉽습니다. 많은 소프트웨어 시스템에 사용될 수 있는 컴포넌트의 기반이 됩니다. SRP (Single Responsibility Principle) : 단일 책임 원칙 클래스는 단 한 개의 책임을 가져야 한다는 원칙으로 클래스가 변경되는 이유는 단 한 개여야 한다는 의미입니다. 응집도는 높고 결합도는 낮은 프로그램을 뜻합니다. 설계를 잘한 프로그램은 새로운 요구사항과 프로그램 변경에 영향을 받는 부분이 적습니다. 변경의 이유가 단 하나여야만 한다라는 것은 하나의 모듈은 오직 하나의 액터만 책임져야 한다는 뜻입니다. 그렇다면 '책임'은 무엇일까요? 해당 클래스에 어떤 '액터'들이 의존하게 되는지를 생각해봐야 올바르게 준수 할 수 있습니다. 여기서 '액터'란 시스템이 동일한 .. Language/Java 2021. 9. 29.
[Java] 객체 지향 언어 객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그래밍의 패러다임 중 하나로 객체의 관점으로 프로그램을 설계하는 방법입니다. 작은 문제들을 해결할 수 있는 객체들을 만든 뒤, 이 객체들을 조합해서 큰 문제를 해결하는 상향식(Bottom-Up) 해결법을 도입했습니다. 이 객체란 것을 일단 한번 독립성/신뢰성이 높게 만들어 놓기만 하면 그 이후에 그 객체를 수정 없이 재사용할 수 있으므로 개발 기간과 비용이 대폭 줄어들게 됩니다. 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소포트웨어 개발에 많이 사용됩니다. 또한 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 직관적인 코드 분석을 가능하게 하는 장점을 갖.. Language/Java 2021. 9. 29.
[Kotlin In Action] 코틀린이란? Android와 Web Application Server 개발에서 Java를 대체할 목적으로 IDE 전문 개발사인 JetBrains에서 만든 언어입니다. Java를 대체하기 위한 목적으로 개발된 언어로 언어적으로는 최신의 패러다임을 적용하여 Java의 약점을 보완하여 Java에서 사용하는 JVM에서는 호환될 수 있게 만들어졌습니다. 특징 자바와 마찬가지로 정적 타입 지정 언어입니다. 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필드나 메소드를 사용할 때마다 컴파일러가 타입을 검증해준다는 뜻입니다. 코틀린에서는 모든 변수의 타입을 프로그래머가 직접 명시할 필요가 없습니다. 대부분의 경우 코틀린 컴파일러가 문맥으로부터 변수 타입을 자동으로 유추할 수 있기 때문에 프로그래머는 타입 선언을 생략해도 됩니다.. Language/Kotlin In Action 2021. 9. 29.
[Kotlin In Action] open, final, abstract 변경자 자바에서는 final로 명시적으로 상속을 금지하지 않는 모든 클래스를 다른 클래스가 상속할 수 있습니다. 기본적으로 상속이 가능하면 편리한 경우도 많지만 문제가 생기는 경우도 많습니다. 취약한 기반 클래스 문제는 하위 클래스가 기반 클래스에 대해 가졌던 가정이 기반 클래스를 변경함으로써 깨져버린 경우에 발생합니다. 어떤 클래스가 자신을 상속하는 방법에 대해 정확한 규칙(어떤 메소드를 어떻게 오버라이드해야 하는지 등)을 제공하지 않는다면 그 클래스의 클라이언트는 기반 클래스를 작성한 사람의 의도와 다른 방식으로 메소드를 오버라이드할 위험이 있습니다. 모든 하위 클래스를 분석하는 것은 불가능하므로 기반 클래스를 변경하는 경우 하위 클래스의 동작이 예기치 않게 바뀔 수도 있다는면에서 기반 클래스는 취약합니다... Language/Kotlin In Action 2021. 4. 22.
[Kotlin In Action] 인터페이스 코틀린의 인터페이스는 자바8 인터페이스와 비슷합니다. 코틀린 인터페이스 안에는 추상 메소드뿐 아니라 구현이 있는 메소드도 정의할 수 있습니다. 자바 8의 디폴트 메소드와 비슷합니다. 다만 인터페이스에는 아무런 상태도 들어갈 수 없습니다. 자바에서는 extends와 implements 키워드를 사용하지만, 코틀린에서는 클래스 이름 뒤에 콜론(:)을 붙이고 인터페이스와 클래스 이름을 적는 것으로 클래스 확장과 인터페이스 구현을 모두 처리합니다. 자바와 마찬가지로 클래스는 인터페이스를 원하는 만큼 개수 제한 없이 마음대로 구현할 수 있지만,클래스는 오직 하나만 확장할 수 있습니다. class 클래스이름 : 클래스A, 인터페이스A, 인터페이스B { ... } 자바의 @Override 애노테이션과 비슷한 over.. Language/Kotlin In Action 2021. 4. 22.
[Kotlin In Action] 가변 인자 가변 길이 인자는 메소드를 호출할 때 원하는 개수만큼 값을 인자로 넘기면 자바 컴파일러가 배열에 그 값들을 넣어주는 기능입니다. 코틀린의 가변 길이 인자도 자바와 비슷합니다. 다만 문법이 조금 다릅다. 타입 뒤에 . . .를 붙이는 대신 코틀린에서는 파라미터 앞에 vararg 변경자를 붙입니다. //mutableListof() //val list = mutableListOf() public inline fun mutableListOf(): MutableList = ArrayList() //mutableListOf(1,2,3,4,5,6,7,8,9,10) //val list = mutableListOf(1,2,3,4,5,6,7,8,9,10) public fun mutableListOf(vararg eleme.. Language/Kotlin In Action 2021. 4. 22.
[Java] 제네릭 (Generic) 프로그램에서 변수를 선언할 때 모든 변수는 자료형이 있습니다. 메서드에서 매개변수를 사용할 때도 자료형을 가지고 있습니다. 대부분은 하나의 자료형으로 구현하지만, 변수나 메서드의 자료형을 필요에 따라 여러 자료형으로 바꿀 수 있다면 프로그램이 훨씬 유연할 것입니다. 이러한 하나의 참조가 아닌 여러 참조 자료형을 사용할 수 있도록하는 것이 제네릭입니다. 제네릭을 사용하는 이점 제네릭은 컴파일 타임에 유효성을 검사하기 때문에 안정성이 높습니다. 런타임이 아닌 컴파일 타임에 체크하기 때문에 프로그램 동작에 영향을 주지 않습니다. 타입변환에 관한 코드를 제거할 수 있습니다. Generic 대신 Object로 코드를 작성하게 된다면, 형 변환에 대한 비용이 발생하게 됩니다. 제네릭 클래스를 사용하면 컴파일러는 일.. Language/Java 2021. 4. 21.
[Kotlin In Action] 확장함수 확장 함수는 어떤 클래스의 멤버 메소드인 것처 럼 호출할 수 있지만 그 클래스의 밖에 선언된 함수입니다. 확장 함수를 만들려면 추가하려는 함수 이름 앞에 그 함수가 확장할 클래스의 이름을 덧붙이기만 하면 됩니다. 이때 클래스의 이름을 수신 객체 타입이라고 부르며, 확장함수가 호출되는 대상이 되는 값을 수신 객체라고 합니다. 수신 객체 타입은 확장이 정의될 클래스의 타입이며. 수신 객체는 그 클래스에 속한 인스턴스 객체입니다. //CommonResponse : 수신 객체 타입 //this : 수신 객체 fun CommonResponse.isSuccess(): Boolean { return this.data == "success" } 심지어 자바나 코틀린 등의 언어 중 어떤 것으로 작성됐는가는 중요하지 않습.. Language/Kotlin In Action 2021. 4. 21.
[Kotlin In Action] 문자열 템플릿 문자열 템플릿은 자바의 문자열 접합 연산("Hello, ”+name+"!”)과 동일한 기능 을 하지만 좀 더 간결하며,자바 문자열 접합 연산을 사용한 식과 마찬가지로 효율적입니다. 컴파일러는 각 식을 정적으로 컴파일 시점에 검사하기 때문에 존재하지 않는 변수를 문자열 템플릿 안에서 사용하면 컴파일 오류가 발생합니다. 문자열 템플릿 안에 사용할 수 있는 대상은 간단한 변수 이름만으로 한정되지 않습니다. 복잡한 식도 { }로 둘러싸서 문자열 템플릿 안에 넣을 수 있습니다. 문자열 템플릿 안에 $로 변수를 지정할 때 변수명 바로 뒤에 한글을 붙여서 사용하면 코틀린 컴파일러는 영문자와 한글을 한꺼번에 식별자로 인식해서 unresolved reference 오류를 발생시킵니다. 이 문제를 해결하는 방법은 변수 이.. Language/Kotlin In Action 2021. 4. 13.