Computer Science

    [Design Pattern] 구조 패턴 - 브릿지 패턴(Bridge Pattern)

    브릿지 패턴(Bridge Pattern) 이란? 브릿지 패턴은 큰 클래스 또는 밀접하게 관련된 클래스들의 집합을 두 개의 개별 계층구조​(추상화 및 구현)​로 나눈 후 각각 독립적으로 개발할 수 있도록 하는 구조 디자인 패턴이다. extend(상속) 보다 composition(합성) 을 적극 활용한다. 같은 말로는 아래와 같이 얘기할 수 있겠다. 구현(implementation)으로부터 추상(abstraction) 레이어를 분리하여 이 둘이 서로 독립적으로 변화할 수 있도록 한다." "구현부에서 추상층을 분리하여 각자 독립적으로 변형이 가능하고 확장이 가능하도록 한다. 즉 기능과 구현에 대해서 두 개를 별도의 클래스로 구현을 한다." "두개의 다른 계층(하나는 추상, 하나는 구현인 서로다른 계층의 커플링..

    자바의 다형성(Polymorphism)

    다형성 (Polymorphism) 다형성(Polymorphism) 이란, 그 자체의 의미를 표준 국어사전에서 찾아보면, '같은 종의 생물이면서도 어떤 형태나 형질이 다양하게 나타나는 현상' 이라 정의되어 있다. 이를 프로그래밍에서는, 다형성(polymorphism)이란 같은 자료형에 여러가지 타입의 데이터를 대입하여 다양한 결과를 얻어낼 수 있는 성질을 의미한다. 이를 통해 조상 클래스의 참조 변수로 자손 클래스의 참조 변수를 다루거나, 동일한 이름을 갖는 여러 형태의 매소드를 만들 수 있다. 자바에선 대표적으로 오버로딩, 오버라이딩, 업캐스팅, 다운캐스팅, 인터페이스, 추상메소드, 추상클래스 방법이 모두 다형성에 속하다고 생각하면 된다. 즉, 다형성은 클래스가 상속 관계에 있을때 나타나는 다채로운 성질..

    [OOP] 객체 지향 개념과 추상화

    객체 지향(OOP) 개념과 특징 객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 이 패러다임은 프로그램에 필요한 데이터를 독립적입 객체들의 집합으로 모델링하는 방식을 강조한다. 또한 각 객체는 데이터를 추상화 시켜 상태(데이터)와 행위(데이터를 조작하는 메서드)를 가진 객체로 만들고 이 객체(Object)들이 모여 서로 상호 작용하면서 데이터를 처리하는 방식을 일컫는다. 객체 지향 프로그래밍에서 객체는 실제 세계의 개념이나 사물을 모델링한 것으로 생각할 수 있다. 예를 들어, 자동차를 객체로 모델링할 수 있다. 자동차 객체는 속성(데이터)로는 차량 번호, 제조사, 색상 등을 가지고 있을 수 있고, 메서드(기능)로는 주행, 정지..

    [Design Pattern] 행동 패턴 - 전략 패턴(Strategy Pattern)

    전략 패턴 (Strategy Patter) 이란 전략 패턴은 실행(런타임) 중에 알고리즘 전략을 선택하여 객체 동작을 실시간으로 바뀌도록 할 수 있게 하는 행위 디자인 패턴 이다. 여기서 '전략'이란 일종의 알고리즘이 될 수 도 있으며, 기능이나 동작이 될 수도 있는 특정한 목표를 수행하기 위한 행동 계획을 말한다. 즉, 어떤 일을 수행하는 알고리즘이 여러가지 일때, 동작들을 미리 전략으로 정의함으로써 손쉽게 전략을 교체할 수 있는, 알고리즘 변형이 빈번하게 필요한 경우에 적합한 패턴이다. 전략 패턴 구성 요소 전략 패턴을 이루는 구성 요소는 다음과 같다. 전략 알고리즘 객체들(concrete strategy) : 알고리즘, 행위, 동작을 객체로 정의한 구현체 전략 인터페이스 : 모든 전략 구현제에 대한..

    일급 객체(first-class object) 란?

    일급 객체 란? 보통 자바의 람다 표현식(Lambda Expression)을 배우다 보면 '일급 객체' 라는 단어를 접하게 되는데, 대체 무엇을 말하는 건지 와닿지 않을 것이다. '일급' 이란 뜻은 일급 시민 처럼 무슨 혜택을 받는 다는 뜻이 아니라, 사용할 때 다른 요소들과 아무런 차별이 없다는 것을 뜻한다. 그리고 보통 일급 객체를 아래 3가지 조건을 충족한 객체를 일컫는다. 모든 일급 객체는 변수나 데이터에 담을 수 있어야 한다. 모든 일급 객체는 함수의 파라미터로 전달 할 수 있어야 한다. 모든 일급 객체는 함수의 리턴값으로 사용 할수 있어야 한다. 일급 객체는 어떠한 특정 언어에 국한되는 문법 단어가 아니다. 프로그래밍 언어론의 개념으로서, 자바나 자바스크립트 외에 다양한 언어가 이 일급 객체 ..

    [OOP]  객체 지향 키워드 (추상화,캡슐화,상속,다형성)

    [OOP] 객체 지향 키워드 (추상화,캡슐화,상속,다형성)

    객체 지향 프로그래밍 키워드 5가지 클래스, 인스턴스, 객체 추상화 캡슐화 상속 다형성 1. 추상화(Abstraction) 추상화란(자료의 추상화, 추상클래스 & Interface)? 우리는 보통 알고는 있지만 정확하게 표현하기 힘든 것들을 중요한 부분이나 특징점을 잡아 설명하고는 한다. 이것을 '추상적으로 표현한다' 즉 '추상화한다' 라고 하는데 객체지향의 개념에서 추상화는 중요한 개념 중에 하나이다. 컴퓨터 과학에서의 추상화는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것을 말한다. 객체 지향 관점에서의 추상화는 클래스를 정의할 때, 불필요한 부분들을 생략하고 객체의 속성 중 중요한 것에만 중점을 두어 간략화 하는 것, 즉 클래스들의 중요하고 공통된 성질들을 추출하..

    [HTTP] HTTPS와 SSL 인증서

    HTTPS(Hyper Text Transfer Protocol Secure)란? HTTP는 Hypertext Transfer Protocol의 약자다. 즉 Hypertext 인 HTML을 전송하기 위한 통신규약을 의미한다. HTTPS에서 마지막의 S는 Over Secure Socket Layer의 약자로 Secure라는 말을 통해서 알 수 있듯이 보안이 강화된 HTTP라는 것을 짐작할 수 있다. (HTTPS는 HTTP에 데이터 암호화가 추가된 프로토콜) HTTPS는 SSL(Secure Socket Layer)이라는 프로토콜을 사용해 주고 받는 정보를 암호화한다. 이후 SSL은 TLS (Transport Layer Security)로 발전되어 현재는 SSL/TLS라는 단어를 혼용해서 사용하고 있다. HTT..

    [HTTP] HTTP Status Code

    HTTP 상태 코드란? 클라이언트가 보낸 HTTP 요청에 대한 서버의 응답 코드로, 상태 코드에 따라 요청의 성공/실패 여부를 판단한다. HTTP 상태 코드 분류 상태 코드의 첫 번째 숫자에 따라 크게 5가지로 분류 됩니다. 1xx (Informational) : 요청을 받았으며 작업을 계속한다 2xx (Successful) : 클라이언트가 요청한 동작을 성공적으로 수신하여 이해했고 성공적으로 처리하였다. 3xx (Redirection) : 요청을 완료하기 위해 추가 작업 조치가 필요하다 4xx (Client Error) : 클라이언트의 요청에 문제가 있다. 5xx (Server Error) : 서버가 유효한 요청의 수행을 실패했다. HTTP 상태 코드 상세 자주 사용되는 HTTP 상태 코드 위주로 정리..

    [HTTP] HTTP 메서드 종류 & 요청 흐름

    HTTP Method 종류 HTTP 메서드란 클라이언트와 서버 사이에 이루어지는 요청(Request)과 응답(Response) 데이터를 전송하는 방식을 말한다. 쉽게 말하면 서버에 주어진 리소스에 수행하길 원하는 행동, 서버가 수행해야 할 동작을 지정하여 요청을 보내는 방법이다. HTTP 메소드의 종류는 총 9가지가 있다. 이 중 주로 쓰이는 메소드는 5가지로 보면 된다. 주요 메소드 GET : 서버에 존재하는 데이터 조회 요청하는 것. CRUD로 따지면 R. POST: 서버에 데이터를 처리하는 것을 요청(주로 생성). CRUD로 따지면 C. PUT : 리소스를 대체(덮어쓰기), 해당 리소스가 없으면 생성. CRUD로 따지면 C,U PATCH : 리소스 부분 변경 (PUT이 전체 변경, PATCH는 일부..

    [HTTP] HTTP란?

    HTTP(Hyper Text Transfer Protocol)란? HTTP(Hyper Text Transfer Protocol)란 서버-클라이언트 모델을 따르면서 request/response 구조로 웹 상에서 데이터를 주고 받을 수 있는 프로토콜(규칙)이다. TCP/IP 기반으로 작동하며, HTTP의 가장 큰 특징은 Connectionless와 Stateless 가 있다. 또한TCP/IP socket을 이용해서 연결된다. 웹문서간에 링크를 통해 연결할 수 있는 프로토콜이며, 문서뿐 아니라 다음과 같은 여러 종류의 데이터들을 폭 넓게 전송할 수 가 있다. ​HTML, TEXT 이미, 음성, 영상, 파일 JSON, XML(API) 거의 모든 형태의 데이터가 전송 가능 서버간에 데이터를 주고 받을 때 대부분..