전체 글 (188) 썸네일형 리스트형 [객체지향의 사실과 오해] ch5. 책임과 메시지 우리가 학교에서 CPR 교육을 받을 때, 신고를 부탁하는 사람을 정확히 "지정"하라고 교육한다. 그 이유는 단순히 신고를 해달라는 부탁을 한다면, "누군가 신고하겠지"라는 마음으로 책임감이 분산되어 초기 대응이 불가하기 때문이다. 그렇기에 정확한 한 사람을 지정하여 그 사람에게 신고에 대한 책임을 부여하는 것을 장려한다. 객체의 세계도 마찬가지다. 훌륭한 객체지향의 세계는 명확하게 정의된 역할과 책임을 지닌 객체들이 상호 협력하는 세계이다. 자율적인 책임 >설계의 품질을 좌우하는 책임 책임 : 요청을 처리하기 위해 객체가 수행하는 행동 자율적인 객체 : 자신이 맡은 책임을 스스로의 판단에 따라 수행 ex) 앨리스의 일화 : 증언에 대한 what과 how의 요구 두가지 같은 요청이 있다. 1) 증언하라 2.. .collect(Collectors.toList()) vs Stream.toList() >>문제 상황 .collect(Collectors.toList())와 .toList()는 스트림을 리스트로 바꾸어 주는 기능을 한다. 그러나, .collect(Collectors.toList())를 사용하니 SonarLint에서 Stream.toList()로 대체하라는 문구가 떴다. 순간 의문이 들었다. 기능적으로는 같은데 대체 두 collect 메서드 사이에 무슨 차이가 있지? 우선 이 두가지 메서드의 차이를 보자 Collectors.toList() vs Collectors.toUnmodifiableList() Collectors.toList() : 만들어진 List가 변경 가능 Collectors.toUnmodifiableList() : 만들어진 List가 변경 불가능 //SonarLint 예시 Li.. [객체지향의 사실과 오해] ch4. 역할, 책임, 협력 최후통첩 게임이라는 것이 있다. 연구팀은 사람들에게 일정 금액을 주고, 제안자는 금액 일부를 응답자와 나누어 가져야 한다. 제안자는 6:4, 7:3처럼 분배비율을 단 한번 제안할 수 있고 응답자는 제안을 수용하거나 거부할 수 있다. 수용하면 비율대로 금액을, 거부하면 둘다 상금을 받지 못한다. 인간이 합리적이라면 응답자는 단 1원이 떨어지는 분배비율에 대해서도 수용해야 한다. 반대로 제안자는 최대한 적은 비율을 응답자에게 제안할 것이다. 그러나, 실제 제안결과는 40%이상을 제안한 비율이 가장 높았다. 수용결과 또한 20%미만에 대해서는 제안을 거부했다. 이 실험은 인간은 '합리적'이라는 본질을 가지고 있는 것이 아니라, 상황(context)이 인간의 행동을 결정한다는 사실을 보여준다. 그러나, 객체설계.. [TDD] JUnit - @ParameterizedTest 공식문서 정리하기 문제상황 우테코 1주차 미션을 정리하다가 테스트 생성에 불편한 점을 느꼈다. 불편함을 느낀 코드는 바로 이것이다. @DisplayName("라운드 테스트 : 예외 범위의 시도 횟수를 입력할 때") void validateRound_invalidateInputs() { // given int[] invalidateInputs = {0, -1, 101, 102}; // when - then for (int invalidateInput : invalidateInputs) { assertThrows(IllegalArgumentException.class, () -> RoundValidator.validateRound(invalidateInput)); } } } 라운드를 1-100회 사이로 받아야 할 때, 유효범.. [Python] 2872. 우리집엔 도서관이 있어(실2) / 그리디 목차 1. 문제 2. 핵심 아이디어 3. 코드 4. 배운 점 1. 문제 https://www.acmicpc.net/problem/2872 2872번: 우리집엔 도서관이 있어 상근이는 컴퓨터 공학의 일인자가 되기 위해 책을 매우 많이 구매했다. 하지만, 집에 책장이 없어서 책을 탑처럼 쌓아놓고 있다. 오늘은 오랜만에 상근이가 집에서 휴식을 취하는 날이다. 상근 www.acmicpc.net 2. 핵심 아이디어 이 문제가 어려운 이유는 어떤 순서로 책을 꺼내야 하는지를 고민하기 때문이다. 그러나, 자세히 잘 바라보면 꺼내는 순서는 이미 정해져 있다. 예를 들어 다음 책의 배열이 있다고 가정해보자 5 4 3 2 1 이 상황에선 최대값 뒤에 있는 4 3 2 1을 앞으로 꺼내면 된다. 그리고 그 순서는 오름차순에 .. [자바의 정석] ch14-1. 람다식 목차 1. 람다식이란? 2. 람다식 작성하기 3. 함수형 인터페이스 ;4. java.util.function 패키지 ;5. Function의 합성과 Predicate의 결합 ;6. 메서드 참조 1. 람다식 1.1 람다식이란? 람다식 : 메서드를 하나의 식으로 표현한 것 메서드를 람다식으로 변형하면 메서드의 이름과 반환값이 없어지므로 "익명함수" 라고도 한다. 모든 메서드는 클래스의 포함되어야 하기에 클래스 제작 + 객체 생성이 필수적이지만 람다식은 다음의 과정이 없이 메서드 역할을 수행하게 할 수 있다. 1.2 람다식 작성하기 1) 메서드의 이름과 반환타입을 제거하고 ->을 블록 {} 앞에 추가한다 2) 반환값이 있는 경우 식이나 값만 적고 return 문 생략 가능(끝에 ;을 안붙임) 3) 매개변수 타.. [스크랩] 페어프로그래밍 환경설정 - 공통 커밋 Co-authored-by >> co-authored-by 이해하기 여러 작성자와 커밋 만들기 - GitHub Docs 커밋 메시지에 하나 이상의 Co-authored-by 후행부를 추가하여 하나의 커밋을 둘 이상의 작성자에게 귀속시킬 수 있습니다. 공동 작성 커밋은 GitHub. docs.github.com >> config 설정으로 message에 자동으로 co-authroed 만들기 페어프로그래밍인데 커밋은 한명이? Git의 Co-authored-by 설정과 git commit.template 설정에 대해 함께 알아봅시다! velog.io [우테코-Lv1] 자동차 경주 간단한 회고 (계속 수정 예정) 1. 객체 안에 toString 오버라이딩 - 좋지 않다는 리뷰를 받음 class Car { public String toString() { return name + " : " + "-".repeat(score); } } - 출력은 도메인의 책임이 아니다. - 정해진 형식 이외에 출력을 위해 수정이 불가피하다 2. 전략패턴 - 확장성 및 테스트에 용이 - 객체지향의 장점인 다향성을 적극 활용한 패턴 💠 전략(Strategy) 패턴 - 완벽 마스터하기 Strategy Pattern 전략 패턴은 실행(런타임) 중에 알고리즘 전략을 선택하여 객체 동작을 실시간으로 바뀌도록 할 수 있게 하는 행위 디자인 패턴 이다. 여기서 '전략'이란 일종의 알고리즘이 될 수 inpa.tistory.com 3. 지네릭 메서드 .. 이전 1 ··· 3 4 5 6 7 8 9 ··· 24 다음