본문 바로가기

분류 전체보기

(126)
[Java] Functional Interface 2021-03-06글 함수형 인터페이스 자바 8부터 자바는 객체지향 언어일 뿐만 아니라 함수형 언어도 지원할 수 있게되었다. 자바에서는 숫자, 문자 같은 원시 타입, 클래스를 통해 정의하는 참조 타입 객체들이 일급 객체가 될 수 있지만, (함수형 인터페이스가 등장하기 전까지는) 함수에 해당하는 메서드는 일급 객체가 아니었다. 덕분에 오늘 뜯어 볼 Functional Interface의 등장으로, 객체 안에만 존재했던 함수(메서드)를 일급 객체로 다룰 수 있게되었다. 🤔 일급 객체...? 어떤 개체가 다음 3가지 조건을 만족하는 경우, 이를 일급 객체라고 말한다. 파라미터로 전달할 수 있다. 반환값으로 사용할 수 있다. 변수나 데이터 구조 안에 담을 수 있다. 할당에 사용된 이름과 관계없이 고유한 구별이 ..
[Java] 추상 클래스와 인터페이스의 차이 2021-03-05글 추상 클래스 간단히 말하면... 클래스를 설계도라 하면, 추상 클래스는 미완성 설계도에 비유할 수 있다. (여기서 클래스가 미완성이라는 것은 추상 메서드를 포함하고 있다는 의미이다.) 예를 들면, 같은 크기의TV라도 기능의 차이에 따라 여러 종류의 모델이 있지만 설계도 90은 동일할테니, 어느정도 틀을 갖춘 상태에서 진행하는 것이 좋다. 이때 사용할 수 있는 것이 추상 클래스이다. 추상 메서드 ? 선언부만 작성하고 구현부는 작성하지 않은 채로 남겨 둔 것이 추상메서드이다. 추상 메서드는 상속받는 클래스에 따라 달라질 수 있다. 추상 클래스 규칙 추상 클래스는 키워드 abstract를 붙여 표현한다. 추상 메서드를 포함하지 않은 클래스에서도 abstract를 붙여서 추상 클래스로 지정..
[Java] 상속에 대하여 2021-03-04글 강의시간에 배운 상속 개념에 추가로 공부한 내용을 정리해본다 ✍️ 상속 먼저 상속이란 ? 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 예제를 보명서 상속의 필요성을 파악해보자 ! Example 카페에서 커피와 차를 판매한다. 커피와 차를 준비하는 과정을 살펴보자. 커피 물을 끓인다. 커피머신으로 커피를 내린다. 컵에 붓는다. 설탕과 우유를 추가한다.차 물을 끓인다. 차 티백을 담근다. 컵에 붓는다. 레몬을 추가한다. 그렇다면 각각의 과정들을 코드로 구현해본다. public class Coffee { void prepareRecipe() { boilWater(); brewCoffeeMachine(); pourInCup(); addSugarAndMilk(); } publ..
[코드 리뷰 정리] Level1. 로또 2021-03-01글 1단계 피드백 객체인 Controller LottoFactory를 인스턴스 변수로 두지 않았던 이유는 Controller는 객체가 아니라 데이터를 가지면 안된다고 생각하고 있었다. 당연히 Domain만 객체라고 생각했었다. (모르는건 부끄러운게 아니다 🥲) 하지만 생각해보니 Controller도 도메인과 뷰를 이어주는 동시에, 객체를 생성하는 책임이 있다. 인스턴스 변수로 가지고 있게 된다면 getLottoTickets 메소드에서 매번 객체를 생성할 필요가 없다. 일단 이 코드에서 중요한 점은 어차피 지금 로또를 생성하는 책임을 컨트롤러에서 하고 있었으니 "불필요한 객체 생성을 방지하도록 인스턴스 변수로만들어서 재활용하자"가 목적이다. 반영한 커밋 반복되는 상수 처리 미션 데드라인을..
[Java] BigDecimal에 관한 고찰 🕵️‍♀️ 2021-03-01글 이번 미션에서 BigDecimal에 대한 언급이 많았는데, 도대체 그게 뭐지 🤷‍♀️ 나만 몰라 ❓ 에서부터 출발한 BigDecimal에 대한 고찰 ~ 이번주 회고에서 앞으로 포스팅을 내가 이해한 글을 설명하듯이 ! 작성하기로 다짐한 내용을 최대한 반영하려고 노력중 ✍️ 누군가 이 글을 읽고 있다면 아 얘가 이런짓을 하고 있구나 가볍게 봐주길 ㅎㅎ 🙈 BigDecimal을 왜 쓰지 ? Test 과연 위 테스트 케이스는 통과를 할까? 정답은 👀 허허 어이없게도 실패합니다. 왜 실패하냐구요 ? 자바는 IEEE 754 부동 소수점 방식을 사용해서, 정확한 실수를 저장하지 않고 최대한 완벽에 가깝기를 바라는 근사치 값을 저장하기 때문이다 ! 지금은 단순히 개발자 하나가 테스트를 위해 작성한..
[Java] Stream 부수기 2021-02-25 글 코드를 짜다보면 가독성과 간결함을 위해 stream을 자주 쓰게 된다. 프리코스 때 Stream에 대해 정리했었으나, 내가 쓴 글을 리팩토링(ㅎ) 해보면서 다시 개념을 익혀야 겠다. 스트림? 배열 또는 컬렉션 인스턴스에 저장된 데이터를 꺼내서 파이프에 흘려보낸다. 중간 연산 : 마지막이 아닌 위치에서 진행이 되어야 하는 연산 최종 연산 : 마지막에 진행이 되어야 하는 연산 스트림은 중간 연산과 최종 연산을 진행하기 좋은 구조로 배치된 복사본이라 할 수 있다. 스트림의 특성 가독성과 간결함 컬렉션이나 배열에 데이터를 담고 원하는 결과를 얻기 위해 for문과 Iterator를 이용해 작성한 코드는 가독성이 떨어지고 재사용성도 떨어진다. 데이터 소스 추상화 어떤 메소드로 처리하기 위해 ..
📖 Exception에 대하여 2021-02-24 글 오늘 수업 시간에 자바의 Exception에 대해 배웠다. 수업을 듣고 들은 내용을 자바의 정석의 예외 처리를 함께 보면서 정리 ✍️ 프로그램 오류 종류 컴파일 에러 - 컴파일 시에 발생하는 에러 런타임 에러 - 실행 시에 발생하는 에러 논리적 에러 - 실행은 되지만, 의도와 다르게 동작하는 것 프로그램에서 실행 도중 발생할 수 있는 모든 경우의 수를 고려해 이에 대한 적절한 대비가 필요하다! Error와 Exception의 차이? Error 애플리케이션이 정상적으로 동작하는데 심각한 문제가 있는 경우 사용한다. ex) 메모리 부족이나 스택오버플로우 등 개발자가 Error를 사용하는 일은 거의 없다고 한다. Exception 비즈니스 로직 상에서 에러가 발생하는 경우 사용한다. 발..
📖 Enum 열거형 2021-02-21 열거형이란? JDK 1.5 부터 새로 추가된 개념이다. 기존의 언어들과 자바의 Enum이 다른 점은 열거형이 갖는 값 뿐만 아니라 타입까지 관리하기 때문에 보다 논리적인 오류를 줄일 수 있다. '타입에 안전한 열거형'을 제공하여 실제 값이 같아도 타입이 다르면 조건식 결과가 false이다. 값 뿐만 아니라 타입까지 체크한다. 상수 값이 바뀌어도 기존 소스를 다시 컴파일하지 않아도 된다. 열거형의 정의와 사용 enum 열거형이름 {상수명1, 상수명2, ...} 열거형에 정의된 상수를 사요아는 방법은 열거형이름.상수명이다. 클래스의 static 변수를 참조하는 것과 동일하다. 열거형 상수간 비교 == 연산자를 사용하여 비교할 수 있다. equals()가 아닌 ==으로 비교가 가능하다는 것..