0. Overview 프로젝트 설계에 있어 객체의 구성 및 도메인 모델을 어떻게 구성해야할지에 대해 고민을 하게 되었습니다. 이때 기본이 되는 것이 UML, 특히 클래스 다이어그램(Class Diagram)이라는 것을 알게 되었고 대략적인 지식은 있었지만 보다 이를 명확하게 이해하기 위해 클래스 다이어그램에 대해 정리해보고자 합니다. 1. UML 이란 ? 먼저 UML이란 Unified Modeling Language의 약자로 도메인(해결하고자 하는 목표, ex) 예약 시스템 등)을 모델로 표현해주는 대표적인 모델링 언어로 알려져 있습니다. 이런 UML은 소프트웨어를 설계하고 필요에 의해 사용되는데 일반적으로 3가지의 목적을 가지고 만듭니다. 의사소통 또는 설계 논의 전체 시스템의 구조 및 클래스의 의존성..
Overview 컬렉션(Collection)은 많은 데이터 요소를 효율적으로 관리하기 위한 자료구조를 말하며, ArrayList, LinkedList, HashMap 등이 여기에 포함됩니다. 그리고 컬렉션들은 제네릭(Generic)으로 구현되어 있어 컬렉션과 함께 제네릭에 대해서도 알아보도록 하겠습니다. 1. Collection(컬렉션) ? 컬렉션(Collection)이란 많은 수의 데이터를 그 사용 목적에 적합한 자료구조로 묶어 하나로 그룹화한 객체를 말합니다. 자바에서는 이런 컬렉션을 위한 인터페이스와 클래스들이 있으며 자주 사용되는 클래스들의 상속 계층도는 아래 그림과 같습니다 ! 종류는 ArrayList, LinkedList, Vector, Stack , HashSet, TreeSet, TreeM..
개요 "자바 인터페이스(Java Interface)는 무엇인가 ?" 이런 궁금증을 가지고 있는 Java Programmer가 많습니다. 물론 필자도 그렇습니다. 인터페이스가 어디에 어떻게 왜 쓰이는지 명확히 이해하는데에 어려움이 있었고 이를 정리하고자 글을 작성하게 되었습니다. "객체 지향 개발 5대 원칙 - SOLID"을 만족시켜준다. 라는 부분 때문에 인터페이스를 사용한다고 생각합니다. 그렇다면 왜 SOLID를 만족시켜야 하는가? 라는 궁금증이 생길텐데요. 서비스 애플리케이션의 라이프사이클을 "설계 / 개발 / 유지보수" 세 단계로 나누게 되면, 유지보수가 소프트웨어 라이프사이클에서 가장 큰 부분을 차지한다고 합니다. 유지보수에서 인터페이스(Interface)는 SOLID를 구현하고, 객체 지향 개발..
개요 Java에서 String 클래스는 불변성을 갖습니다. 그래서 변하지 않는 문자열을 자주 사용하는 경우 좋은 성능을 기대할 수 있는데요, 하지만 문자열에 대한 변경이 자주 일어나는 프로그램에서 String만 사용하게 된다면 효율적인 성능을 기대하기 어렵습니다. 그래서 StringBuilder, StringBuffer를 사용하여 효율적인 성능을 보일 수 있습니다. 언제 StringBuilder와 StringBuffer를 사용하면 좋을지 살펴보도록 하겠습니다. String VS StringBuilder & StringBuffer Java에서 String 객체는 한번 값이 할당되면 그 공간은 변하지 않습니다. 하지만 StringBuilder나 StringBuffer 객체는 한번 값이 할당되더라도 한번 더 ..