프로그래밍(Basic)

    [바미] Factory Method에 대해 알아봅시다.

    이번에는 Factory Method에 대해 알아보려 합니다. Factory Method의 Factory는 공장이라는 의미인데요. 이 공장은 인스턴스를 생성하는 곳이라 생각하면 됩니다. 이 공장은 전에 배웠던 Template Method패턴으로 구성되어 있습니다. 이 패턴에서는 인스턴스를 만드는 방법을 상위 클래스 측에서 결정하지만 구체적인 클래스 이름까지는 결정하지 않습니다. 구체적인 내용은 모두 하위 클래스 측에서 수행하죠. 그래서 인스턴스 생성을 위한 Framework와 실제의 인스턴스 생성의 클래스를 분리해서 생각 할 수 있게 됩니다. 이제 예제 프로그램을 만들어봅시다! 이번에는 사원증을 만드는 프로그램을 만들어 볼 것인데요. 사원증을 만들기 위해 필요한 공장을 만들어 봅시다. 클래스 다이어그램은 ..

    [바미] 템플릿 메소드(Template Method) 패턴에 대해 알아봅시다.

    안녕하세요. 이번에는 템플릿 메소드에 대해 알아보려 합니다. 먼저 템플릿은 쉽게 말해 일정한 틀, 형식을 의미합니다. 붕어빵틀을 흔히 예로 드는데요. 이런식의 틀만 있을 때 내용물만 조금씩 변경 해주기만 하면 다양한 붕어빵을 만들 수 있을 겁니다. 또 나만의 붕어빵으로도 만들 수 있겠죠? ^_^ 이 처럼 이번에 살펴볼 템플릿 메소드 패턴은 이러한 템플릿의 기능을 가진 패턴인데요. 상위 클래스 쪽에 템플릿에 해당하는 메소드가 정의되어 있고, 그 메소드의 정의 안에는 추상 메소드가 사용되고 있습니다. 그래서 상위 클래스의 프로그램만 보면 추상 메소드를 어떻게 호출 하고 있는지 알 수 있지만 그 추상 메소드가 어떤 처리가 수행 되는지는 알 수 없어요. 추상 메소드를 실제로 구현하는 것은 하위 클래스 인데요. ..

    [바미] Adapter 패턴에 대해 알아봅시다.

    흔히 어댑터 패턴을 설명할 때 위의 어댑터의 역할을 예시로 많이 드는데요. 직류 15볼트로 동작하는 스마트폰을 교류 120볼트의 AC전원에 연결한다고 가정해볼게요. 이 때 AC 어댑터라는 장치를 사용하게 되는데요. AC 어댑터는 가정용 전원으로 제공되고 있는 교류 120볼트를 지금 필요한 직류 15볼트로 교환해 줍니다. 제공되고 있는 것과 필요한 것 사이를 연결 해주는 것이 바로 어댑터의 역할인데요. 어댑터의 사전적인 의미는 개조(adapt)시키는 것이라는 의미입니다. 그러니까 AC 어댑터의 역할은 직류 15볼트의 컴퓨터에 교류 100볼트의 환경에 맞게 바꾸는 것을 의미하는 것이죠. 이 처럼 프로그램 개발을 하다보면 이미 제공된 것을 그대로 사용할 수 없을 때 필요한 형태로 교환하고 사용하는 일이 자주 ..

    [바미] Iterator패턴에 대해 알아봅시다.

    Java 언어에서 배열의 모든 요소를 표시하기 위해서는 아래와 같이 사용합니다. for (int i = 0; i < arr.length; i++) { Sysytem.out.println(arr[i]); } 보통 위와 같은 코드를 사용 할 겁니다. 위에서 사용 되고 있는 i를 살펴보죠. 변수 i는 처음에 0으로 초기화되어 1, 2, 3, 4,...으로 증가하게 되는데요. 그 때마다 arr[i]의 내용이 출력되죠. 이와 같은 형식의 for문은 자주 사용 하는데요. 특히 위와 같은 for문을 사용하면 변수 i가 인덱스 값이 되어 배열 안에 있는 특정 요소를 가져 올 수 있다는 점인데요. arr[0] // 0번째 요소 arr[1] // 1번째 요소 arr[2] // 2번째요소 ... arr[i] // i번째 요..

    [바미] UML에 대해 알아봅시다.

    UML UML은 Unified Modeling Language의 약자이고, 시스템을 시각화 하거나 시스템의 사양이나 설계를 문서화하기 위한 표현 방법입니다. 보통 이런식의 형태로 구성 되어 있는 것이 UML 입니다. 디자인 패턴을 다룰 때 주로 UML이 자주 등장하기 때문에 디자인 패턴에 대해 다루기전에 UML을 먼저 짚고 넘어가기 위해 UML과 관련된 글을 먼저 쓰게 되었습니다. UML이 워낙 방대하다 보니 일부분만 다뤄볼 생각입니다. UML에 대해 더 자세히 알고 싶으신 분은 아래의 링크 에 접속하시면 됩니다. Welcome To UML Web Site! CURRENT SPECIFICATION View the current UML® specification. Read more www.uml.org 클..

    [바미] Hoisting에 대해 알아보자!

    Hoisting은 어쩌면 우리가 무의식적으로 사용하고있을 수 있다. Hoisting에 특징을 알아보자 모든 변수 선언은 호이스트된다. 호이스트란, 변수의 정의가 그 범위에 따라 선언과 할당으로 분리되는 것을 의미한다. 쉽게 말하면 변수가 함수내에서 정의되었을 경우 선언이 함수의 최상위로, 함수 바깥에서 정의되었을 경우는 전역 컨텍스트의 최상위로 변경됩니다. 말로하는것보다 코드로 이해하는게 더 빠르니 코드를 봅시다. const hoisting = () => { console.log("First-Name:", name); var name = "Marcus"; console.log("Last-Name:", name); } hoisting(); // First Name : undefined // Last Nam..

    [바미] js엔진은 어떻게 동시처리를 하는지 알아보자.

    [목표] nodejs가 싱글쓰레드임에도 불구하고 비동기처리를 한다는데 어떻게해? 의문에 답해보자 nodejs가 이벤트루프기반 비동기처리를 한다는데, 이벤트루프가 대체 뭔지 알아보자 랜더링엔진 구조, 처리방식은 알아봤는데 자바스크립트 엔진은 그냥 지나간 것 같으니 이번 기회에 알아보자 [우선! 자바스크립트 엔진과 브라우저 랜더링엔진은 다르다] 랜더링엔진은 HTML과 CSS파일을 파싱하여 새로운 트리구조를 만들고 브라우저 화면에 문서를 나타내는(painting) 작업을 함 자바스크립트 엔진은 js 코드 파일을 해석하고 실행하는 인터프리터(구글의 V8과 같은 엔진) [자바스크립트 엔진 구조] 대부분의 자바스크립트 엔진은 다음과 같이 세가지 영역으로 나뉨 1) Call Stack 자바스크립트는 단 하나의 호출 ..

    [바미] Ajax 통신을 알아보자!

    [목표] 모던웹 구현에 필요한 Ajax 개념알기 Ajax 직접 구현해보는 것 마음먹기 [먼저 보면 좋은 게시글] 1) HTTP 프로토콜 자세히 알기 2) 싱글쓰레드 자바스크립트 엔진은 비동기처리를 어떻게 하는가 [Ajax란] 자바스크립트를 이용해서 비동기적으로 브라우저와 서버가 데이터를 주고 받는 방식을 말함 새로운 언어나 프레임워크, 라이브러리가 아님, 네트워크 통신 방식을 말함 Asynchronous Javascript and XML : 자바스크립트로 비동기 통신을 하고, XML 형식으로 데이터 리턴을 받는다는 뜻 XML 데이터보다 JSON 데이터 포맷을 훨씬 더 많이 사용함 자바스크립트를 통해서 서버에 요청을 하고, 서버로부터 데이터를 리턴받음 DOM을 제어해서 서버로부터 리턴받은 데이터를 가지고 ..

    [바미] Beyond OOP에 대해 알아보자.

    OOP가 나온지 20년이 되었고, 모든 개발자들이 OOP란 개념은 필수가 되었고, OOP를 해야만 하는 언어들도 많이 나타났습니다. 그 만큼 OOP는 훌륭한 개념이고, 프로그래밍 역사상 가장 훌륭한 기술이자, 가장 성공한 기술이 아닐까 싶습니다. 그럼에도 불구하고, OOP는 문제점이 점점 드러나기 시작했는데 잘 하면 좋은데 잘 하기 어렵다.는 점이죠. 이걸 잘하려면 알아야 하는 내용도 너무 많고, 숙지하고, 숙달해야 하는 부분이 너무 많기 때문이죠. 이게 단순히 지식 만으로 되지 않습니다. 이 지식을 가지고 숙달하는 과정이 필요하죠. 이 지식도 올바른 지식을 가지고 올바르게 숙달시켜야 하는데 실제 상황에서는 올바른 지식을 가진 개발자가 흔하지 않을 뿐더러 올바르게 숙달시킨 개발자도 흔치 않습니다. 그 이..