잘 설계된 객체지향 어플리케이션은 작고 응집도 높은 객체들로 구성된다. 작고 응집도 높은 객체란 책임의 초점이 명확하고 한 가지 일만 잘하는 객체를 의미한다. 일반적으로 기능을 구현하기 위해선 객체 사이의 협력이 발생한다. 협력을 위해서는 의존성이 필요하지만 과도한
사람의 기억은 단기 기억과 장기 기억으로 나뉘는데 장기 기억은 먼저 단기 기억의 영역으로 옮긴 후에 처리가 가능하다고 한다. 문제 해결에 필요한 요수의 수가 단기 기억의 용량을 초과화는 순간 문제 해결 능력이 급격히 떨어지는데, 이 현상을 인지 과부하(cognitive
컨테이너 기술이란 무엇입니까? 컨테이너 기술이란 2000년대 중반 리눅스에 내장된 LXC(Linux Container) 기술로부터 처음 소개되었으며, LXC는 단일 머신상에 여러 개의 독립된 리눅스 컨테이너를 실행하기 위한 OS 레벨의 가상화 기법이다. 이 LXC가 컨
OOP에 대한 가장 흔한 오해는 애플리케이션이 클래스의 집합이라는 것이다. 하지만 클래스는 실제적, 구체적인 도구일 뿐이고 훌륭한 코드를 위해서는 객체를 지향해야 한다. 좀 더 정확히 말해서 협력 안에서 객체가 수행하는 책임에 초점을 맞춰야 한다. 책임이 객체가 수신할
⛳ 책임 주도 설계를 향해 데이터 중심 설계에서 책임 중심 설계로 전환하기 위해서는 다음 두 원칙을 따라야 한다. 데이터보다 행동을 먼저 결정하라 협력이라는 문맥 안에서 책임을 결정하라 핵심은 데이터가 아니라 객체의 책임과 협력에 초점을 맞추라는 것이다. 데이터보다
책임 주도 설계라는 이름에서 알 수 있듯이 역할, 협력, 책임 중에서 가장 중요한 것은 책임이다. 책임이 어플리케이션 전체의 품질을 결정한다. > 객체지향 설계란 올바른 객체에게 올바른 책임을 할당하면서 낮은 결합도와 높은 응집도를 가진 구조를 창조하는 활동이다.
객체지향의 관점에서 핵심은 역할, 책임, 협력 이다. 객체지향의 본질은 협력하는 객체들의 공동체를 창조하는 것이다. 🏙 협력 객체들이 어플리케이션의 기능을 구현하기 위해 수행하는 상호작용을 협력 이라고 한다. 객체가 협력에 참여하기 위해 수행하는 로직을 책임이라고
엘리베이터만 생각하면 여러 제조 업체의 부품을 사용하더라도 같은 동작을 지원하게하는 것이 바람직하다. LG의 모터와 현대의 모터는 구체적인 제어 방식은 다르지만엘리베이터 입장에서는 모터를 구동해 엘리베이터를 이동시킨다는 면에서는 동일하다.Motor의 핵심 기능은 mov
'영화'와 '상영'을 구분할 필요가 있다. '영화'는 영화에 대한 기본 정보를 나타내고'상영'은 실제로 관객이 영화를 관람하는 사건으로, 관객은 이를 위해 돈을 지불하기때문에 분리하여 생각하는 것이 중요하다.특정 조건을 만족하는 예매자는 요금을 할인받을 수 있다. 할인
대부분의 사람들은 이론이 정립된 후 실무가 그에 따라 발전된다고 생각하지만,분야를 막론하고 이론을 정립할 수 없는 초기에는 실무가 먼저 급속한 발전을이룬다. 한마디로 이론보다 실무가 먼저라는 것 이다. 그런 맥락에서 짧은 시간내에 발전한 소프트웨어 분야의 경우 실무에
첫 주차에 제시된 과제의 요구 사항은 그리 복잡하지 않았다. 사용자로부터중복되지 않는 세 자리 숫자를 공백 없이 입력받고 랜덤으로 생성한 컴퓨터의 세 숫자와 비교하여 자리와 숫자가 전부 일치하는 경우 스트라이크, 숫자만 일치하는경우 볼 로 판정하여 3 스트라이크인 경우
2학년 복학이후, 사실상 전공 지식이 전무한 상태에서 혼자서 끙끙대며책을 2~3회독해 성적장학금을 수여받기도 했지만 단순히 학교 공부만 한다고개발자 취준 시장에서 경쟁력 있는 인재가 될 수 있을 지가 항상 고민 거리였다.그러던 와중, 본격적인 취준에 들어간 선배들과 소
https://www.acmicpc.net/problem/2406크루스칼을 통해 풀이할 수 있는 문제였다.문제의 조건을 유심히 봐야하는데 네트워크에 고장이 나더라도 컴퓨터끼리연결이 되어있도록 만드는 것이 최종 목표이다. 따라서, 모든 컴퓨터들은 기본적으로본사
https://www.acmicpc.net/problem/9694다익스트라를 이용해 풀이할 수 있는 문제였다.거리를 최소화하며 최고 위원(M-1)까지 도달하는 조건은 간단하게 친밀 관계를그래프로 형상화한 뒤 다익스트라를 이용하여 최단 거리를 도출하면 되었다.중
https://www.acmicpc.net/problem/13424플로이드 워셜 혹은 다익스트라로 풀이할 수 있는 간단한 문제였다.필자는 플로이드 워셜이 더 풀이가 간단히 나올듯 하여 플로이드 워셜을 이용해로직을 구성하였다.전체 방중 $K$명의 친구가 모이기에
https://www.acmicpc.net/problem/23034크루스칼과 BFS를 활용하여 풀이할 수 있는 문제였다.먼저 T를 구하기 위해서 우선 주어진 모든 간선에서 MST를 구성하여모든 정점을 연결하는데 필요한 최소한의 간선만을 남겨야 한다.이를 위해
https://www.acmicpc.net/problem/3055BFS를 통해 풀이할 수 있는 문제였다.주어진 맵의 정보를 받아 S에서 D까지 도달 가능한 지 BFS를 통해 도출하는 것이문제의 조건이다. 유의할 점은 물의 위치가 하나가 아닐 수 있다는 것이다.
https://www.acmicpc.net/problem/14574크루스칼과 DFS를 통해 풀이할 수 있는 문제였다.매일 둘씩 대결을 하므로 $N$명의 요리사가 존재할 때, $N-1$번의 대결이 펼쳐져야하고 시청률의 합이 최댓값이 되어야 한다. 이 조건은 대결
VPC를 이용한 EC2 구축 VPC 생성 IP 대역을 10.0.0.0/16으로 설정하여 VPC를 아래 그림과 같이 구축한다. 서브넷 생성 이전에 만든 VPC를 선택하고 의미 있는 이름으로 서브넷을 설정한다. CIDR은 10.0.1.0/24로 하며, 서브넷을 이어서 만