본문 바로가기

전체 글18

객체지향의 사실과 오해 4장 정리 인터페이스, 즉 스위프트의 Protocol의 중요성. 책임-주도 설계(Responsibility-Driven Design) 설계를 해서 internal 메소드로 활용될, 즉 협력에 필요한 메소드들을 추린다. 가능한 한 잘 추려서 해당 internal 메소드를 선언한 protocol 타입을 만든다. 구체적인 클래스들은 해당 프로토콜 타입을 채택함으로써 커플링을 줄인다. 이렇게 설계 -> 프로토콜 구현 -> 클래스를 구현을 차례대로 한다면 이후에 해당 프로토콜의 역할을 채택한 필요한 다른 클래스로 교체해야 하는 상황이 올 때 코드를 유지보수 하기 쉬워진다. Design Pattern Delegate Pattern => 보통 하위 객체(상위 객체가 가지고 있는 멤버 객체)가 상위 객체(하위 객체를 프로퍼티로 .. 2022. 5. 23.
객체지향의 사실과 오해 3장 정리 SRP(Single Responsiblity Principle) 단일 책임 원칙 클래스는 단 한 개의 책임을 가져야 한다. 단일 책임을 정하는 기준: 한 객체의 변경 이유는 단 한가지이어야 한다. 참고링크: 클린코드 10장 클래스 클린코드 내용 캡쳐 => 충분히 작지 않다. => 변경 이유는 단 한가지. SRP를 만족하는 클래스다. LSP(Liscov Substitution Principle) 리스코프 치환 법칙 상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다. 위반한 사례 직사각형 vs 정사각형 UISwitch는 size를 바꿔도 사이즈가 바뀌지 않는다 -> 리스코프 치환 법칙 위반! UISwitch는 아래처럼 코드를 작성해야 사이즈가 바뀝니다... 2022. 5. 17.
객체지향의 사실과 오해 2장 정리 레베카 워프스브록 - 객체지향 패러다임은 지식을 추상화하고 추상화한 지식을 객체 안에 캡슐화함으로써 실세계 문제에 내재된 복잡성을 관리하려고 한다. 객체를 발견하고 창조하는 것은 지식과 행동을 구조화하는 문제다. 객체, 그리고 소프트웨어 나라 객체의 특성 상태(state) 행동(behavior) 식별자(identity) 객체와 객체 사이의 의미 있는 연결을 링크(link) 라고 한다. 객체와 객체 사이에는 링크가 존재해야만 요청을 보내고 받을 수 있다. 객체가 취하는 행동은 객체 자신의 상태를 변경시킨다. 객체의 행동에 의해 객체의 상태가 변경된다는 것은 행동이 부수 효과(side effect)를 초래한다는 것을 의미한다. 여기서의 부수효과는 좋은 것도 나쁜것도 아닌 당연한 원리. 메소드를 호출함으로써 .. 2022. 5. 8.
객체지향의 사실과 오해 1장 정리 협력하는 객체들의 공동체 객체지향(Object Oriented Programming) 객체지향의 목표는 실세계를 모방하는 것이 아니다. 오히려 새로운 세계를 창조하는 것이다. 소프트웨어 개발자의 역할은 단순히 실세계를 소프트웨어 안으로 옮겨 담는 것이 아니라 고객과 사용자를 만족시킬 수 있는 신세계를 창조하는 것이다. 객체의 특징: 캡슐화(encapsulation), 자율성(autonomous), 메시지(message), 협력(collaboration), 연결완전성(seamlessness) 메시지, 오퍼레이션, 메소드 해당 객체가 다른 객체에게 메시지를 보낸다고 표현을 하지, 절대 해당 객체가 다른 객체의 함수를 호출한다고 부르지 않는다. 함수가 아닌 operation이라고 부른다. 왜냐하면 메시지를 보.. 2022. 5. 8.
JSON과 Protocol Buffers 적용해보기 이전에 Java Processing Library을 통해 오목게임을 개발한 적이 있습니다. 소켓 통신을 이용한 오목 게임 소켓 통신을 이용한 오목게임입니다. 따라서 클라이언트가 서버에 데이터 전달을 할 수 있는 것처럼, 서버도 클라이언트에게 요청없이 데이터 전달을 할 수 있습니다. 따로 server api가 존재하지 않습니다. 따라서 보낼 데이터에 대해 타입(ex. 사용자가 게임을 할 준비가 되었다는 값은 ReadyData 값으로 정의했고, 사용자가 둔 바둑돌의 위치는 StoneLocation이라고 정의했습니다)으로 규정한 것을 해당 타입이 어떤 타입인지 Protocol이라는 클래스로 구현해 한번 더 wrapping 하였습니다. Ready에 대한 Model인 ReadyData public class Re.. 2022. 2. 15.
[HTTP] Payload 용어 설명 HTTP Message Body를 Payload라고 한다. Content-Length는 페이로드 관련 정보이므로 표현헤더 중에서도 페이로드 메시지이다. 참고: 표현 헤더는 표현 메타데이터와, 페이로드 메시지를 구분한다. 참고: 인프런 - 모든 개발자를 위한 HTTP 웹 기본 지식 강의(김영한) 2022. 2. 15.