Recursive data types
Recursive functions 재귀적 함수가 자기 자신의 관점에 따라 정의되는 것과 같이 재귀적 자료형 또한 자기 관점에서 정의된다. Immutable lists immutable list 인 ImList<E> 이것이 4가지의 작동을 한다고 생각 empty: void → ImList cons: ...
ㅌ
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...
Code Review 본래 코드를 적은 사람이 아닌 다른 사람에게 코드를 보여주고 함께 하는것은 좋다. 코드 리뷰의 두가지 목적 Improving the code : 버그(예상되는)를 찾고 코드의 스타일을 서로 점검하면서 프로젝트의 기준의 일관성을 만든다. Improving the programmer : 코드 ...
First Defense: Make Bugs Impossible 버그에 대한 최고의 방법은 설계상 불가능하게 하는것. 이전에 이야기한 static checking → 컴파일 시간에 버그를 제거함 불변성 : 한번 생성된 값은 절대 바뀌지 못한다. → 버그를 예방하는 또 다른 원리 String은 불변이다.버그를 방지하기 위...