도서 8

[객체 지향의 사실과 오해] 6. 객체지도

객체 지도 이번 장은 좀 어려웠다. 사실 컴퓨터 전공이 아니라 보안 전공이라 유스 케이스 같은 전공을 들을 기회가 없어서인지, 배우는 게 많았지만 시간이 오래 걸렸다. 그래도 두세 번 읽으니깐 이해할 수 있었다. 구조적 설계를 해야한다. 객체지향은 자주 변경되는 기능이 아니라 안정적인 구조를 기반으로 시스템을 구조화한다. 구조 측면의 설계는 제품의 형태가 어떠해야 하는지에 초점을 맞춘다. 설계의 가장 큰 도전은 기능과 구조라는 측면을 함께 녹여 조화를 이루도록 만드는 것 훌륭한 구조 -> 훌룡한 기능 -> 훌룡한 소프트웨어 요구사항은 늘 변경되기 때문에 안정적인 구조를 제공하는 능력을 갖추어야 한다. 훌륭한 설계 = 안정적인 구조를 중심으로 설계 길을 묻지 마라, 객체를 이용해 지도를 만들어라 자연스럽게..

도서 2022.11.30

[객체지향의 사실과 오해] 5장 책임과 메세지

책임과 메시지 책을 읽고 개인적으로 받아들인 내용을 정리하는 공간이라 틀린 점이 있을 수 있습니다. 언제나 틀린 부분에 대한 논의는 환영합니다 !! 자율적인 책임 자율성 : 자기 스스로의 원칙에 따라 어떤 일을 하거나 자신을 통제해서 절제하는 성질이나 특성. 요청을 해결하기 위하여 객체가 수행하는 내용 = 책임 객체에게 주어지는 책임은 자율적이 여야 한다(알아서 처리하도록 내버려두어야 한다) 적절한 책임이 자율적인 객체를 낳고 , 자율적인 객체들이 모여 유연하고 단순한 협력을 낳는다 자율적이지 못하다? 예를 들어 왕이 모자장수에게 단순히 증언하세요! 가 아닌 목격했던 장면을 떠올리고 , 행동과 함께 증언하세요 이런 식으로 왈가왈부하면 모자장수 입장에서는 화날 듯!! 자율적이지 못하니깐. 알아서 증언하라 ..

도서 2022.11.17

[Effective Java] 2. 생성자에 매개변수가 많다면 Builder를 고려하라

문제 상황 오 딱 요즘 고민인 상황에 걸맞은 지식인듯하다. 정적 팩토리를 쓰던, 생성자를 사용하던 매개변수가 달라지면 메서드가 너무 많이 추가되는 어려움이 있었다. 예를 들면 public static Question newQuestion(long id, String title, String contents) { return new Question(id, title, contents,null); } public static Question newQuestionWithDeleted(Long id, String title, String contents, boolean status) { return new Question(id, title, contents, status); } private Question(L..

도서 2022.11.14

[Effective Java] 1. 생성자 대신 팩터리 메서드를 고려하라

클래스는 생성자와 별도로 정적 팩터리 메서드를 가질 수 있다. 예를 들어 다음과 같이 public생성자 대신 정적 팩토리 메서드를 제공할 수 있다. //정적 팩토리 메서드 public static Question newQuestion(Long id, String title, String contents) { return new Question(id, title, contents); } //생성자 private Question(long id, String title, String contents) { super(id); this.title = title; this.contents = contents; } 장점 이름을 가질 수 있다. 딱 보기에도 생성자로 인스턴스를 생성하려면 new Qustion()으로만 ..

도서 2022.11.12

[객체 지향의 사실과 오해] 4. 역할 ,책임,협력

4장 인간의 행동을 결정하는 것은 그 사람이 어느 상황에 처해있느냐. 인간의 행동을 결정하는 문맥은 타인과의 협력이다. 객체 지향의 세계에 입문한 사람들이 가장 흔히 하는 실수 → 객체가 가져야할 상태와 행동부터 고려한다는 것이다. 중요한 것은 객체들 사이에 이루어지는 협력이다. 협력 협력은 한 사람이 다른 사람에게 도움을 요청할 때 시작된다. ex ) 재판 속에서의 협력 재판장은 증인을 부를 것을 요청,증언할 것을 요청 왕 - 토끼 - 증인 사이의 협력 특정한 요청을 받아들일 수 있는 것은 , 객체가 그 요청을 수행할 수 있는 지식과 행동 방식을 가지고 있기 때문이다. = 해당 객체가 책임을 가지고 있다. 요청과 의무는 객체의 책임을 결정한다 책임 요청과 응답을 할 의무가 있는 경우 책임이 있다. 무엇..

도서 2022.11.03

[객체 지향의 사실과 오해] 3. 타입과 추상화

땅은 구불 구불 하지만 지하철 노선도는 직선으로 이루어져있다 . 이렇듯 승객이 꼭 알아야하는 사실만 정확하게 표현하고 몰라도 되는 정보는 무시함으로써 이해하기 쉽고 단순하며 목적에 부합하게 만듬. -> 추상화 추상화란? 현실에서 출발하되 불필요한 부분을 도려내가면서 사물의 놀라운 본질을 드러나게 하는 과정. 복잡성을 다루기 위해 추상화는 두 차원에서 이루어짐. 1. 공통점은 취하고 차이점은 버리는 단순화 2. 중요한 부분을 강조하기 위한 불필요한 세부 사항 제거 공통점을 기반으로 객체들을 묶기 위한 그릇을 개념이라고 한다. 인간,자동차,모니터,글자,책 .. 개념을 이용하여 여러 객체로 classfication(분류) 가능 개념 그룹의 일원이 될 때 인스턴스라고 할 수 있다. 개념 1. 심볼 -> 말 그대..

도서 2022.11.02

[객체 지향의 사실과 오해] 2.이상한 나라의 객체

세상을 더 작은 객체로 분해하는 것은 본질적으로 세상이 포함하고 있는 복잡성을 극복하기 위한 인간의 작은 몸부림이다. 객체란 인간이 분명하게 인지하고 구별할 수 있는 물리적인 또는 개념적인 경계를 지닌 어떤 것이다. 앨리스의 상태를 결정하는 것은 행동이지만 행동의 결과를 결정하는 것은 상태이다. 앨리스가 한 행동의 결과는 앨리스의 상태에 의존적이다 (158 인 사람이 10을 먹으면 168이지만 198인 사람이 10이 크면 208이겠지) 행동의 결과는 앨리스의 위치라는 상태를 이용해 쉽게 설명할 수 있다. 객체는 식별 가능한 개체 또는 사물이다. 객체는 자동차처럼 만질 수 있는 구체적인 사물일 수도 있고, 시간처럼 추상적인 개념일 수도 있다. 객체는 구별 가능한 식별자,특징적인 행동 변경가능한 상태를 가진..

도서 2022.10.27

[객체 지향의 사실과 오해] 1. 협력하는 객체들의 공동체

최근 클리코드와 한이음 프로젝트에서 OOP에 대해 많이 언급되고 있다. 따라서 멘토님이 추천해준 책을 사서 읽어보고 있다. 주절주절 설명은 하지 않고 내가 밑줄 친 부분만 끄적끄적 해보겠다. 객체지향의 목표는 실세계를 모방하는 것이 아니라 오히려 새로운 세계를 창조하는 것이다. 그럼에도 왜 실세계를 모방한다고 할까? 객체를 스스로 생각하고 스스로 결정하는 현실세계의 생명체에 비유하는 것은 상태와 행위를 캡슐화하는 소프트웨어 객체의 자율성을 설명하는데 효과적이기 떄문이다. 객체 지향의 개념을 훌룡한 프로그램을 설게하고 구혆는데에는 부적합하지만 객체 지향의 관점을 설명하기에는 실세계를 모방했다고 해도 goodd 요청과 응답으로 구성된 협력 일상에서 혼자 힘으로 해결하기 힘든 것을 다른 사람에게 도움을 요청한..

도서 2022.10.06
728x90