분류 전체보기 21

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

✏️, 💡,❓ 해당 이모지는 저의 생각임을 나타냅니다. 길을 물어 직접 알려주는 방법이 '기능적이고 해결 방법 지향적인 접근법'이라면 지도를 이용하는 방법은 '구조적이고 문제 지향적인 접근법'이다. 지도는 길을 찾는 데 필요한 구체적인 기능이 아니라 길을 찾을 수 있는 '구조'를 제공한다. 그리고 지도는 범용적이다. 지도를 제작한 사람들이 지도를 만들 때는 사용할 사람들이 구체적으로 어떤 목적으로 지도를 사용할지 알지 못한다. 지도를 사용하는 사람들의 요구사항은 계속 바뀐다. 마을까지의 길을 찾을 수도 있고 기차역으로 이동하는 길을 찾을 수도 있다. 지도는 이 모든 요구사항을수용할 수 있는데, 지도는 기능에 비해 상대적으로 잘 변하지 않는 안정적인 지형 정보를 기반으로 하고 있기 때문이다. 지도 은유의..

Book 2024.10.30

왜 'a'는 String type이 될 수 없을까? feat. SCP

char을 큰 따옴표로 묶거나 String을 작은 따옴표로 묶으면 type 에러가 발생합니다. char c = "a"; // errorString s = 'a'; // error 🤓 왜 'a'는 String type으로 쳐주지 않는 걸까요?왜 리터럴 타입으로 받을 때 따옴표로 둘을 구분해야하는지 의문을 가져보신 분들이 있을 것 같습니다.해당 글에서는 둘을 구분해야하는 이유를 알아보고, String의 동작 방식을 정리해보려고 합니다. feat. char vs String 'a'와 "a"가 달라야 하는 이유char은 Primitive 타입이고 String은 Reference 타입입니다.Primitive 타입은 기본 데이터 타입으로 값을 직접 저장합니다. 반면 Reference 타입은 이름과 같이 메모리 주..

Language 2024.10.27

[객체지향의 사실과 오해] 05 책임과 메시지

✏️, 💡,❓ 해당 이모지는 저의 생각임을 나타냅니다. '책임감 분산' 현상과 관련된 실험이 있다.음성 대화방에서 누군가 발작을 일으켰을 때, 자신 말고도 도와줄 학생이 있다고 믿으면 아무도 도움을 요청하지 않고, 자신과 발작을 일으킨 학생 단 둘만이 있다고 믿었을 때는 참가자의 85%센트가 도움을 요청했다.사건에 대한 목격자가 많으면 개인이 느끼는 책임감은 적어진다는 것이다. 자율적인 책임객체가 어떤 행동을 하는 유일한 이유는 다른 객체로부터 요청을 수신했기 때문이다. 요청을 처리하기 위해 객체가 수행하는 행동을 책임이라고 한다.  적절한 책임의 선택이 전체 설계의 방향을 결정한다. 적절한 책임이 자율적인 객체를 낳고, 자율적인 객체들이 모여 유연하고 단순한 협력을 낳는다. => 협력에 참여하는 객체..

Book 2024.10.23

스트림은 느긋하고 싶다

Stream API는 2014년 Java8과 함께 혜성처럼 등장했습니다. ☄️그리고 현재까지 자바 개발자들의 사랑을 듬뿍 받고 있죠. 스트림은 병렬처리, 무한 데이터 등 많은 것을 지원해줍니다. 하지만 누군가가 그 중 꼭 알아야 할 스트림의 특징이 뭐야?라고 묻는다면 전 딱 이렇게 말할 것 같습니다. 스트림은 느긋하다고. Streams are lazy. computation on the source data is only performed when the terminal operation is initiated, and source elements are consumed only as needed. purpose지연 연산의 특징을 알아보고 Stream의 동작 방식에 대해 이해합니다.  어느날, 개발자 A..

Language 2024.10.13

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

✏️, 💡,❓ 해당 이모지는 저의 생각임을 나타냅니다. '최후 통첩 게임'이 있다. 제안자는 금액을 몇으로 나누어 가질지 제안하고, 응답자는 거부 또는 수용할 수 있다. 거부한다면 한 푼도 가질 수 없다. 협상의 여지가 없으며 한 번의 선택으로 게임이 종료된다.전통적인 경제학은 인간은 이기적인 동시에 합리적인 존재라고 가정한다. 인간이 합리적이라면 응답자는 아무리 적은 제안이더라도  받아드릴 것이다. 그러나 20% 이하의 금액을 제안받은 경우 대부분의 응답자들이 제안을 거부했다. '가지려면 받고 아니면 말라' 식의 인색한 최후 통첩에 대해 인간은 감정적으로 대응한다. 자존심을 지키기 위해 불공정한 제안을 단호히 거절한다.  1) 인간은 이기적이고 합리적인 존재다. 2) 그러나 타인과 관계를 맺는 과정속..

Book 2024.10.10

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

✏️, 💡,❓ 해당 이모지는 저의 생각임을 나타냅니다. 지하철은 점점 더 복잡한 미로로 변해가고 있다. 그럼에도 지하철을 큰 어려움 없이 이용할 수 있는 이유는 지하철 노선도가 있기 때문이다. 그리고 지하철 노선도는 유사한형태를 띠기 때문에 한 도시의 지하철 노선도를 이해하면 다른 도시의 노선도 역시 잘 이해할 수 있다. 해리 백(노선도 창조)은 지하철 노선도를그릴 때 지도가 당연히 가져가야한다고 생각되는 '정확성'을 버리고 그 '목적'에 집중했다. (지하철 노선도 추상화) 그리고 자신의 견해를 이렇게 설명했다. "지하철을 갈아탈 때 지형때문에 골치아플 일이 있을까요? 지형은 중요한 것이 아닙니다. 중요한 것은 연결, 즉 열차를 갈아타는 것입니다." 💡 특별히 프로그래밍에 해당하거나 지하철 노선도에 ..

Book 2024.10.01

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

✏️, 💡,❓ 해당 이모지는 저의 생각임을 나타냅니다. 사람은 태어난 지 얼마 안 된 시기부터 뚜렷한 경계를 가지고 함께 행동하는 물체를 하나의 개념으로 인지한다. (pinker 1997) 물체가 여러 부분으로 구성돼 있더라도 함께 움직일 경우 그 물체를 하나의 유기적인 단위로 인식한다는 것이다. 객체지향과 인지 능력인간은 본능적으로 세상을 독립적이고 식별 가능한 객체의 집합으로 바라본다. 많은 사람들이 객체지향을 직관적이라고 말하는 이유는 객체지향이 세상을 자율적이고 독립적인 객체들로 분해할수 있는 인간의 기본적인 인지 능력에 기반을 두고 있기 때문이다.✏️ 저자는 사람은 기본적으로 세상을 객체화해서 생각한다고 말하고 있다. 고개를 들어 주위를 둘러보면 객체라고 부를 수 있는 다양한 존재를 볼 수 있..

Book 2024.09.24

나는 어떻게 살아왔는가 - 삶의 지도

제가 어떤 사람이고 어떤 성격을 가지고 있는지, 무엇을 해보고 싶은지 등을 서술합니다. 글또 10기 모집글  너랑 있으면 뭘 많이 하게 된다아버지는 해보지 않으면 모른다고 말했습니다. 거창한 일에만 해당되는 건 아니었습니다. 내가 얼마나 달리기를 할 수 있는지, 저 피망이 맛있는지 맛없는지, 계란을 깨트리는 일 조차 내가 직접 해보지 않으면 모르는 것이었습니다. 어린 시절 다양한 캠프를 많이 참여했습니다. 혼자 산속에도 가보고, 부산에서 온 친구, 외국에서 온 친구, 제주도에서 온 친구들을 많이 만났습니다. 처음에는 캠프에 막연한 두려움이 있었습니다. 잘 적응하지 못할까봐, 나와 맞는 사람이 없을까봐 특히 무서웠던 것 같습니다. 하지만 점차 적응하며 다양한 사람들과 즐겁게 상호작용 하는 법을 익혔습니다...

Etc 2024.09.21

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

✏️, 💡,❓ 해당 이모지는 저의 생각임을 나타냅니다. 객체지향이란 실세계를 직접적이고 직관적으로 모델링 할 수 있는 패러다임-> 객체지향 프로그래밍이란 현실 속에 존재하는 사물을 최대한 모방해 소프트웨어 내부로 옮겨오는 작업 -> 객체란 현실 세계에 존재하는 사물에 대한 추상화 이러한 설명은 객체지향의 철학적 개념을 설명하는 데는 적합하지만, 유연하고 실용적 관점에서 설명하기엔 적합하지 않다. 애플리케이션을 개발하면서 객체에 직접적으로 대응되는 실세계의 사물을 발견할 확률은 높지 않다. 객체지향의 목표는 실세계를 모방하는 것이 아니다. 새로운 세계를 창조하는 것이다. 하지만, 실세계의 모방이라는 개념은 실무적인 관점에서는 부적합하지만 객체지향을 이해하고 학습하는데는 매우 효과적이다. 캡슐화, 자율성,..

Book 2024.09.08

객체지향의 사실과 오해: 들어가며

약 4개월간의 클린 아키텍처 스터디를 끝내고 객체지향의 사실과 오해 책을 읽기로 했다. 사실 순서를 굳이 따지자면 객체지향의 사실과 오해 -> 클린 아키텍처 -> Object 순으로 읽는 것이 좋다는 말을 들었는데 어쩌겠는가.그래도 매우 기대가 된다. 11월 안에 완독하는 것이 목표고, 친구 한 명과 같이 스터디를 하기로 했다. -11/20일에 스터디가 끝났다. 중간 과정에서 만든 PPT도 아래 첨부한다. 01 협력하는 객체들의 공동체 객체지향 프로그래밍이란 현실 속에 존재하는 사물을 최" data-og-host="yatta.tistory.com" data-og-source-url="https://yatta.tistory.com/entry/%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5..

Book 2024.09.07