Computer Sciences(236)
-
[객사오] 2. 이상한 나라의 객체
객체, 그리고 소프트웨어 나라 상태 특정 시점에 객체가 가지고 있는 정보의 집합으로 객체의 구조적 특징을 표현한다. 객체의 상태는 객체에 존재하는 정적인 프로퍼티와 동적인 프로로퍼티 값으로 구성된다. 객체의 프로퍼티는 속성과 다른 객체를 참조하는 링크로 구분할 수 있다. 프로퍼티 (property) 객체의 상태를 구성하는 모든 특징을 의미한다. 앨리스의 경우 키, 위치, 음료가 해당된다. 프로퍼티 값 (property value) 객체의 상태를 구성하는 특징 중 특정한 값을 의미한다. 앨리스의 경우 키는 음료를 마시면 줄어들고, 문을 통과하면 위치가 변경되며, 음료를 다 마시면 음료를 버린다. 링크 (link) 객체와 객체 사이의 의미 있는 연결을 의미한다. 한 객체가 다른 객체의 식별자를 알고 있는 것..
2023.07.25 -
[객사오] 1. 협력하는 객체들의 공동체
요청과 응답으로 구성된 협력 객체지향에서는 역할을 수행할 수 있는 객체에게 요청(request)한다. 요청을 받은 객체는 요청한 객체에게 주어진 책임을 다하여 결과를 응답(response)한다. 요청과 응답을 통해 객체들은 협력(collaboration)한다. 역할과 책임 역할 (role) 어떤 협력에 참여하는 특정한 사람이 협력 안에서 차지하는 책임이나 임무를 의미한다. 역할은 책임이라는 개념을 내포하고 있다. 여러 객체가 동일한 역할을 수행할 수 있다. 해당 역할을 수행할 수 있다면 어떤 객체라도 상관없다. 한 사람이 동시에 여러 역할을 수행할 수 있다. 책임 (responsibility) 책임을 수행하는 방법은 자율적으로 선택할 수 있다. 💡 특정한 역할은 특정한 책임을 암시한다. 협력에 참여하며 ..
2023.07.25 -
[OOP] 헥사고날 아키텍처 맛보기
들어가며 개발을 공부하기 시작한 후로 OOP와 SOLID 등 객체지향에 대한 여러 개념에 대해 배웠다. 그러나 실제로 프로젝트를 개발할 때는 이러한 것들을 어떻게 활용해야 하는지 모른 채 찜찜한 채로 개발을 해왔었다. 그리고 TDD까지는 아니지만 테스트를 도입하여 프로젝트를 진행하고 있었다. 그런데 기능이 많아지고 테스트가 많아지면서 테스트 시간이 길어졌을 뿐만 아니라 테스트 코드를 작성하는데 점점 Mocking과 Stub에 대한 의존도가 높아졌다. 이렇게 테스트하는 게 맞나 고민하던 중 인프런에서 Mocking 및 외부 의존성 없이 순수 코드로만 테스트를 작성하는 강의를 보게 되었다. 이 강의에서는 의존성 주입 & 의존성 역전을 활용하여 레이어드 아키텍처에서 헥사고날 아키텍처로 전환하였다. 이를 통해 ..
2023.07.24 -
[Baekjoon] 2193번: 이친수
https://www.acmicpc.net/problem/2193 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 문제 설명 0과 1로만 이루어진수를 이진수라고 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않는다. 이친수에서는 1이 두번 연속으로 나타나지 않는다. 즉, 11을 부분 문자열로 갖지 않는다. 예를 들면 1, 10, 100, 101, 1000, 1001 등이 이친수가 된다. 하지만 00101..
2023.05.20 -
[Baekjoon] 9657번: 돌 게임 3
https://www.acmicpc.net/problem/9657 9657번: 돌 게임 3 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net 문제 설명 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며 돌은 1개, 3개 또는 4개를 가져갈 수 있다. 마지막 돌을 가져가는 사람이 게임을 이긴다. 두 사람이 완벽하게 게임했을 때 이기는 사람을 구하는 프로그램을 작성해라. 게임은 상근이가 먼저 시작한다. 입력 1 C가 1개 -> S가 1개를 가져가서 S가 이긴다. 돌이 6개면 S가 4개 -> C가 1개 -> S가 1개를 가져가서 S가 이긴다. 돌이 7개면 S가 1개 -> C가 4개 -> S가 1개 -> C가 1개를 가져가서 C가 이긴다. 돌..
2023.05.12 -
[Baekjoon] 1991번: 트리 순회
https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net 문제 설명 주어진 이진 트리를 전위, 중위, 후위 순회한 결과를 출력하면 된다. 별다르게 어려울 건 없다. 이진 트리와 순회 방식만 알면 쉽게 풀 수 있다. 이진 트리의 순회는 다음 방식과 같다. 전위 순회한 결과 : ABDCEFG // (루트) (왼쪽 자식) (오른쪽 자식) 중위 순회한 결과 : DBAECFG // (왼쪽 자식) (루트) (오른쪽 자식) 후위 순회한 결과 : DBEGF..
2023.05.12