스터디

    싱글턴 패턴 (Singleton Pattern)이란?

    싱글턴 패턴 (Singleton Pattern)이란?

    싱글턴 패턴이란? 특정 클래스의 인스턴스가 하나만 만들어지도록 해 주는 패턴 이러한 싱글턴 패턴을 사용하면, 하나의 인스턴스만 생성되도록 할 수 있습니다. 설정 객체, Connection Pool, Thread Pool 등과 같이 하나의 인스턴스만 필요한 경우, 여러 개의 인스턴스가 생성되지 않도록 해서 자원이 불필요하게 사용되지 않도록 할 수 있는거죠. 고전적 싱글턴 패턴 고전적인 싱글턴 구현은 간단합니다. 생성자의 접근 제어자(Access Modifier)를 private로 하여, 외부에서 접근하지 못하도록 하고, getInstance()와 같은 메서드를 통해 정해진 인스턴스를 반환하도록 하면 돼요. public class Singleton { // 하나뿐인 인스턴스를 저장하는 static 변수 pr..

    데코레이터 패턴(Decorator Pattern)이란?

    데코레이터 패턴(Decorator Pattern)이란?

    데코레이터 패턴(Decorator Pattern)으로 객체에 추가 요소를 동적으로 더할 수 있습니다. 데코레이터를 사용하면 서브 클래스를 만들 때보다 훨씬 유연하게 기능을 확장할 수 있습니다. 커피 전문점의 주문 시스템을 예로, 데코레이터 패턴을 단계 별로 설명드리겠습니다. 1단계. 간단한 주문 시스템 먼저, 가장 간단한 구현입니다. Beverage 추상 클래스가 있고, 매장에서 판매되는 모든 음료는 이 클래스의 서브 클래스가 됩니다. 그리고, Beverage 추상 클래스에는 getDescription(), getCost(), getName()이라는 추상 메서드가 있습니다. 그래서, 모든 음료는 세 개의 메서드를 모두 구현해야합니다. getDescription()은 “가장 훌륭한 다크 로스트 커피”와 같..

    22.11.15 SSAFY 스터디 CS 발표 - 디자인 패턴 (전략 패턴)

    22.11.15 SSAFY 스터디 CS 발표 - 디자인 패턴 (전략 패턴)

    ❓ 전략 패턴 (Strategy) 객체들이 할 수 있는 행위 각각에 대해 전략 클래스를 생성하고, 유사한 행위들을 캡슐화 하는 인터페이스를 정의하여, 객체의 행위를 동적으로 바꾸고 싶은 경우 직접 행위를 수정하지 않고 전략을 바꿔주기만 함으로써 행위를 유연하게 확장하는 방법을 말합니다. 전략 패턴도 마찬가지로 단계별로 설명하겠습니다. 1단계 (상속을 이용한 Simple Duck) 오리 시뮬레이션 게임을 예로 들겠습니다. quck() : 꽥꽥거리는 소리를 내는 메서드 swim() : 헤엄치는 메서드 display() : 오리의 고유한 모양을 화면에 보여주는 메서드 Duck이라는 추상 클래스가 있고, 여러 유형의 오리가 Duck 클래스로부터 상속을 받습니다. 모든 오리가 꽥꽥 소리를 낼 수 있고, 헤엄을 칠..

    22.11.8 SSAFY 스터디 CS 발표 - 디자인 패턴 (템플릿 메서드 패턴)

    22.11.8 SSAFY 스터디 CS 발표 - 디자인 패턴 (템플릿 메서드 패턴)

    ❓ 템플릿 메서드 패턴이란? 템플릿 메서드 패턴은 알고리즘의 골격을 정의합니다. 템플릿 메서드를 사용하면, 알고리즘의 일부 단계를 서브 클래스에서 구현할 수 있으며, 알고리즘의 구조는 그대로 유지하면서 알고리즘의 특정 단계를 서브 클래스에서 재정의할 수도 있습니다. 템플릿 메소드는 알고리즘의 템플릿(틀)로, 일련의 단계로 알고리즘을 정의한 메서드입니다. 템플릿 메서드는 여러 단계 가운데 하나 이상의 단계가 추상 메서드로 정의되며, 추상 메서드는 서브 클래스에서 구현됩니다. 이러면, 서브 클래스가 일부분의 구현을 처리하게 하면서도 알고리즘의 구조는 바꾸지 않아도 됩니다. ❗️예 1 (커피와 홍차) 커피와 홍차는 매우 비슷한 방법으로 만들어집니다. prepareRecipe() 메서드는 알고리즘의 절차를 정의..

    22.10.11 SSAFY 스터디 CS 발표 - 컴퓨터 구조, 기억장치

    22.10.11 SSAFY 스터디 CS 발표 - 컴퓨터 구조, 기억장치

    기억장치 컴퓨터의 기억장치는 중앙처리장치 내부의 레지스터, 중앙처리장치와 직접 버스로 연결되는 주기억장치, 그리고 입출력 장치로 연결되는 보조기억장치로 구성되어 있습니다. 컴퓨터의 주기억장치(Main memory)은 주로 전원이 켜져 있을 때 실행하는 프로그램과 데이터를 저장하고, 보조기억장치(Auxiliary storage)는 영구적으로 프로그램과 데이터를 저장합니다. 주기억장치는 중앙처리장치와 온라인으로 연결되고, 보조기억장치는 오프라인으로 연결됩니다. 온라인 연결은 중앙처리장치가 필요할 때 항상 사용할 수 있다는 의미이고, 오프라인은 별도의 연결 과정을 거친 후 사용할 수 있다는 의미입니다. 레지스터는 주기억장치의 내용을 필요에 따라 임시로 중앙처리장치 안에 저장하는 용도로 사용됩니다. 주기억장치(..

    22.09.22 SSAFY 스터디 CS 발표 - 컴퓨터 구조

    22.09.22 SSAFY 스터디 CS 발표 - 컴퓨터 구조

    본 게시글의 내용은 플랫폼(시스템, 운영체제) 또는 컴파일러/인터프리터에 따라 달라질 수 있습니다. 컴퓨터 시스템 또는 컴파일러/인터프리터가 이런 방식으로 동작할 수도 있겠구나 정도로만 참조해주시면 감사하겠습니다. 👍 Word(단어) 중앙처리장치가 한 번에 엑세스 하는 데이터를 word(단어)라고 합니다. 단어의 크기는 일반적으로 바이트의 배수입니다. 그리고, 중앙처리장치 내부의 레지스터의 비트 수도 단어의 크기와 같은 것이 일반적입니다. 예를 들면, 32비트 프로세서는 내부 레지스터의 크기도 32비트, 기억장치를 엑세스 하는 단어의 크기도 32비트입니다. 데이터 버스는 시스템 구성 요소들 간에 데이터를 전달하는 경로입니다. 한 개의 신호선은 한 번에 한 비트의 정보를 전달합니다. 데이터 선이 32개라면..

    22.08.18 SSAFY 스터디 CS 발표 - Java 어셈블리어 분석

    22.08.18 SSAFY 스터디 CS 발표 - Java 어셈블리어 분석

    C언어 포인터는 왜 타입별로 구분되어 있는가? 내용 저번에 준배님이 제네릭 설명하실 때, 제가 주소의 크기는 같은데 왜 Int형 포인터와 double형 포인터를 구분하는지 질문한 적이 있습니다. 그래서 제가 C언어를 예시로 가져왔는데, 이게 어느정도 해답이 될 거 같습니다. #include int main() { int a = 300000000; // int형 변수에 300000000를 저장 double b = 3.0; // double형 변수에 3.0 저장 int * c = &a; // c는 a의 주소를 저장 double * d = &b; // d는 b의 주소를 저장 int e = a + *c; // a + (c가 가리키는 주소에 저장된 값) double f = b + *d; // b + (d가 가리키..