options { STATIC = false;} PARSER_BEGIN(Calculator) import java.io.PrintStream; class Calculator{ static public void main(String[] args) throws ParseException, TokenMgrError,NumberFormatException{ Calculator parser=new Calculator(System.in); parser.Start(System.out); } double previousValue=0.0; }PARSER_END(Calculator) SKIP : {" "}TOKEN : { }TOKEN : { ..
5장 데코레이터 패턴데코레이터는 장식하는 원래 객체와 동일한 타입의 객체임->장식된 객체를 원래 객체 대신 사용 가능함한 객체를 여러 개의 데코레이터로 장식할 수 있음동적으로 실행시간에 객체를 장식할 수 있음보통 장식된 순서가 중요하지 않음 ) --> 객체에 동적으로 새로운 책임(행위,상태)를 추가할 수 있음(wrapper)위임을 통한 문제해결 ) --> 데코레이터들을 대표하는 추상클래스를 정의하면 얻어지는 장점: 장식자와 장식될 수 있는 타입의 구분이 명확해짐. 장식자가 반드시 정의해야 하는 메소드를 지정할 수 있음 ) --> 동일한 요소를 여러번 적용 가능해야 하면 전략패턴으로 하면 안됨또 전략패턴은 특정 메소드의 기능만 변경하지만 장식자 패턴은 여러 메소드의 기능을 변경할 수 있음 ) --> 패턴의..
4장. 옵저버 패턴옵저버 패턴 : 객체가 관심있어 하는 사건의 발생을 알려주어야 할 때. 관찰하는 객체가 능동적으로 관찰하는 것이 아니라 관찰대상으로부터 어떤 사건이 발생하였을 때 수동적으로 통보해주길 기다림 ) --> 한 객체와 다중 객체간의 의존관계를 정의하며 한 객체에 의존하는 모든 객체들은 의존하는 객체의 상태가 변하면 항상 자동으로 통보를 받음 ) --> Subject는 Observer에 대해 알고있는 유일한 정보는 Observer interface를 구현하고 있다는 점임.(update 메소드를 가지고있음)새 Observer를 쉽게 추가할 수 있으며, 기존 Observer를 쉽게 제거할 수 있음.새로운 종류의 Observer를 추가하기 위해 Subject를 변경할 필요가 없음.Observer나 ..
인간이 만든 인공생명체 C. elegans 바로 이것.. Caenorhabditis elegans라는 건 이렇게 생긴 벌레로, 선형동물이다. 한국어로는 예쁜꼬마선충.자기네 나라 말로 된 이름이 별로 없는 동물인데 특이하게 한국어로는 있다. 익숙하지 않겠지만 우리에게 좀더 익숙한 선형동물로는 기생충인 편충이 있음. 이녀석은 흙 속에서 미생물을 먹고 사는, 몸길이가 1밀리 정도에 두께가 0.1밀리쯤 되는 세포수 1000개 가량의 벌레다.색은 투명해서 눈에는 잘보이지 않는다. 화단 속의 흙에 넣으면 잘 번식하고 사는데, 의외로 자연 내에서의 생태는 잘 알려져있지 않다. 얘가 중요한 이유가 뭐냐면... 인류가 모든 뉴런에 대한 정보를 알고 있는 첫 동물이자, 현재까지는 유일한 동물이기 때문이다. 뉴런이 몇 개 ..
3장. 전략 패턴전략 패턴 : 알고리즘의 군을 정의하고 캡슐화해주며, 서로 언제든지 바꿀 수 있도록 해줌. ) --> 디자인패턴 : 코드 설계는 예술적 요소가 있으며, 충분한 경험 없이는 효과적인 코드를 만들기 쉽지 않음. 하지만 경험많은 개발자가 유사한 문제에 대해 이미 만든 해결책이 있으며, 설계 패턴은 이와 같은 해결책을 말함 ) --> 패턴의 종류생성: 객체의 생성과 관련(생성하는 객체의 구체적인 클래스와 이들의 생성방법을 숨김)행위 : 객체와 객체의 상호작용 관련 (보통 상속보다는 포함관계 사용)구조 : 객체간의 정적인 구조적 관계와 관련됨 ) --> 패턴을 사용하는 이유유연성 : 코드의 유연성 확보(객체간의 올바른 추상화 제공, 객체간의 낮은 결합성 제공)재사용성 : 코드의 재사용 가능성을 높..
2장. 객체지향 개발 절차와 UML소프트웨어 개발 과정 : 폭포수 모델. 문제정의,요구사항 분석(사용자 요구사항 분석, 기능/비기능요구사항 분석,사용 시나리오 분석,사용자 인터페이스 분석, 데이터 분석), 설계(OOD:클래스도출, 클래스간 관계 설정, 스퀸스 다이어그램), 구현, 통합, 시험/평가(구현전에 방법 결정 또는 테스트 프로그램 개발), 배포(최근 오픈 마켓 때문에 학생 때 배포/운영이 용이함), 유지보수 ) --> 반복적 개발 방법론 : 반복이라고 하는 일련의 짧은 고정된 길이의 작은 프로젝트 단위로 전체 개발을 나누어 진행하며, 각 반복은 독립적으로 테스트하며, 통합되어 실행될 수 있는 전체 시스템의 부분 요소임장점 : 능동적으로 대응하기 쉬움 ) --> 에자일 개발 방법론 : 기존 전통 방..