반응형

IT is True 550

객체지향 설계 원칙이란 무엇인가? - SOLID란?

결합도와 응집도 결합도(Coupling) 결합도는 클래스 간의 의존성이 낮을수록 결합도가 낮다고 볼 수 있다. 하나의 클래스를 수정하는데 의존하는 다른 클래스를 모두 수정해야 한다면 결합도가 높은 것이다. 따라서 개발함에 있어 낮은 결합도로 개발하는 것이 주된 목표이다. 응집도(Cohesion) 응집도는 비슷한 일을 하는 기능(모듈 내부의 구성 요소)들이 기능적 관련성으로 잘 뭉쳐져 있다면 높은 응집도를 가진다고 볼 수 있다. 하나의 기능을 변경할 때, 다른 곳에서도 변경해야 할 곳이 많다면 응집력이 낮은 것이다. 따라서 개발함에 있어 높은 응집도로 개발하는 것이 주된 목표이다. 즉, 좋은 소프트웨어 설계를 위해서는 결합도는 낮추고, 응집도는 높여야 한다. 객체지향 설계 원칙(SOLID) SOLID는 컴..

[CS] 그래프(Graph)란 무엇인가?

그래프 (Graph) 그래프는 여러 개의 점들이 서로 복잡하게 연결되어 있는 관계를 표현한 자료구조이다. 컴퓨터 공학에서 사용하는 그래프는 X축과 Y축의 값을 나타내는 그래프와는 다른 모습을 가지고 있다. 여러 개의 점들이 선으로 이어져 네트워크 망과 비슷한 모습을 가지고 있다. 컴퓨터 공학의 그래프는 지하철 노선도, 전기 회로, 도로 교통망, 거미줄 등과 같은 모습과 유사하다. 그래프는 트리 그래프와는 달리 루트 노드의 개념이 없고, 사이클이 존재하며, 방향 그래프와 무방향 그래프로 나눌 수 있다. 또한, 부모-자식 관계의 개념이 없다. 그래프의 용어 정점 (Vertex) 하나의 점을 표현하는 것으로, 그래프의 위치를 나타낸다. 이를 노드라고도 한다. 간선(Edge) 위치 간의 관계를 선으로 나타낸 것..

[CS] 트리(Tree)란 무엇인가?

트리란? 트리구조는 나무를 뒤집어 놓은 모습과 유사한 구조를 가지고 있어 붙여진 이름이다. 하나의 뿌리(루트 노드)로부터 가지를 뻗어 값을 이룬 형태가 나무와 닮아 있다. 트리는 그래프의 여러 구조 중 단방향 그래프의 한 구조이다. 트리구조는 데이터가 하나 이상의 다른 데이터에 무방향으로 연결된 계층적 자료구조이다. 데이터를 순차적으로 나열시킨 선형 구조가 아닌 하나의 데이터 아래에 여러 개의 데이터가 존재할 수 있는 비선형 구조이다. 또한, 단방향으로 연결되어 아래로만 뻗어 나가기 때문에 사이클이 존재하지 않는다. 트리의 구조와 특징 루트(Root) 최상위에 존재하는 데이터는 루트(Root)라고 한다. 루트부터 시작하여 여러 개의 데이터를 간선(edge)으로 연결한다. 노드(Node) 노드는 루트를 포..

[CS] 큐(Queue)란 무엇인가?

큐(Queue) 큐는 ‘줄을 서서 기다리다.’, ‘대기행렬’이라는 의미를 가진다. 마치 영화표를 예매하기 위해 줄을 서서 기다리는 것과 비슷한 형태의 자료구조이다. 프로그래밍에서도 마치 데이터가 영화표를 예매하기 위해 큐라는 자료구조에 줄을 서서 대기한 다음, 예매를 성공한 데이터부터 빠져나가는 것이다. 또한 실생활에서 톨게이트를 지나가는 자동차와 빗대어 표현할 수도 있다. 따라서 큐는 스택과 반대되는 개념으로 가장 먼저 들어간 데이터가 가장 먼저 나오는 선입선출(FIFO : First In First Out) 구조로 되어 있어, 프로그래밍에서의 큐 자료구조는 데이터가 입력된 순서대로 처리할 때 주로 사용한다. 큐의 특징 선입선출 (FIFO : First In First Out) 먼저 들어간 데이터가 먼..

[CS] 스택(Stack)이란 무엇인가?

스택(Stack) 스택은 ‘쌓다.’, ‘쌓이다.’와 같은 뜻을 가진 용어로, 접시를 높이 쌓아 놓은 형태와 비슷한 자료구조이다. 즉, 데이터를 순서대로 쌓는 자료구조이다. 실생활에서 흔히 접할 수 있는 스택은 프링글스와 같은 원통에 들어가 있는 과자를 떠올리면 이해하기 쉽다. 가장 위에 있는(가장 나중에 들어간) 과자를 먼저 꺼내어 먹는 구조이기 때문이다. 스택은 가장 나중에 들어온 데이터가 가장 먼저 빠져나가는 후입 선출(LIFO : Last In First Out) 구조로 되어 있어, 프로그래밍에서 데이터가 입력된 순서대로 처리되는 것이 아닌, 가장 나중에 들어온 데이터를 먼저 처리할 때 사용한다. 스택의 특징 후입선출 (LIFO : Last In First Out) 먼저 들어간 데이터는 나중에 나오..

[CS] 자료구조란 무엇인가?

자료구조(Data Structure) 자료구조란 여러 데이터의 묶음을 저장하고, 사용하는 방법을 정의한 것이다. 데이터는 문자, 숫자, 소리, 이미지, 동영상 등 실생활을 구성하고 있는 모든 정보의 값을 말한다. 데이터들은 분석하고 정리하여 활용해야만 의미를 가질 수 있다. 이러한 데이터들의 규칙을 정하고, 체계적으로 정리하여 저장하는 등 여러 상황에 맞게 데이터를 효율적으로 다룰 수 있도록 만든 것이 자료구조이다. 자료구조의 종류 자료구조는 크게 단순 구조, 선형 구조, 비선형 구조, 파일 구조 네 가지로 분류할 수 있다. 단순 구조는 2진수, 정수와 실수, 문자, 문자열 등의 데이터를 나타내는 구조를 말하며, 파일 구조는 순차 파일, 색인 파일, 직접 파일 등이 있다. 다음은 효율적인 알고리즘을 사용..

[DB] 관계형 데이터베이스의 관계 (1:1, 1:N, N:M)

관계형 데이터베이스 구조화된 데이터는 하나의 테이블로 표현할 수 있다. 사전에 정의된 테이블을 릴레이션(relation)이라 하고, 테이블을 사용하는 데이터베이스를 관계형 데이터베이스(Relational database)라고 한다. 각 테이블 사이에는 관계라는 개념이 존재하며, 관계는 일대일(1:1), 일대다(1:N), 다대다(N:M) 관계가 있다. 관계 종류 1:1 관계 하나의 레코드가 다른 테이블의 레코드 한 개와 연결된 경우이다. 다음과 같이 User 테이블과 Phonebook 테이블이 있다고 가정한다. User 테이블은 user_id, name, phone_id를 가지고 있으며, phone_id는 외래키(foreign key)로 Phonebook 테이블의 phone_id와 연결되어 있다. Phon..

[Java] 자바 스택(Stack) 클래스 메서드 정리 및 활용

스택이란? 스택은 ‘쌓다.’, ‘쌓이다.’와 같은 뜻을 가진 용어로, 접시를 높이 쌓아 놓은 형태와 비슷한 자료구조이다. 즉, 데이터를 순서대로 쌓는 자료구조이다. 실생활에서 흔히 접할 수 있는 스택은 프링글스와 같은 원통에 들어가 있는 과자를 떠올리면 이해하기 쉽다. 가장 위에 있는(가장 나중에 들어간) 과자를 먼저 꺼내어 먹는 구조이기 때문이다. 스택은 가장 나중에 들어온 데이터가 가장 먼저 빠져나가는 후입선출(LIFO : Last In First Out) 구조로 되어 있어, 프로그래밍에서 데이터가 입력된 순서대로 처리되는 것이 아닌, 가장 나중에 들어온 데이터를 먼저 처리할 때 사용한다. 스택의 특징 후입선출 (LIFO : Last In First Out) 구조 : 먼저 들어온 데이터가 나중에 빠져..

REST API 성숙도 모델(Maturity Model) 단계별 설계 방법

REST API 성숙도 모델 REST API를 작성할 때는 몇 가지 지켜야 할 규칙들이 있다. 로이 필딩이 논문에서 제시한 REST 방법론을 보다 더 실용적으로 적용하기 위해 레오나르드 리차드슨은 REST API를 잘 적용하기 위한 4단계 모델을 만들었다. 이를 리차드슨의 REST 성숙도 모델이라 한다. REST 성숙도 모델은 총 4단계(0~3단계)로 나누어진다. 3단계까지 모두 충족하는 것은 어렵다. 2단계까지만 적용해도 좋은 API 디자인이라 볼 수 있다. 이런 경우 HTTP API라고도 부른다. REST 성숙도 모델 0단계 REST 성숙도 모델의 0단계에서는 단순히 HTTP 프로토콜을 사용하기만 해도 된다. 0단계는 좋은 REST API를 작성하기 위한 기본 단계이다. 다음과 같이 허준이라는 이름의..

Open API와 API Key

Open API Open API는 누구에게나 열려있는 API를 뜻한다. 그러나 완전 무료라는 의미는 아니다. API 마다 정해진 이용 수칙이 있으며, 해당 이용 수칙에 따라 가격이나 제한사항 등이 있을 수 있다. Open API는 정부에서 제공하는 공공 데이터나 기업체에서 개발한 API 등이 있다. Open API 예시 다음 링크는 날씨 정보를 제공하는 Open API이다. https://openweathermap.org/api Weather API - OpenWeatherMap Please, sign up to use our fast and easy-to-work weather APIs. As a start to use OpenWeather products, we recommend our One Cal..

반응형