Static checking
Hailstone Sequence n이 짝수일 때 n / 2, n이 홀수 일때 3n + 1 2, 1 3, 10, 5, 16, 8, 4, 2, 1 4, 2, 1 2n, 2n-1 , ... , 4, 2, 1 5, 16, 8, 4, 2, 1 7, 22, 11, 34, 17, 52, 6,...
Hailstone Sequence n이 짝수일 때 n / 2, n이 홀수 일때 3n + 1 2, 1 3, 10, 5, 16, 8, 4, 2, 1 4, 2, 1 2n, 2n-1 , ... , 4, 2, 1 5, 16, 8, 4, 2, 1 7, 22, 11, 34, 17, 52, 6,...
Specifications란 무엇인가? 심각한 버그는 인터페이스의 동작에 대한 오해에서 나타난다. 정확한 명세를 활용해 비난을 사람이 아닌 코드로 옮겨야한다. BigIntefer에 대한 명세와 코드 /* * 명세 */ public BigInteger add(BigInteger val) ...
Recursive functions 재귀적 함수가 자기 자신의 관점에 따라 정의되는 것과 같이 재귀적 자료형 또한 자기 관점에서 정의된다. Immutable lists immutable list 인 ImList<E> 이것이 4가지의 작동을 한다고 생각 empty: void → ImList cons: ...
Object recursion 문제를 base case와 recursive steps로 분리 할 수 있습니다. recursion에 help methods를 이해합니다. recursion vs iteation 의 장단점을 이해합니다. Recursion 이미 recursion에 대한 사양을 가지고 있을때, 어떻게 구현하면 좋은가?...
Object 가변 객체와 가변성에 대해 이핸다. allasing(별명 짓기)를 Identify 성과 가변성의 위험을 이해 불변성을 사용해 정확성, 명확성,등을 개선한다. Mutability Java의 일부 객체는 불변성을 가지고 있다. 한번 생성되면 → 항상 동일한 값을 가지고 있다. [Immutability] 한번 생...
Objectives ADT를 정의하고 인터페이스를 구현하는 클래스를 작성하기 Interfaces 자바의 interface 는 추상 데이터 유형 표현해 유용한 언어 메커니즘 메서드 시그니쳐는 있지만… bodies는 없다. interface 는 모든 메서드에 대한 메서드 bodies를 정의한다. 따라서 JAVA에서 인터페이스는 추...
Exceptions for signaling bugs 자바 프로그래밍에는 다양한 예외가 있다. ArrayIndex-OutOfBoundsExceions 같은… NullPointerException 또한 일반적인 예외이다. NumberFormatException 은 Interger.parseInt 정수로 구...
Introduction 추상화 함수에서 equality 연산을 정의 하는 방법 Three Ways to Regard Equality equality를 바라보는 다양한 방법 추상화 함수 사용(Using an abstraction function) 추상화 함수 $F$ 를 정의해 $F(a) = F(b)$ 인 경우에만 equ...
이 장의 목표 underdetermined specs(결정되지 않은 스펙)을 이해하고 식별하고 평가할 수 있다. 선언과 옵셔널을 이해하고 선언 사양을 작성할 수 있다. 전제조건과 사후 조건의 스펙을 이해하고 스펙 강도와 비교할 수 있다. 적절한 스펙을 논리적으로 쓸 수 있습니다. Introduction 유사한 기능에 대한 ...
Objects 체계적인 디버깅 디버깅이 선택되어 질 때가 있다. (전체 시스템이 함께 연결되거나, 배포 후에 사용자 보고) 버그가 현지화가 불가능 할때에는 디버깅이 좋은 전략이 될 수도 있다. Reproduce the Bug 고장을 야기하는 테스트케이스를 반복해서 시도한다. regr...