본문 바로가기

안드로이드/Kotlin13

[Kotlin] 함수형 프로그래밍(Functional Programming), 람다(lambda) 프로그래밍 방식1. 명령형 프로그래밍(Imperative Programming, IP)프로그래밍의 상태와 상태를 변경하는 구문의 관점에서 연산을 설명하는 방식무엇(What)을 ‘어떻게(How)’ 할 것인지에 집중한다.1-1. 절차지향 프로그래밍(Procedural Programming, PP) : 문제를 순차적으로 처리하여 프로그램을 만드는 방식 (C, C++)절차지향 프로그래밍은 함수를 구조화할 뿐 데이터 자체를 구조화하지 못하기 때문에, 소프트웨어의 규모가 커지거나 변화가 생기면 각각의 함수에 의존하는 부분을 매번 고쳐야 하는 등 작업이 복잡해져 스파게티 코드를 유지보수하는 데 어려움을 겪는다.1-2. 객체지향 프로그래밍(Object-Oriented Programming, OOP) : 객체들 간의 상.. 2024. 12. 6.
[Kotlin] 데이터 클래스(Data Class) Java 에서 클래스는 Object Class 를 상속받고, Object Class 에 정의된 toString(), hashCode(), equals(other: Object) 메서드를 재정의 할 수 있다. Kotlin 에서도 Java 와 마찬가지로 Any Class 를 상속받으며 Any Class 에 정의된 toString(), hashCode, equals 를 재정의 할 수 있다.이 세가지 메서드를 재정의 하지 않으면 문제가 생기게 된다.equals() 메서드를 재정의 하지 않는 경우, 동등성 연산을 할 때 문제가 생기게 된다.hashCode() 메서드를 재정의 하지 않는 경우, hashMap 혹은 hashSet 과 같은 해시 기반 컬렉션 프레임워크를 사용할 때 문제가 생기게 된다.toString().. 2024. 12. 6.
[Java] 읽기 전용 컬렉션(List, Set, Map), ArrayList, LinkedList, Array List 인터페이스순서가 있는 데이터의 집합저장 순서가 유지되는 컬렉션을 구현하는 데 사용한다.같은 요소의 중복 저장을 허용한다.배열과 마찬가지로 index 로 요소를 접근하다.리스트는 데이터 양에 따라 동적으로 크기가 조정될 수 있는 가변적인 구조인 반면, 배열은 고정된 크기를 가진다.요소 사이에 빈공간을 허용하지 않아 삽입/삭제할 때마다 배열 이동이 일어난다. ArrayList 클래스배열을 이용하여 만든 리스트(배열 기반의 리스트 구현체)데이터가 메모리 상에서 연속적인 공간에 데이터를 저장되는 자료구조데이터의 저장순서가 유지되고 중복을 허용한다.데이터량에 따라 공간이 자동으로 늘어나거나 줄어든다.단방향 포인터 구조로 자료에 대한 순차적인 접근에 강점이 있어 조회가 빠르다.삽입/삭제가 느리다. 단, 순.. 2024. 12. 5.
[Kotlin] 변수 선언(val, var, const val) val (value 의 약자)변경 불가능한 참조를 저장하는 변수일단 초기화하고 나면 재대입이 불가능하다. 자바로 말하자면 final 변수에 해당한다. val 변수는 블록을 실행할 때 정확히 한 번만 초기화돼야 한다.하지만, 어떤 블록이 실행될 때 오직 한 초기화 문장만 실행됨을 컴파일러가 확인할 수 있다면 조건에 따라 val 값을 다른 여러 값으로 초기화할 수도 있다.val 참조 자체는 불변일지라도 그 참조가 가리키는 객체의 내부 값은 변경될 수 있다. var (variable 의 약자)변경 가능한 참조변수의 값이 바뀔 수 있다. 자바의 일반 변수에 해당한다. constjava 의 static final 특성읽기 전용 변수인 val 앞에 const 키워드를 붙여서 만든다.초기화 이후 내부의 값을 사용할 .. 2024. 12. 5.
[Kotlin] 자료형(기본형, 참조형), Call by Value, Call by Reference 자료형자바의 자료형은 크게 기본 자료형과 참조 자료형으로 나뉜다. 하지만 코틀린에서는 자바와 달리 null 값을 가질 수 있기 때문에 기본 자료형을 지원하지 않는다.코틀린은 기본 자료형을 지원하지 않고, 대신 *boxed type 을 사용하여 참조한다.boxed type : 기본 자료형을 객체로 다루기 위한 개념으로, 기본 자료형의 값을 갖는 객체를 의미한다.자료형키워드크기기본값(전역변수 한정)표현범위논리형Boolean1bitfalsetrue, false문자형Char2byte\u00000~65535 (유니코드)정수형Byte1byte0-128 ~ 127Short2byte0-32,768 ~ 32,767Int4byte0-2,147,483,648 ~ 2,147,483,647Long8byte0L-9,223,372.. 2024. 12. 5.
[Kotlin] 객체 지향 원칙(SRP, OCP, LSP, ISP, DIP) 객체지향 설계에서 지켜줘야 할 5개의 소프트웨어 개발 원칙(SRP, OCP, LSP, ISP, DIP)SOLID 객체 지향 원칙을 적용하면 코드를 확장하고 유지 보수 관리하기가 더 쉬워지며, 불필요한 복잡성을 제거해 리팩토링에 소요되는 시간을 줄임으로써 프로젝트 개발의 생산성을 높일 수 있다. 단일 책임 원칙 (SRP : Single Responsibility Principle)클래스(객체)는 단 하나의 책임만 가져야 한다는 원칙하나의 클래스는 하나의 기능을 담당하여 하나의 책임을 수행하는 데 집중되도록 클래스를 따로따로 여러 개 설계하라는 것책임의 범위는 딱 정해져있는 것이 아니고, 어떤 프로그램을 개발하느냐에 따라 개발자마다 생각 기준이 달라질 수 있다. BEFORE문제점 : 서버에 데이터를 보내는 .. 2024. 8. 5.