본문 바로가기

전체 글38

[객체지향의 사실과 오해] 07. 함께 모으기 & 부록 A. 집합과 분해 P.209 커피 예제를 보고 구현해보자 도메인 모델 구현 코드 손님 (Customer.java) public class Customer { private final Barista barista; private final Menu menu; public Customer(Barista barista, Menu menu) { this.barista = barista; this.menu = menu; } // 결과값 확인을 위해 반환 public Coffee order(String menuName) { MenuItem menuItem = menu.getMenuByName(menuName); return barista.makeCoffee(menuItem); } } 메뉴 (Menu.java) public class.. 2022. 6. 12.
[객체지향의 사실과 오해] 05. 책임과 메시지 훌륭한 객체지향의 세계는 명확하게 정의된 역할과 책임을 지닌 객체들이 상호 협력하는 세계이다. 자율적인 책임 자율적인 객체란 스스로의 의지와 판단에 따라 각자 맡은 책임을 수행하는 객체 객체가 자율적이기 위해서는 객체에게 할당되는 책임이 자율적이여야 한다. 책임은 자율성을 보장할 정도로 충분히 포괄적이고 추상적이여야 한다. (1) 모자장수.증언하라(); (2) 모자장수.목격했던 장면을 떠올리고 떠올른 기억을 시간 순서대로 재구성한 뒤 말로 표현하라(); (1)의 경우 모자 장수는 증언할 책임만을 가진다. 왕의 입장에서 모자 장수가 어떤 방법으로 증언하는지 중요하지 않기때문에 모자장수는 증언을 위한 구체적인 방법이나 절차에 대해서는 최대한의 자유를 누린다. 증언하라() { 기억.load(); // 수첩.l.. 2022. 6. 5.
[객체지향의 사실과 오해] 01. 협력하는 객체들의 공동체 객체지향의 목표는 실세계를 모방하는 것이 아니다. 오히려 새로운 세계를 창조하는 것이다. 협력하는 사람들 역할 손님 : 커피 주문 (손님 역할) 캐시어 : 주문 접수 (캐시어 역할) 바리스타 : 커피 제조 (바리스타 역할) 책임 손님 : 커피 주문 책임 캐시어 : 주문 접수 책임 바리스타 : 커피 제조 책임 협력 : 커피 주문을 위해 모든 사람들이 맡은 역할과 책임을 다하며 협력 협력 요청 요청은 연쇄적으로 발생한다. 응답 요청의 방향과 반대 방향으로 연쇄적으로 전달된다. public class Customer { private final Cashier cashier = new Cashier(); public Coffee order(CoffeeMenu menu) { return cashier.takeOr.. 2022. 5. 26.
[데브코스] Spring 3주차를 마치며 기본적인 Java, 데이터베이스 학습 주차를 마치고 본격적으로 Spring에 대해 배울 수 있었다. 이전 학교 프로젝트에서 스프링 부트를 사용해보긴 했지만, 그때는 그저 입문 강의 하나 듣고 개발했던 거라 스프링이 어떻게 동작하고 왜 사용하는지에 대해선 제대로 알지 못한 상황이었다. 그래서 처음 배우는 마음을 가지고 학습하며 하나하나씩 나의 것으로 만들기 위해 노력했다. 사실 배우면 배울수록 내가 사용했던 건 스프링이 아니었다는 것을 느끼며 부끄러웠었다. 😂 1주차 간단히 주차 별로 배운 것을 말해보자면 1주 차에는 스프링의 전반적인 원리와 사용법에 대해 익힐 수 있었다. IoC부터 시작해서 DI, 컴포넌트 스캔 등 스프링의 핵심 원리와 더불어 Profile, Logging 등 여러 개념을 배울 수 있었.. 2022. 5. 2.
Unmodifiable Collection? Collection.copyOf? 이 글은 전반적으로 컬렉션의 복사 방법을 정리해봅시다! (unmodifiable view / list) 를 참고하였습니다. 더 자세한 내용을 원하시면 리차드님 블로그를 방문해주세요! 좋은 글이 넘쳐납니다!! 뭐가 다른거지? 우리는 주로 외부와 내부에서 주소값을 공유하는 인스턴스의 관계를 끊어주기 위해서 방어적 복사를 사용한다. (불변 유지) 또한, 외부로 값을 노출시킬 때도 관계를 끊어주기 위해서 복사본을 반환해준다. 이 때 사용되는 것이 주로 Unmodifiable Collection와 Collection.copyOf이다. 주로 Unmodifiable Collection을 사용했는 데 인터넷을 보다보면 Collection.copyOf을 사용하는 글도 많이 볼 수 있었다. 과연 무엇이 다르고 언제 써야하.. 2022. 4. 27.
7주차 - 패키지 목표 자바의 패키지에 대해 학습하세요. 학습할 것 (필수) package 키워드 import 키워드 클래스패스 CLASSPATH 환경변수 -classpath 옵션 접근지시자 package 키워드 클래스의 묶음 패키지에는 클래스 또는 인터페이스를 포함시킬 수 있으며, 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리 할 수 있다. 패키지 안에는 같은 이름의 클래스를 사용할 수 없으며 패키지가 다르면 상관없다. 패키지명은 관례에 따라 소문자로 작성한다. 사실 클래스의 실제 이름은 패키지명을 포함한 것이다. (String 클래스 -> java.lang.String) 이를 FQCN(Fully Qualified Class Name) 라고 한다. 클래스가 물리적으로 하나의 클래스파일(... 2022. 4. 5.