분류 전체보기 (28) 썸네일형 리스트형 오브젝트 - 1. 객체, 설계 티켓 판매 애플리케이션 구현하기 기존 구현 예상을 빗나가는 코드 예상에서 벗어난 코드관람객과 판매원이 소극장의 통제를 받는 수동적인 존재- 소극장이 관람객의 가방을열어본다- 소극장이 판매원의 허락없이 티켓과 현금에 접근- 소극장이 티켓을 꺼내 가방에 집어넣고 돈을 매표소에 적립하는 일을 한다. 세부적인 내용들을 한꺼번에 기억해야한다. Theater의 enter 메서드를 이해하기 위해 알아야하는 정보 - Audience가 Bag을 가지고 있다. - Bag안에 현금과 티켓이 들어 있으며- TicketSeller가 TicketOFfice에서 티켓을 판매- TicketOffice 안에 돈과 티켓이 보관되어있다 변경에 취약한 코드 예제는 변경에 취약하다. 이 예제의 가정- 관람객은 항상 가방을 들고다닌다-.. 오브젝트 - 8. 의존성 관리하기 협력은 필수적이지만 과도한 협력은 설계를 변경을 방해할 수 있다. 협력은 객체가 다른 객체의 존재와 객체가 수신할 수 있는메시지에 대해서도 알 것을 강요한다. 협력을 위해 필요한 의존성은 유지하면서도 변경을 방해하는 의존성은 제거해야한다. 1. 의존성 이해하기index - 변경과 의존성- 의존성 전이- 런타임 의존성과 컴파일 타임 의존성- 컨텍스트 독립성- 의존성 해결하기 변경과 의존성의존성은 실행시점과 구현시점에 서로 다른 의미를 가진다. 실행시점: 의존하는 객체가 정상적으로 동작하기 위해 런타임에 의존 객체가 반드시 존재해야한다. 구현 시점: 의존 대상 객체가 변경될 경우 의존하는 객체도 함께 변경된다. 어떤 객체가 예정된 작업을 정상적으로 수행하기 위해 다른 객체를 필요로 하는 경우 두 객체 사.. 오브젝트 - 5. 책임 할당하기 데이터 중심 설계- 행동보다 데이터를 먼저 결정- 협력이라는 문맥을 벗어나 고립된 객체의 상태에 초점때문에 - 캡슐화를 위반하기 쉽고- 결합도가 높아지며, 코드를 변경하기 어려워진다. 이에 대한 해결책은- 데이터가 아닌 책임에 초점을 두는것 이다. 책임 중심설계는 어렵다.- 어떤 객체에게 어떤 책임을 할당할지 결정하기 쉽지 않다 일종의 트레이드오프 활동이며, 동일한 문제를 해결할 여러 대안이 존재한다. 어떤게 최선인지는 상황과 문맥에 따라 다르다. 책임 주도 설계데이터보다 행동을 먼저 결정데이터는 객체가 책임을 수행하는데 필요한 재료를 제공할 뿐이다.책임 중심의 설계에서는1. 이 객체가 수행해야하는 책임은 무엇인가를 결정하고2. 책임을 수행해야하는 데 필요한 데이터는 무엇인가를 결정한다. 협력이라.. Leetcode 135. Candy 문제 https://leetcode.com/problems/candy/description/ There are n children standing in a line. Each child is assigned a rating value given in the integer array ratings.You are giving candies to these children subjected to the following requirements:Each child must have at least one candy.Children with a higher rating get more candies than their neighbors.Return the minimum number of candies you ne.. 오브젝트 - 4. 설계 품질과 트레이드오프 협력메시지를 주고받는 객체들 사이의 상호작용 책임객체가 다른 객체와 협력하기 위해 수행하는 행동역할대체가능한 책임의 집합 객체지향 설계란올바른 객체에게 올바른 책임을 할당하면서 낮은 결합도와 높은 응집도를 가진 구조를 창조하는 활동 설계는 변경을 위해 존재, 변경은 어떤식으로든 비용이 발생한다. 훌륭한 설계란 합리적인 비용안에서 변경을 수용할 수 있는 구조를 만드는 것. (낮은 결합도와 높은 응집도). 이를 위해서는 객체의 상태가 아닌 행동에 초점을 둬야한다(설계의 중심을 객체의 상태 -> 행동 -> 상호작용 으로 이동). 데이터 중심의 영화 예매 시스템객체의 상태는 구현에 한다. 구현은 불안정하기 때문에 변하기 쉽다. 상태를 객체 분할의 중심축으로 삼으면 구현에 관한 세부사항이 객체의 인터페이스에.. Leetcode 238. Product of Array Except Self 문제https://leetcode.com/problems/product-of-array-except-self/description Given an integer array nums, return an array answer such that answer[i] is equal to the product of all the elements of nums except nums[i].The product of any prefix or suffix of nums is guaranteed to fit in a 32-bit integer.You must write an algorithm that runs in O(n) time and without using the division operation.Example 1.. [AWS commuity day 후기] 어쩌다 AWS 인프라 구축 - 신규 서비스 개발을 위한 설계 고민들 10/28일에 있던 AWS Community Day 행사에 참석했다. 카카오 안정수님이 발표하신 세션을 정리해본다. SAA 자격증 공부를 했던 기억이 새록새록 나면서 편하고 재미있게 들을 수 있었다. 배경 카카오에서 해외 런칭 목표의 신규 프로젝트 빌딩 기회가 있으셨다고 한다. 제약조건? 4개월 / 제품 2개 동시 개발 국내의 프라이빗 클라우드와 연결 목차 네트워크 기반 사용할 서비스 배포환경 모니터링 1. VPC AWS 인프라 구축을 위해 가장 먼저 하게되는 일은 VPC 생성이다. private 서브넷, 퍼블릭 서브넷을 포함하여 VPC 생성하는데 고민하셨던 내용을 말씀해주셨다. IP를 얼마나 확보할까를 고민하는 과정에서 IPv4 IP 개수를 확인하는 방법을 말씀해주셨다. 정리하면 CIDR(싸이더) 표기.. [Computer System]레지스터 종류 정리해보기 CPU 에서 사용되는 레지스터 종류를 간단 정리해봅니다. 레지스터 종류 PC(program counter) 다음에 실행할 명령어의 주소를 기억합니다. running 상태의 PCB(Process Control Block) 의 PC 정보가 저장되는 것으로 이해하면 될것 같습니다. IR(Instruction register) 현재 실행 중인 명령어를 기억하는 레지스터 AC(Accumulator) 연산결과를 일시적으로 저장하는 레지스터 MAR(Memory address register) 읽기/쓰기를 할 메인 메모리(RAM)의 주소를 저장하는 레지스터 MBR(Memory buffer register) 메인 메모리(RAM)에 읽기/쓰기를 할 데이터를 저장하는 레지스터 처음 보는 것인데, 다음과 같은 레지스터들도 있.. 이전 1 2 3 4 다음