메서드(3)
-
01. 협력하는 객체들의 공동체
객체지향 프로그래밍이란 현실 속에 존재하는 사물을 최대한 유사하게 모방해 SW내부로 옮겨오는 작업이라고 많이 알고있음. 실세계의 모방이라는 개념은 객체지향의 철학적인 개념을 설명하는데 적합하나, 실제 분석 및 설계를 설명하기에는 적합하지 않음. 실제로 객체와 대응되는 실세계 사물을 발견할 확률이 높지 않다. 객체지향의 목표는 실세계를 모방하는 것이 아니라 새로운 세계를 창조하는 것 객체지향에서 가장 중요한 개념 : 역할, 책임, 협력 # 요청과 응답으로 구성된 협력 대부분 사람들은 큰 문제를 혼자서 해결하기 보다는 다른 사람들의 도움을 받아 해결하는 것을 선호 사람들은 스스로 해결하지 못하는 문제와 마주치면 문제 해결에 필요한 지식을 알고 있거나 서비스를 제공할 수 있는 사람에게 도움을 요청 하나의 문제..
2023.05.28 -
3장 : 함수 정의와 호출
- const 추가 시 public static final 필드로 컴파일 됨 # 확장함수 - 어떤 클래스의 맴버 메서드인 것 처럼 호출할 수 있지만 그 클래스 밖에 선언된 함수 package strings fun String.lastChar() : Char = this.get(this.length - 1) - 클래스 이름(String) -- 수신 객체 타입 - 확장 함수가 호출되는 대상이 되는 값(객체, this) -- 수신 객체 - 위 코드에서 this 생략 가능 - 확장함수 안에서는 클래스 내부에서만 사용할 수 있는 private, protected 맴버를 사용할 수 없다. - 확장함수는 오버라이드 할 수 없음 - 확장한 함수와 그 클래스 맴버 함수의 이름이 같으면 확장 함수가 아니라 맴버 함수가 호..
2023.04.10 -
8장 : 메서드
아이템 49. 매개변수가 유효한지 검사하라 - 매개변수 값이 잘못됐을 때 던지는 예외를 문서화해야 - 나중에 쓰기 위해 저장하는 매개변수는 특히 더 신경 써서 검사해야 - 유효성 검사 비용이 지나치게 높거나 실용적이지 않을 때, 혹은 계산 과정에서 암묵적으로 검사가 수행될 때는 검사 패스해도 됨 아이템 50. 적시에 방어적 복사본을 만들라 - 클라이언트가 여러분의 불변식을 깨뜨리려 혈안이 되어 있다고 가정하고 방어적으로 프로그래밍해야 - 생성자에서 받은 가변 매개변수를 각각 방어적으로 복사해야 - 매개변수가 제 3자에 의해 확장될 수 있는 타입이라면 방어적 복사본을 만들 때 clone 사용해서는 안 됨 - 인스턴스를 복사하는 데는 일반적으로 생성자나 정적 팩터리를 쓰는 것이 좋음 - 그 객체가 잠재적으로..
2023.04.06