성실한 사람이 되자

성실하게 글쓰자

This is spear

객체 지향의 사실과 오해 - 역할, 책임, 협력

객체 지향의 사실과 오해를 읽고 정리한 글 섹션 - 04. 역할, 책임, 협력 객체의 모양을 빚는 것은 객체가 참여하는 협력이다. 어떤 협력에 참여하는지가 객체에 필요한 행동을 결정하고, 필요한 행동이 객체의 상태를 결정한다. 개별적인 객체의 행동이나 상태가 아닌 객체들 간의 협력에 집중해야 한다. 내용 객체지향의 설계의 품질을 결정하는 개념 - 역할, 책임, 협력 협력 협력은 요청과 응답이다. 요청과 응답을 통해 협력관계가 형성이 된다. 다양한 객체는 동일한 목적을 달성하기 위해 협력한다. 그리고 요청과 응답은 협력에 참여하는 객체가 수행할 책임을 정의한다. 책임 객체는 적절한 행동을 할 의무가 있으면 책임을 가진다고 말한다. 즉, 협력관계에 있는 객체는 어떤 요청에 적절히 응답해야 하는 책임을 가진다..

spring - JDBC을 사용한 데이터 저장과 출력, 그리고 auto increment 키 값 가져오기

요즘 객체 지향 설계를 위해 JPA를 공부하고 있어서 서버에서 데이터베이스에 입출력할 수 있는 라이브러리에 관심이 많아졌다. 스프링에서는 MyBatis, JDBC, JPA가 대표적으로 존재했고, 한국에서 두 번째로 많이 사용하는 JDBC에 관심이 생겼다. 구글 트렌드에서 국내에서의 관심도를 보면 JDBC의 관심도가 생각보다 많았다. 그 외 전 세계적으로도 JDBC의 관심도가 많아서 오랜만에 JDBC를 이용해 데이터를 입출력하는 프로젝트를 만들어보자는 생각을 했다. pom.xml org.springframework.boot spring-boot-starter-data-jdbc com.h2database h2 application.properties spring.datasource.url= jdbc:h2:m..

JAVA_SPRING 2022.02.15 0

HashSet, ArrayList, LinkedList, Vector 각 클래스 간의 특징과 공통점

HashSet, ArrayList, LinkedList, Vector 각 클래스 간의 특징과 공통점 HashSet, ArrayList, LinkedList, Vector의 공통점은 부모 클래스가 Collection 인터페이스를 상속받고 있다는 점이다. 인터페이스 특징 구현 클래스 List 순서가 있는 데이터의 집합, 데이터의 중복을 허용한다. ArrayList, LinkedList, Stack, Vector Set 순서를 유지하지 않는 데이터의 집합, 데이터의 중복을 허용하지 않는다. HashSet, TreeSet Vector Vector는 컬렉션이 만들어지기 전부터 존재하기 때문에 컬렉션 프레임워크의 명명법을 따르지 않는다. 해당 클래스는 호환을 위해 설계를 변경해서 남겨 뒀지만 사용하지 않는 것이 좋..

JAVA 2022.02.07 0

String 클래스에 대한 학습 테스트

요구사항 1 "1,2"을 ,로 split 했을 때 1과 2로 잘 분리되는지 확인하는 학습 테스트를 구현한다. "1"을 ,로 split 했을 때 1만을 포함하는 배열이 반환되는지에 대한 학습 테스트를 구현한다. “1,2”를 1과 2로 분리하는 학습 테스트 @Test void test1_1() { String[] strings = "1,2".split(","); assertThat(strings).contains("1", "2"); } “1”을 “,”로 분리했을 때, 1만을 포함하는 배열이 반환하는지 학습하는 테스트 @Test void test1_2() { String[] strings = "1".split(","); assertThat(strings).containsExactly("1"); } 요구사항 2..

JAVA 2022.02.05 0

Set Collection에 대한 학습 테스트

Set 데이터가 주어졌을 때 요구사항을 만족시키자 public class SetTest { private Set numbers; @BeforeEach void setUp() { numbers = new HashSet(); numbers.add(1); numbers.add(1); numbers.add(2); numbers.add(3); } // Test Case 구현 }요구사항 1 Set의 size() 메소드를 활용해 Set의 크기를 확인하는 학습테스트를 구현한다. @Test void checkSize() { assertThat(numbers.size()).isEqualTo(3); }요구사항 2 Set의 contains() 메소드를 활용해 1, 2, 3의 값이 존재하는지를 확인하는 학습테스트를 구현하려한다..

JAVA 2022.02.05 0

Build Automation Tool - Maven, pom.xml

Maven Java를 위한 Build Automation Tool C#, Ruby 등 다른 언어에도 사용 가능 Project Object Model(POM) xml 형태로 프로젝트 정의 pom.xml을 분석해 프로젝트 빌드 pom.xml 구조 xml 파일 project ... xmlns="a" xmlns 속성은 해당 문서를 위한 XML 네임스페이스(namespace)를 명시한다. 기본 네임스페이스의 선언을 명시한다. xmlns:prefix="a" prefix 속성 값에는 이름 앞에 붙게 되는 네임스페이스 접두사(namespace prefix)를 명시한다. xmlns:xsi="a" 인스턴스 네임스페이스 URI를 지정한다. xsi:schemaLocation="a b" 두 개의 값이 공백으로 구분된다. 첫 번..

SPRING BOOT 2022.02.02 0

자바 기본자료형(Primitive data type)을 왜 사용할까?

Validation을 통해 데이터 타입이 들어오는 값을 검증하는 공부를 하면서 기본자료형에 null 타입이 들어오면 Null 예외가 발생해 오류가 던져지는 모습을 경험했다. 빈 칸도 받을 수 있다면 오류가 발생하지 않을텐데라는 생각을 했고, 왜 기본 자료형을 사용하는지 의문이 들었다. 하지만, 여러 자료들을 찾아보면서 내가 처음 생각한 방법부터 틀렸고, 기본 자료형과 참조 자료형을 적재 적소에 사용해야한다는 것을 알았다. 기본 자료형과 객체화된 기본 자료형의 차이 일단 기본 자료형과 객체화된 기본 자료형에 대한 차이를 알아봤다. identity의 유무 기본 자료형은 값만 가지는 상태이고, 객체화된 기본 자료형은 값 외에도 식별자라는 신원(identity)를 가진다. null 값의 존재 기본 자료형에 저장..

JAVA 2022.01.29 0

객체 지향의 사실과 오해 - 객체, 그리고 소프트웨어 나라

객체 지향의 사실과 오해를 읽고 정리한 글 섹션 - 02. 이상한 나라의 객체 내용 하나의 개별적인 실체로 식별 가능한 물리적인 또는 개념적인 사물은 어떤 것이라도 객체가 될 수 있다. 그리고 그 객체를 상태, 행동, 식별자를 지를 통해 구분하면 객체들 간의 협력 관계를 유연하고 간결하게 정의할 수 있다. 상태 객체가 주변 환경과의 상호작용에 어떻게 반응하는가는 그 시점까지 객체에 어떤 일이 발생했느냐에 좌우된다. 상태를 이용하면 과거에 얽매이지 않고 현재를 기반으로 객체의 행동 방식을 이해할 수 있다. 상태는 근본적으로 세상의 복잡성을 완화하고 인지 과부하를 줄일 수 있는 중요한 개념이다. 상태와 프로퍼티 모든 객체의 상태는 단순한 값과 객체의 조합으로 표현할 수 있고, 객체의 상태를 구성하는 모든 특..

Programming 2022.01.25 0

스프링을 이용한 메시지 기능과 메시지 기능 국제화(HTTP 헤더 값을 이용한 방법과 파라미터를 이용한 방법)

스프링을 이용한 메시지 기능과 메시지 기능 국제화 메시지 기능 메시지 기능은 다양한 메시지를 한 곳에 관리하도록 하는 기능을 말한다. 여러 화면에 보이는 단어들을 일일이 변경하려면 모든 파일들을 다 들어가야하지만, 메시지 기능을 이용하면 한 곳에 관리해 보다 쉽게 변경하고 관리할 수 있다. 국제화 메시지 기능을 각 나라별로 별도로 관리할 수 있도록 국제화를 지원하는 기능이다. 특정한 값을 넘겨받아 어디에 오는 나라인지 확인하면 그 나라에 따라 언어를 지원하는 방법이다. 만약 지원하지 않는 나라에서 접근한다면, 기본 설정으로 된 언어로 파일이 전송이 된다. 어디서 접근한 건지 알 수 있는 방법은 대략 세가지가 존재한다. HTTP accept-language 해더 값 사용하거나 사용자가 직접 언어를 직접 선..

JAVA_SPRING 2022.01.22 0

스프링에서 로깅

✔️ 스프링에서 로깅 로그 사용 장점 쓰레드 정보와 클래스 이름 같은 부가 정보를 함께 볼 수 있고, 출력 모양을 조절할 수 있다. 17:38:15.243 [main] INFO hello.springmvc.LogTest - info 로그가 출력이 됩니다. 로그 레벨에 따라 출력할 수 있어 로그를 상황에 맞게 사용할 수 있다.설정 파일에서 지정한 로깅 레벨이 아닌 경우 로그는 출력되지 않지만, System.out은 설정이 불가능하다. System.out.println("error 로그가 출력이 됩니다."); 시스템 아웃 콘솔에만 출력하는 것이 아니라 파일이나 네트워크 등, 로그를 별도의 위치에 남길 수 있다. 특히 파일로 남길 때, 일별, 특정 용량에 따라 로그를 분할하는 것도 가능하다. 내부 버퍼링, 멀..

JAVA_SPRING 2022.01.18 0