최근 객체지향 프로그래밍에 더욱더 관심을갖고 찾아보던 중 객체지향 체조원칙을 알게되었다.체조 원칙중 하나는 '모든 원시값과 문자열을 포장한다.' 라는 원칙이 있다.처음 저 문장을 접했을 때는 원시값인 char, byte, short, int, long, boolean, float, double을 사용하지 말고wrapper class를 사용하라는 말인줄로 착각했다.내가 여태까지 해왔던 프로그래밍 스타일을 보았을때 원시값이 아닌 래퍼 클래스를 사용했던 경우는 null값이 들어올 수 있는 경우였다.예를 들어 JPA를 사용하는 경우 데이터 베이스에 해당 데이터가 존재하지 않을 수 있기 때문에 래퍼 클래스를 사용했다. 하지만, 원칙이 의미하는 그런것이 아니었다.@Entity@Getter@NoArgsConstruc..
이전에 만들었던 어플리케이션에 디자인 패턴을 공부하고 적용해보며더 객체지향 프로그래밍과 가깝고 유지보수가 용이하도록 만들어 보는 시간을 가져보겠습니다. 1. 현재 시스템 구조와 한계제가 만든 시스템은 이전 글에 설명했듯이다음과 같은 구조를 띄고 있습니다.하지만 이미 존재하는 메뉴에 새로운 메뉴가 추가 될 수 있습니다.다음과 같이 말이죠이때 부터 구조적인 문제가 나타납니다.상위 메뉴에 새로운 하위 메뉴 항목이 늘어날때마다 클래스를 수정해야합니다.이러한 문제를 해결하기 위해 컴포지트 패턴을 이용할 수 있습니다. 2. Composite 패턴컴포지트 패턴은 단일객체와 복합객체를 동일한 개념으로 처리합니다.단일객체와 복합객체를 동일한 개념으로 처리하게 되면 복합객체가 또다른 복합객체나 단일객체를 참조하게하여다음..
이 글은 과거 POJO로 만들었던 콘솔 게시판, 회원, 과제 관리 시스템을 정리한 글입니다.순수 자바로만 어플리케이션을 만들어보며 그 과정에서 객체지향 프로그래밍을 이해하기 위해 만들었습니다. 1. 문제먼저 어떠한 가공도 되지 않은 하나의 클래스 파일에 모든 시스템의 과정이 담겨 있습니다.현재 이 시스템에는 다음과 같은 문제가 있습니다.1. 가독성이 전혀 없다.2. 코드를 재활용 할 수 없다.3. 따라서 시스템이 커지고 복잡해진다면 유지보수에 드는 시간은 곱절로 늘어난다. public class Main { public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(ne..