개발/개념

    [객체지향] SOLID 예제(1) - 단일 책임의 원칙(SRP)

    객체 지향 프로그래밍의 가장 중요한 원칙이라 알려진 SOLID 원칙이다. 단일 책임의 원칙 개방-폐쇄의 원칙 리스코프 치환의 원칙 인터페이스 분리의 원칙 의존성 역전의 원칙 각 원칙에 대해 알고는 있었다. 하지만, 각 원칙을 적용했을 때 어떤 장점이 있는지 말로 설명할 수 있었지만 어떻게 구현하는지 막막했다. 이번에 기회가 있어 SOLID 원칙을 다시 공부해볼 수 있었고 이해한 내용과 책을 바탕으로 예제 코드와 함께 정리하고자 한다. 아래와 같은 예시를 개선하는 과정을 통해 SOLID 원칙을 간단하게나마 이해할 수 있도록 해보자. class Person { wakeUp() { console.log('아침에 일어난다.'); } goToBathroom() { console.log('화장실로 간다.'); } ..

    [CS: 운영체제] 컴파일러

    컴퓨터는 const a = 10;을 읽을 수 없다. 컴퓨터는 0과 1밖에 이해하지 못하기 때문이다. 나는 0과 1로만 작성된 코드를 읽을 수 없다. 나는 컴퓨터가 아니기 때문이다. 따라서, 둘을 연결하는 중간다리 역할이 필요하며, 이것이 컴파일러의 역할이다. 저급언어와 고급언어 컴퓨터는 0과 1밖에 이해하지 못한다. 기계는 일반적으로 저급 언어를 사용하며 0과 1로 구성된 기계어도 저급 언어 중 하나다. 인간이 0과 1로만 프로그래밍 하는것은 불가능에 가깝다. 이를 해결하기 위해 조금이라도 개선한 언어가 "어셈블리어"이다. 하지만, 어셈블리어도 우리가 이해하기에는 여전히 어렵다. 따라서, 이러한 단점을 보완하기 위해 인간의 가독성을 우선으로 여긴 언어들이 등장했으며 이를 고급 언어라 부른다. 고급 언어의..

    [CS: 운영체제] 프로세스 메모리 구조

    "프로그램을 실행"한다는 것의 의미는 무엇일까? 프로그램의 컴파일 프로세스는 프로그램으로부터 인스턴스화 된 것을 의미한다. 프로그램은 컴파일러가 컴파일 과정을 거쳐 컴퓨터가 이해할 수 있는 기계어로 번역되어 실행할 수 있는 파일이 되는 것을 의미한다. (쉽게 생각해서 프로그램은 실행 파일을 의미하고, 그 실행 파일을 실행하면 프로세스가 시작된다고 생각하면 된다) 프로그램의 컴파일 과정은 아래의 그림과 같다 전처리: 소스 코드의 주석을 제거하고 헤더 파일을 병합 컴파일러: 오류 처리, 코드 최적화 작업을 하며 소스 코드를 어셈블리어로 변환 어셈블러: 어셈블리어를 목적 코드로 변환시킨다. 확장자는 운영체제마다 다른데 리눅스에서는 .o이다. 링커: 프로그램 내에 있는 라이브러리 함수 또는 다른 파일들과 목적 ..

    React에 TypeScript 사용하는 방법

    리액트와 TS를 함께 사용하는 방법을 소개한다. 방법에는 새롭게 프로젝트를 시작하는 방법과 기존 프로젝트에 TS를 적용하는 방법이 있다. 1. React + TypeScript로 새로운 프로젝트 시작하기 우선, 프로젝트를 만들고 싶은 디렉토리에서 터미널을 연다. 이후 npx create-react-app 프로젝트이름 --template typescript을 입력하면 된다. 이 방법을 이용하면 기본적으로 React에 TS를 이용할 수 있으며 주의할 점은 TS의 보호를 받기 때문에 Type에 신경써야 한다는 것이다. 또한, TS의 보호를 받고 싶다면 새로운 파일을 만들 때 확장자를 .tsx로 설정해야 한다. 2. 기존 프로젝트에 TypeScript 적용하기 기존 프로젝트에 TS를 적용하고 싶다면 npm in..