JAVA/Language(50)
-
모던 자바 인 액션: 함수형 프로그래밍 기법
이 글은 모던 자바 인 액션 도서의 내용을 개인적으로 정리한 글입니다. 틀린 내용이 있을 수 있습니다.1. 함수는 모든 곳에 존재한다자바 8 이후부터 일급 함수를 지원합니다. 일급 함수란 함수를 일종의 값으로 취급하여 메서드 인수로 전달하거나 반환값으로 전달하는 함수를 의미합니다. 자바 8에서는 메서드 참조 또는 람다 표현식을 사용하여 함숫값을 메서드의 인수로 전달하거나 반환값으로 전달할 수 있습니다. 예를 들어 다음과 같이 메서드 참조를 이용하여 변수에 함숫값을 저장할 수 있습니다.Function strToInt = Integer::parseInt; 1.1 고차원 함수고차원 함수는 여러 함수들의 순차적인 동작을 하나의 함수로 묶어서 새로운 함수로 표현하는 함수입니다. 고차원 함수를 사용하는 대표적인 사..
2024.07.17 -
모던 자바 인 액션: 함수형 관점으로 생각하기
다음 글은 모던 자바 인 액션 도서의 18장 함수형 관점으로 생각하기 장의 내용을 정리한 글입니다. 틀린 내용이 있을 수 있습니다. 1. 시스템 구현과 유지보수1.1 공유된 가변 데이터어떤 변수에 저장된 데이터 값이 예상치 못하게 변경되는 경우가 있습니다. 변경되는 이유는 다양하지만 대표적으로 여러 메서드에서 해당 변수에 접근하여 값을 변경하는 사례가 존재합니다. 이는 해당 변수가 가변적인 데이터 구조를 가지기 때문입니다. 예를 들어 다음 그림과 같이 어떤 하나의 리스트가 있고 클래스 A,B,C에서 읽고 쓰고하여 리스트를 동시적으로 갱신할 수 있습니다. 위와 같이 동시적으로 리스트의 값을 갱신하면 예상치 못한 값이 추가되거나 제거될 수 있습니다. 이러한 문제를 해결하기 위해서 대표적으로 2가지 방법이 ..
2024.07.15 -
다형성(Polymorphism)
다형성이란 무엇인가? 다형성은 역할과 구현이라는 개념을 분리한 기술이라고 생각합니다. 역할은 어떤 기능들을 수행할 수 있는 모음이고 실체가 존재하지 않는 개념입니다. 구현은 역할안에 있는 기능들을 실제로 수행하는 대상이라고 표현할 수 있습니다. 구현은 역할과는 다르게 실체를 가지고 있는 대상입니다. 즉, 정리하면 다음과 같습니다. 다형성 : 역하과 구현 개념을 분리한 기술 역할 : 어떤 기능들을 수행할 수 있는 모음 구현 : 역할안에 있는 기능들을 실제로 수행하는 대상 다형성 비유 다형성을 비유하면 자동차로 비유할 수 있습니다. 운전자가 자동차를 운전할 때 소나타를 운전하다가 아반떼로 바꾸어 운전해도 큰 어려움이 없습니다. 왜냐하면 자동차의 기능인 엑셀, 브레이크와 같은 표준 기능들이 소나타나 아반떼가 ..
2023.04.23 -
객체지향 언어 특징 (캡슐화, 상속, 추상화, 다형성)
목차 OOP 특징 캡슐화(Encapsulation) 상속(Inheritance) 추상화(Abstraction) 다형성(Polymorphism) OOP(Object-Oriented-Programming) 특징 캡슐화(Encapsulation) 상속(Inheritance) 추상화(Abstraction) 다형성(Polymorphism) 캡슐화(Encapsulation) 캡슐화는 외부의 접근으로부터 클래스의 자세한 정보인 필드 멤버와 메소드를 숨기는 방법입니다. 그리고 캡슐화가 적용된 클래스는 오직 public 인터페이스를 통하여 인터페이스의 메소드(메시지)를 노출합니다. 상속(Inheritance) 상속은 한 클래스가 또 다른 클래스의 필드 멤버와 메소드 기능들을 사용할 수 있도록 하는 것입니다. 자바에서 상..
2023.03.29 -
Mokito 모듈을 이용한 Random 객체 통제하기
개요 코드스쿼드 부트캠프를 하면서 사다리 게임을 구현하던 도중 Random 객체를 사용할 일이 있었습니다. 그리고 단위 테스트에서 Random 객체를 사용할 수 밖에 없었고 Random 객체의 nextBoolean() 메서드 실행시 제가 원하는 값과 순서로 반환되기를 원하였습니다. 이 글에서는 Mokito 모듈을 이용하여 Random 객체의 nextBoolean() 메서드 호출시 어떻게 하면 원하는 값(true 또는 false)을 반환하게 하고 어떤 순서로 설정할 수 있는지 알아봅니다. Random 객체를 다루면서 했던 실수 저는 보통 Random 객체를 생성할때 외부에서 생성자로 주입받는 방식이 아닌 생성자 내부에서 필드 멤버인 Random 멤버에 객체를 생성하는 방식으로 생성하였습니다. class P..
2023.03.10 -
[Java][Optional] Optional의 위험 및 사용 가이드
1. Optional 클래스가 위험한 이유 NullPointerException 대신 NoSuchElementException이 발생 할 수 있음 이전에는 없었던 문제가 발생할 수 있음 코드의 가독성 저하 시간적, 공간적 비용 증가 1.1 NullPointerException 대신 NoSuchElementException이 발생할 수 있음 @Test(expected = NoSuchElementException.class) public void testNoSuchElementException(){ //given Optional optional = Optional.ofNullable(null); //when String actual = optional.get(); //then fail("NoSuchEleme..
2022.11.28