Computer Science 33

역할, 책임, 협력 - 코드로 이해하는 객체지향 프로그래밍

이전 글 https://sh1mj1-log.tistory.com/131 에서 객체 지향 프로그밍을 구성하는 다양한 요소와 구현 기법을 살펴보았습니다. 클래스, 추상 클래스, 인터페이스를 조합하여 객체지향 프로그램을 구조화하는 기본 방법 상속을 이용해 다형성을 구현하는 기법 다형성은 지연 바인딩을 통해 구현됨. 상속은 다형성을 위해 사용. 코드 재사용만 할 때는 캡슐화 측면에서 합성이 더 좋음. 유연한 객체 지향 프로그램을 위해서는 컴파일 타임 의존성과 런타임 의존성이 다름. 역할, 책임, 협력 객체지향의 본질은 역할(role), 책임(responsibility), 협력(collaboration) 입니다. 물론 클래스, 상속, 지연 바인딩이 중요하지만 이는 구현 방법일 뿐 본질은 아닙니다. 계속 반복하여 ..

객체지향 프로그래밍 - 코드로 이해하는 객체지향 설계

이전 글 - https://sh1mj1-log.tistory.com/128 : 프로그래밍 패러다임과 객체, 설계 - 코드로 이해하는 객체지향 설계 에서 이어집니다. 객체지향 프로그래밍 책에서는 가상의 영화 예매 시스템을 예로 들어서 설명합니다. 영화 예매 시스템 요구사항 살펴보기 사용자는 영화 예매 시스템을 이용해서 쉽고 빠르게 영화 예매할 수 있다. 영화 : 영화에 대한 기본 정보(제목, 상영 시간(영화 런타임), 가격 정보) 상영: 실제로 관람하는 사건(상영 일자, 시간, 순번) 사용자가 실제로 예매하는 대상은 영화가 아니라 상영이다. 특정 조건을 만족하는 예매자는 요금을 할인받을 수 있다. 할인액은 할인 조건(discount condition)과 할인 정책(discount policy) 으로 결정된..

프로그래밍 패러다임과 객체, 설계 - 코드로 이해하는 객체지향 설계

지난 1년 간 스프링을 공부하고 안드로이드 앱 개발 프로젝트를 하면서 dependency(의존성)을 관리하는 것이 굉장히 중요하다는 이야기를 계속해서 접했고 공부했습니다. Spring boot 에서 bean 과 @Autowired 라는 어노테이션을 통해 의존성을 주입하고, 안드로이드 코트린에서는 hilt 라는 의존성 관리 라이브러리를 사용하여 의존성을 관리했습니다. 이 의존성은 결국 객체지향의 핵심일 것이다. 실무적인 관점에서 의존성을 공부하고 다루어 보니 객체지향을 더 깊게 공부해야 할 때가 온 것 같습니다. 그래서 '오브젝트 : 코드로 이해하는 객체지향 설계 - 조영호' 책을 읽으면서 정리해보고자 합니다. 책의 머릿말에서 이 책은 실무 경험이 있으며 설계에 대한 고민을 충분히 한 사람들이 읽으면 좋을..

CS.APP Chap1 A tour of computer system - 2

1.6 Storage Devices From a Hierarchy 실제로는 많은 computer systems 의 저장 장치는 Memory hierarchy(메모리 계층 구조) 로 구성되어 있습니다. 성능을 향상시키기 위해 여러 cache 을 활용하는 것처럼 전체 메모리 구조의 대한 이해를 활용할 수 있습니다. 1.7 The OS(Operating System) Manages the Hardware 운영체제는 하드웨어를 관리합니다. 이전의 hello 프로그램을 예로 들어보면 shell 에서 키보드로 입력하면 알아서 disk → 메인 메모리 → display 로 접근하여 출력을 수행합니다. 우리가 직접 키보드, disk, 메인 메모리에 접근하지 않았는데도 말이죠. 이러한 기능들은 OS 에서 제공되는 서비스..

CS.APP Chap1 A tour of computer system - 1

Chap 01. A tour of computer system. 먼저 computer system 은 Hardware 와 System Software 로 이루어져 있으며 이 두 개가 같이 작동하여 application program 을 실행시킵니다. 시스템 구현 방식은 계속해서 변화했지만 이러한 근본적인 개념은 변하지 않습니다. 이 책을 통해 code 최적화, 보안 문제 해결, error 해결, 동시성 문제 등을 배울 것입니다. 1.1 Information is Bits + Context 정보는 비트와 컨텍스트입니다. 텍스트 문자는 ASCII 표준을 사용하여 표현할 수 있습니다. 각 문자를 바이트 길이 값으로 표현하면 연속된 바이트 파일에 저장할 수 있지요. ASCII 문자로 구성된 파일은 text fi..

8. HTTP 헤더2(캐시와 조건부 요청) - HTTP 웹 기본 지식

이 글은 배민 기술이사 김영한 이사님의 인프런 강의 "모든 개발자를 위한 HTTP 웹 기본 지식" 을 기반으로 작성되었습니다. 문제 시 삭제 조치하겠습니다. 목차는 아래와 같습니다 캐시 기본 동작 검증 헤더와 조건부 요청 캐시와 조건부 요청 헤더 프록시 캐시 캐시 무효화 캐시 기본 동작 a. 캐시가 없을 때 1) 첫 번째 요청 브라우저에서 GET /star.jpg 첫번째 요청을 보내면, 서버는 HTTP 헤더(0.1M) + HTTP 바디=star.jpg 이미지(1.0M)를 담아 응답을 보낸다. 브라우저에 서버로부터 응답받은 이미지가 표시된다. 2) 두 번째 요청 브라우저에서 GET /star.jpg 두번째 요청을 보내면, 서버는 HTTP 헤더(0.1M) + HTTP 바디=star.jpg 이미지(1.0M)를..

7. HTTP 헤더1(일반 헤더) - HTTP 웹 기본 지식

이 글은 배민 기술이사 김영한 이사님의 인프런 강의 "모든 개발자를 위한 HTTP 웹 기본 지식" 을 기반으로 작성되었습니다. 문제 시 삭제 조치하겠습니다. 목차는 아래와 같습니다 HTTP 헤더 개요 표현 콘텐츠 협상 전송 방식 일반 정보 특별한 정보 인증 쿠키 HTTP 헤더 개요 a. HTTP 헤더 1) 헤더 용도 HTTP 전송에 필요한 모든 부가 정보 e.g. 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보 등 표준 헤더가 너무 많기 때문에 모두 다룰 수는 없다... 필요시 임의의 헤더를 추가할 수도 있다. 2) 헤더 분류-RFC 2616(과거) 1) General 헤더: 요청/응답 메시지 전체에 적용되는 정보 (e.g. Connection: c..

6. HTTP 상태코드 - HTTP 웹 기본 지식

이 글은 배민 기술이사 김영한 이사님의 인프런 강의 "모든 개발자를 위한 HTTP 웹 기본 지식" 을 기반으로 작성되었습니다. 문제 시 삭제 조치하겠습니다. 목차는 아래와 같습니다 HTTP 상태코드 소개 2xx - 성공 3xx - 리다이렉션 4xx - 클라이언트 오류, 5xx - 서버 오류 HTTP 상태코드 소개 a. 상태 코드 상태코드는 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능이다. 1) 1xx (Informational): 요청이 수신되어 처리중 2) 2xx (Successful): 요청 정상 처리 3) 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요 4) 4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음 5..

5. HTTP 메서드 활용 - HTTP 웹 기본 지식

이 글은 배민 기술이사 김영한 이사님의 인프런 강의 "모든 개발자를 위한 HTTP 웹 기본 지식" 을 기반으로 작성되었습니다. 문제 시 삭제 조치하겠습니다. 목차는 아래와 같습니다. 클라이언트에서 서버로 데이터 전송 HTTP API 설계 예시 클라이언트에서 서버로 데이터 전송 a. 데이터 전달 방식 데이터 전달 방식은 크게 2가지 경우로 나뉜다. 1) 쿼리 파라미터를 통한 데이터 전송 GET 주로 정렬 필터(검색어) 2) 메시지 바디를 통한 데이터 전송 POST, PUT, PATCH 회원 가입, 상품 주문, 리소스 등록, 리소스 변경 그렇다면 아래 4가지 상황에서의 데이터 조회 및 데이터 전송을 살펴봅시다. b. 4가지 상황 1) 정적 데이터 조회 이미지, 정적 텍스트 문서 2) 동적 데이터 조회 주로 ..

4. HTTP 메서드 - HTTP 웹 기본 지식

이 글은 배민 기술이사 김영한 이사님의 인프런 강의 "모든 개발자를 위한 HTTP 웹 기본 지식" 을 기반으로 작성되었습니다. 문제 시 삭제 조치하겠습니다. 목차는 아래와 같습니다. HTTP API 을 만들어보자 HTTP 메서드 - GET, POST HTTP 메서드 - PUT, PATCH, DELETE HTTP 메서드의 속성 HTTP API 을 만들어보자 a. 요구사항 회원 정보 관리 API를 만들어라. 1) 회원 목록 조회 2) 회원 조회 3) 회원 등록 4) 회원 수정 5) 회원 삭제 b. API URI 설계1 API 기능에 대응하는 직관적인 이름으로 URI 를 설계하면, 다음과 같이 URL을 모두 따로 만들어야 한다. 1) 회원 목록 조회 - /read-member-list 2) 회원 조회 - /r..