[OOP] SOLID
·
Java/OOP
좋은 객체 지향 설계를 위해서는 로버트 마틴의 SOLID를 꼭 학습해야 합니다. SOLID: 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리 SRP: 단일 책임 원칙 (single responsibility principle)OCP: 개방-폐쇄 원칙 (Open/closed principle)LSP: 리스코프 치환 원칙 (Liskov substitution principle)ISP: 인터페이스 분리 원칙 (Interface segregation principle)DIP: 의존관계 역전 원칙 (Dependency inversion principle) 1. SRP 단일 책임 원칙 정의한 클래스는 하나의 책임만 가져야 한다.하나의 책임이라는 것은 모호하다. (클 수 ..
[Java] Enum
·
Java
Enum은 서로 관련 있는 상수들의 집합이다. 열거형이라고도 불린다.특정 값만으로 한정된 변수를 사용하기 때문에 코드의 가독성과 안전성이 향상된다. 우선 Enum을 사용하게 된 계기와 Enum 사용 전 불편사항들과 불안전성에 대해 정리해 보자, Enum을 사용하기 전, 어떠한 비즈니스 로직이 회원의 등급에 따라 할인된 금액을 출력하는 로직을 설계해야 한다.등급은 총: Bronze, Silver, Gold 세 개가 존재하고 각 할인율은 (B:10%, S:20%, G: 30%)이다. package enum_practice;public class DiscountService { public static void main(String[] args) { UserGrade gradeServ..
[ETC] API, REST, REST API
·
Spring,SpringBoot
API, REST, REST API는 소프트웨어 개발, 특히 웹 애플리케이션 분야에서 매우 중요하다. API API(Application Programming Interface)응용프로그램에서 사용할 수 있도록 다른 응용 프로그램을 제어할 수 있게 만든 인터페이스이다.API를 사용하면 내부 구현 로직을 몰라도 정의된 기능을 쉽게 사용할 수 있다. API에 대해 쉽게 설명하자면 식당에 존재하는'메뉴판'이다.손님(클라이언트)은 주방(서버)이 어떻게 돌아가고 어떤 식으로 조리를 하는지 전혀 알 필요가 없다. 손님에게 필요한 것은 주문이다.주문을 위해서 메뉴판이라는 것이 존재해야 한다. 즉, API는 프로그램들이 서로 소통하는 방법을 정의한 약속이다. 복잡한 내부 동작을 감추고, 개발자가 제공하는 규칙에 따..
[Java] 래퍼 클래스
·
Java
Java에서는 기본형(Primary Type) 8개를 제외한 나머지는 모두 객체이다. 기본형 8가지정수형: byte, short, int, long실수형: float, double문자형: char논리형: boolean 기본형은 장점과 단점이 존재한다. 장점 1. 빠른 성능과 편리함, 메모리 사용량 적음기본형의 값은 스택에 저장된다. 덕분에 접근 속도가 빠르다.객체보다 메모리 사용량이 적다. 단점 1. 객체지향적이지 않다.Java는 객체지향 언어이다. 하지만 기본형을 사용하면 다양한 메서드들을 이용할 수 없다.컬랙션 프레임 워크(ArrayList, LinkedList)에 직접 이용이 불가하다. 2. null사용이 불가하다.기본형은 반드시 값이 존재한다.값이 없는 상황에 유연하지 못하다. 기본형의..
[DB] Programmers 경기도에 위치한 식품창고 목록 출력하기
·
데이터베이스
테이블: FOOD_WATEHOUSE문제: 경기도에 위치한 창고의 ID, 이름, 주소, 냉동시설 여부를 조회하는 SQL문을 작성 이때, 냉동시설 여부가 NULL인 경우 'N'으로 출력시킨다. 사용 DBMS MYSQLSELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, CASE WHEN FREEZER_YN IS NULL THEN 'N' ELSE FREEZER_YN ENDFROM FOOD_WAREHOUSEWHERE WAREHOUSE_NAME LIKE '%경기%'; IFNULL 함수를 이용한 좀 더 간결한 쿼리SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS..
[SpringBoot] Lombok 설치
·
Spring,SpringBoot
롬복 라이브러리를 통해 자바 클래스에 애너테이션을 사용해 자주 쓰는 Getter, Setter, 생성자 등을 자동으로 만들어주는 도구이다. Lombok의 장점1. 코드 간단화, 생산성 향상Getter, Setter, 생성자와 같은 반복적인 코드를 애너테이션 하나로 해결해준다. 2. 가독성 및 유지보수 용이핵심 로직과 무관한 코드를 줄여 클래스의 역할과 필드만 한눈에 파악하기 쉬워진다. 3. 다양한 편의 기능또 다른 기능들도 존재한다. Lombok의 단점1. 코드 가시성 저하IDE가 지원하지 않으면 Lombok 생성하는 코드를 직접 볼 수 없다.코드의 동작을 파악하기 위해 Lombok 애너테이션에 대한 이해가 필요하다. 2. 무분별한 사용 위험캡슐화 원칙을 해칠 수 있다. 3. 버전 호환성 문제버전 관..
[Java] String, StringBuilder, 메서드 체이닝
·
Java
Stringjava에서 String을 만드는 방법에 대해 살펴보자. package stringBuilder;public class StringEx1 { public static void main(String[] args) { String str1 = "스트링1"; //스트링 생성 1 String str2 = new String("스트링2"); System.out.println("str1 = " + str1); System.out.println("str2 = " + str2); }} new String(); 으로 스트링을 생성한 것을 보면 String은 클래스라는 것을 확인할 수 있다. 그러면 str1은 객체가 아닐까? str1의 생성과..