레이블이 자바인 게시물을 표시합니다. 모든 게시물 표시
레이블이 자바인 게시물을 표시합니다. 모든 게시물 표시

2010. 5. 7.

Head First Design Patterns


YES24 - [국내도서]Head First Design Patterns

이미지출처 : www.yes24.com

디자인패턴 관련 책은 처음 읽는다. 그동안 프로젝트를 하면서 모르고 썼던 패턴들이 여기에 정리가 되어 있어 놀라기도 했다. 그리고 말로만 듣던 패턴을 어떻게 써야하는지, 어떤 장단점이 있는지를 확인할 수 있었다.

처음 읽어서 그런지 나중에 가면 처음에 나온 패턴이 잘 기억이 나지 않았던 일을 생각하면, 자주 접해야 함과 직접 프로젝트에 도입해야 함을 느낄 수 있었다. 언젠가 디자인패턴에 대한 이야기를 할 때 막히지 않을 그 날이 올때까지 화이팅!!

2010. 2. 15.

사칙연산 정규식(Regular Expression, Java)

안드로이드용 계산기 프로그램을 만들고 있습니다.
허접하지만 어느정도 구현이 되었구요.
계산기 프로그램을 만드는 중에 정규식을 쓸 일이 있었습니다.
정규식을 이용하면서 많은 공부가 되었습니다.


String s = "3+12X9-4/2";

정규식을 이용해서 String에서 숫자와 사칙연산 기호를 분리하려고 합니다.

처음에 썼던 방식은 다음과 같습니다.

String regExp = "[^0-9]";
String[] operands = s.split(regExp);

숫자가 아닌 것들을 구분자로 해서 operands에 3, 12, 9, 4, 2를 넣었습니다.


사실 사칙연산에서 쓰인 '+', '-', 'X', '/' 를 구분자로 하고 싶었는데 '-'가 문제가 되었습니다.

String regExp = "[+-X/]";

위에서 처럼 하면 '-'기호가 문제가 되어 파싱이 안되더군요.

escape 문제인가 싶어서

String regExp = "[+\-X/]";

위의 방법으로 해봤는데 역시나 안되었습니다.

한참을 고민하다가 다른 시도를 해봤는데

String regExp = "[+\\-X/]";
String[] operands = s.split(regExp);
위에 있는 정규식으로 하니 숫자만 파싱이 되더군요.

생각해보니 \\는 \로 인식이 되어서  \\-는 \-로 알아들을테니

'-'기호 문제가 해결되었습니다.

String regExp = "(-|X|/|\\+)";
String regExp = "[-X/+]";

위에서처럼 해도 마찬가지로 파싱이 되었습니다.

============================<결론>=============================
String s = "3+12X9-4/2";
String regExp = "[^0-9]";
String[] operands = s.split(regExp);

위와 같이 하면 숫자만 파싱할 수 있다.
아래와 같은 정규식을 써도 숫자만 파싱할 수 있다.
String regExp = "[+\\-X/]";
String regExp = "(-|X|/|\\+)";
String regExp = "[-X/+]";

2009. 12. 5.

OOA&D



헤드퍼스트자바에 이어서 본 책으로 객체지향적인 설계를 하기 위한 방법을 알려준다. 또한 왜 객체지향적인 설계를 해야하는가, 유연한 설계란 무엇인가를 보여준다. 유스케이스작성, 캡슐화, 위임 등 꼭 알아야할 개념에 대한 설명도 포함되어 있다. 헤드퍼스트의 특징인 쉬운 설명과 예제는 큰 도움이 되었다.