반응형

Computer Science 27

스테이트 패턴(State Pattern)

스테이트 패턴 스테이트 패턴은 객체가 어떠한 동작을 수행할 때 객체의 '상태(state)'에 따라 다른 동작을 수행하도록 하는 상황에서, 객체의 상태를 직접 체크하는 것이 아닌 상태 자체를 객체화하여 상태 객체가 동작을 수행하도록 위임하는 패턴이다. 예시 게임 캐릭터를 가지고 예시를 한 번 들어보도록 하자. const val SEATING = "seating" const val STANDING = "standing" fun main(){ var player = Player() player.rightClick() player.setState(SEATING) player.rightClick() } class Player(){ private var state = STANDING fun setState(stat..

스트래티지 패턴(Stratagy Pattern)

스트래티지 패턴 스트래티지 패턴은 행위(Behavior)들을 캡슐화하여 동적으로 자유롭게 바꿀 수 있게 하여 전략(Stratagy)을 쉽게 바꿀수 있게 해주는 패턴이다. 코드에서 달라지는 부분을 찾아내어 분리시킨 뒤, 이를 캡슐화한다. 상속보다는 구성을 활용하며, 구현이 아닌 인터페이스에 맞춰서 프로그래밍 한다. 예시 어떤 게임에 셋의 캐릭터가 존재한다고 생각해보자. abstract class Player{ fun attack(){ println("공격합니다.") } fun walk(){ println("걷습니다.") } abstract fun display() } class Warrior: Player(){ override fun display(){ println("전사입니다.") } } class F..

MVC, MVP, MVVM

MVC(Model, View, Cotroller) MVC에선 소프트웨어를 세 가지 역할로 구분한다. Model -소프트웨어가 "무엇"을 할 것인지 정의한다. -비즈니스 로직, 소프트웨어에서 데이터를 처리하는 역할을 한다. -사용자에게 필요한 모든 데이터를 가지고 있어야 한다. 비즈니스 로직 : 업무에 필요한 데이터를 처리하는 응용프로그램의 일부 Controller -Model과 View사이에서 통신을 담당한다. -View를 선택하여 사용자로부터 데이터를 입력받으면 이를 Model에 전달한다. View -User Interface로서, 실제로 사용자에게 보여지는 역할을 한다. -Model이 처리한 데이터를 넘겨받아 이를 가지고 화면을 만든다. -Model을 통해 업데이트 하기 때문에 의존도가 높다. 안드로..

Computer Science 2022.01.06

OSI 7계층 (Open System Intercon)

OSI 7계층은 네트워크 통신 프로토콜을 각 기능별로 7개 계층으로 나눈것을 말한다. 통신 과정을 각 계층별로 나눈 이유, 목적은 통신이 이루어지는 과정을 단계별로 파악하기 위해서이다. 각 계층이 정해진 작업만 수행하면 흐름을 파악하기가 용이하고, 혹 통신 과정에 이상이 생겼을 때 어느 단계에서 발생했는지를 확인하여 효율적인 해결이 가능하다. OSI 7계층은 위의 7개 계층으로 되어있는데, 각 계층에 대해서 알아보도록 하자. 1계층 - 물리 계층(Physical layer) 물리 계층은 실제 장치들을 연결하기 위한 전기적, 물리적 세부 사항들을 정의한다. 이 계층에선 전송하려는 데이터가 무엇인지, 어떤 오류가 있는지는 전혀 신경쓰지 않고 단지 디지털 데이터를 그에 맞는 전기적 신호들로 변환, 변조하여 전..

Computer Science 2021.12.29

쿠키(Cookie), 세션(Session), 캐시(Cache)

HTTP는 무상태성(Stateless)과, 비연결성(Connectionless)의 특징을 가지고 있다. 즉, 서버와 클라이언트가 통신할 때 서버는 클라이언트의 어떠한 상태 정보도 가지지 않는다. 때문에 서버와 클라이언트가 두 번 통신한다고 했을 때, 첫 번째 통신에서 데이터를 주고받아도 두 번째 통신에서 해당 데이터를 유지하지 않는다. 또한 서버는 클라이언트로부터 Request를 받고, 이에 대한 Response를 전송한 뒤 해당 클라이언트와 연결을 끊게 된다. 하지만 이러한 특징은 실제 통신상황에서 사용자에게 많은 불편함을 줄 수 있다. 예를 들어 홈페이지에 로그인하는 경우 다른 페이지로 이동할 때마다 다시 로그인을 해야 된다면 누가 그런 사이트를 이용할까 이러한 상황에 대비하기 위하여 서버와 클라이언..

Computer Science 2021.12.18

싱글톤 패턴(SingleTon Pattern)

싱글톤 패턴 싱글톤 패턴은 특정 클래스의 인스턴스를 최초 한 번만 생성하여 이후에 다른곳에서 해당 클래스의 생성자를 호출하더라도 새롭게 객체를 생성하는것이 아닌 최초로 생성된 객체를 반환하여 프로그램 전역에서 동일한 하나의 객체에 접근하도록 하는 디자인 형태이다. 장점 ▶ 고정된 메모리 영역을 한 번만 할당하여 사용하여 하나의 객체만 생성하기 때문에 메모리 낭비를 줄일 수 있다. ▶ 싱글톤 패턴으로 만들어진 클래스의 인스턴스는 전역 인스턴스이기 때문에 데이터 공유가 용이하다. ▶ 최초 생성 이후에는 호출시 메모리에 이미 생성된 객체를 가져오기 때문에 객체 로딩 시간이 줄어든다. ▶ 인스턴스가 하나만 생성되는것을 보장한다. 안드로이드 같은 경우 SharedPreference를 사용할 때 이러한 싱글톤 패턴..

프레임워크(Framework)와 라이브러리(Library)

프레임워크와 라이브러리는 프로그래밍 빼놓을 수 없는 요소들이다. 이 글에서는 프레임워크와 라이브러리가 무엇인지에 대해서 확인해보자. 라이브러리(Library) 라이브러리는 특정한 기능들을 모듈화한것이다. 간단하게 말하면 어떤 기능을 수행하기 위한 코드들의 집합이라고 할 수 있다. . 프로그래머는 사전에 만들어진 라이브러리들을 프로그래밍을 할 때 불러와서 자신이 원하는 곳에 적절이 활용하기만 하면 된다. Python에서 사용하는 NumPy, Pandas, Tensorflow등이 라이브러리에 속한다. 프레임워크(Framework) 프레임워크는 프로그래밍에서 틀, 뼈대를 말하며, 어떠한 기능을 완성하기 위한 클래스, 인터페이스들의 집합이라고 할 수 있다. 프레임워크는 말그대로 뼈대이기 때문에 프로그래밍에 있어..

Computer Science 2021.12.15

큐(QUEUE)와 스택(STACK)

이번 글에서는 큐와 스택에 대해서 알아보도록 하자. 데이터를 저장하는 방법 큐와 스택은 둘 다 데이터를 저장하는 자료구조를 이야기한다. 이때 데이터를 저장하고, 꺼낼 때의 방식에 따라 둘의 차이가 나타난다. 큐(QUEUE) 먼저, 큐는 선입선출(FIFO, First In First Out)의 방식을 사용하는 자료구조로, 말 그대로 먼저 들어간 데이터가 먼저 나오게 된다. 이때 데이터 하나를 큐에 집어넣는 것을 Enqueue, 반대로 데이터 하나를 큐에서 꺼내는 것을 Dequeue라고 한다. 또한 큐에서 가장 먼저 들어간 데이터가 위치한 가장 앞단을 Front라고 부르며 사진에는 Back이라고 나와있지만, 데이터가 마지막에 들어가는 가장 뒷단은 Rear라고 부른다. 간단한 예로 사람들이 줄을 서는 것을 예..

Computer Science 2021.12.11

배열(Array)과 리스트(List)

이번 글에서는 배열과 리스트, 그리고 둘의 장단점과 이를 통해 둘의 차이를 알아보도록 하자. 배열(Array) 먼저 Array에 대해서 알아보자. Array는 여러 개의 데이터들을 효율적으로 저장/관리/사용하기위해 사용되는 자료형이다. Array는 같은 자료형을 가진 데이터들을 묶어서 저장하는데, 이 각각의 데이터들을 배열 요소(Element)라고한다. 또한 이 각각의 Element들의 위치에 번호를 붙여서 그 위치에 Access하는 구조로 되어있는데, 이 번호를 Index라고 한다. Array의 주요 특징은 메모리상에 데이터들이 `연속적`으로 저장되어있다는 점과 선언시에 크기를 지정해주어야한다는 점이다. 이를 그림으로 표현하면 아래와 같다. 위 그림은 int형의 크기 5개짜리 배열을 선언하였을 때를 표..

Computer Science 2021.06.07

프로세스(Process)와 스레드(Thread)

자 이번 글에서는 Thread와 Process가 뭔지, 둘의 차이는 무엇인지에 대해서 알아보도록 하자. Program? 이를 위해서는 먼저 Program에 대해서 정의하고 가야 할 텐데, 나무위키에 따르면 Program이란 `어떤 문제를 해결하기 위하여 그 처리 방법과 순서를 기술하여 컴퓨터에 주어지는 일련의 명령문 집합체를 뜻한다.` 라고 한다. 우리가 PC에서 사용하는 게임, 메모장, 브라우저 등등이 모두 프로그램이다. 예를 들면 우리 머릿속에는 `밥먹기.` 라는 Program이 내장되어있다. 이 Program에는 `젓가락 들기`, `숟가락 들기`, `밥 뜨기`, `밥 입에 넣기` 등의 명령문들이 존재한다. 즉, 우리라는 사람 자체가 여러 가지 Program을 내장하고 있는 PC라고 할 수 도 있을 ..

Computer Science 2021.06.06
반응형