사내에서 디미터 법칙을 주제로 작은 세미나를 준비했었는데, 그 내용을 정리해 보았습니다. Table Of Contents 디미터 법칙(Law Of Demeter) 결합도 통제(Coupling Control) 정보 은닉(Information Hiding) 메시지와 인터페이스 참고 자료(Reference) 디미터 법칙 위키피디아에서는 디미터 법칙에 대해 다음과 같이 정의하고 있다. 💡 The Law of Demeter (LoD) or principle of least knowledge is a design guideline for developing software, particularly object-oriented programs. In its general form, the LoD is a specif..
객체지향
이번 포스팅에서는 OOP에 대한 내용을 마지막으로 정리해 보고자 한다. 상속 상속이란 다른 클래스의 특성을 내려 받는 것을 의미한다. 부모 클래스와 자식 클래스로 이루어지며 자식 클래스는 부모 클래스의 멤버변수와 멤버 메서드, 소멸자를 가진다. 또한 자식 클래스는 멤버 변수 및 메서드를 추가할 수 있다. // Animal.h class Animal { public: Animal(int age); private: int mAge; }; // Cat.h class Cat : public Animal { public: Cat(int age, const char* name); private: char* mName; }; // Cat.cpp Cat::Cat(int age, const char* name) : An..
지난 포스팅에 이어서 C++의 개체 지향 프로그래밍 내용을 정리해 보고자 한다. 복사 생성자 복사 생성자는 나와 같은 클래스에 있는 개체를 매개변수로 받는 생성자이다. 아래처럼 선언하고 구현할 수 있다. // Vector.h class Vector { public: Vector(const Vector& other); private: int mX; int mY; }; // Vector.cpp Vector::Vector(const Vector& other) : mX(other.mX) , my(other.mY) { } 같은 클래스에 속한 다른 개체를 이용하여 새로운 개체를 초기화한다. 코드에 기본 생성자가 없을 경우 컴파일러가 자동으로 기본 생성자를 만들어 주는 특성이 있다고 했었는데, 복사 생성자도 마찬가지..
오늘은 작동 위임에 대해서 정리해 보려고 한다. 이 책 Part 1의 마지막 챕터이다. 지난 프로토타입 에 대한 포스팅에서 프로토타입이 어떠한 역할을 하는지에 대해서 자세하게 알아보았다. 한 마디로 요약을 해 보면 [[Prototype]] 체계는 한 객체가 다른 객체를 참조하기 위한 내부 링크이며, 엔진은 이 링크를 따라 연결된 객체에 특정 프로퍼티/메서드가 있는지를 체크한다. 이와 같이 자바스크립트의 무한한 가능성을 이끌어 낼 가장 중요한 핵심 기능이면서 실질적인 체계는 전적으로 '객체를 다른 객체와 연결하는 것'에서 비롯된다. 위임 지향 디자인 [[Prototype]]의 사용방법을 쉽게 이해하기 위해서는 [[Prototype]]이 클래스와 근본적으로 다른 디자인 패턴이라는 사실을 인지해야 하며, 기존..
이번 포스팅에서는 자바스크립트 클래스에 대해서 정리해 보려고 한다. 클래스 이론 클래스와 상속은 특정 형태의 코드와 구조를 형성하며 실생활 영역의 문제를 소프트웨어로 모델링 하기 위한 방법이다. 객체 지향 또는 클래스 지향 프로그래밍에서 데이터는 자신을 기반으로 하는 실행되는 작동(behavior)과 연관되므로 데이터와 작동을 함께 잘 감싸는(캡슐화) 것이 올바른 설계라고 강조한다. 예를 들어, 일련의 문자들은 보통 String이라는 단어를 나타낸다. 여기서 데이터는 문자들인데, 우리는 이 데이터를 가지고 원하는 작업을 하는 것이 관심사이므로 데이터에 적용 가능한 작동들을 모두 String 클래스의 메서드로 설계한다. 그래서 어떤 문자열이 주어지더라도 데이터와 작동이 잘 포장된 String 클래스의 인스..
지난번 포스팅에 이어서 타입스크립트의 클래스와 인터페이스에 대해서 조금 더 정리해 보려고 한다. ㅎㅎ 오버라이딩(Overriding) 오버라이딩은 부모 클래스에 정의된 메서드를 자식 클래스에서 새로 구현하는 것을 일컫는 개념이다. 부모 클래스에서 오버라이딩을 당하는(?) 메서드를 오버라이든 메서드 라고 하고, 자식 클래스에서 오버라이딩된 메서드를 오버라이딩 메서드라고 했을 때, 오버라이딩이 이루어지기 위해서는 다음 두 가지의 조건을 만족해야 한다. 조건 1. 오버라이든 메서드의 매개변수 타입은 오버라이딩 메서드의 매개변수 타입과 같거나 상위 타입이어야 한다. (단, 오버라이딩 메서드의 매개변수 타입이 Any 이면 예외) 조건2. 오버라이든 메서드의 매개변수 갯수가 오버라이딩 메서드의 매개변수 갯수와 같거..
타입스크립트란? 타입스크립트는 MS에서 개발하고 관리하는 오픈소스 프로그래밍 언어로 어떤 브라우저나 호스트, 운영체제에서도 동작한다. 타입스크립트는 자바스크립트의 상위 집합으로서 ECMA의 최신 표준을 충분히 지원한다. 타입이라는 특징을 가지고 ES7이하의 표준을 포함하고 있다. 타입스크립트는 ES5를 포함하는 집합이기 때문에 기존의 ES5 자바스크립트 문법을 그대로 사용할 수 있다. 또한, ES6의 새로운 기능들을 사용하기 위해 Babel과 같은 별도 트랜스파일러를 사용하지 않아도 ES6의 새로운 기능을 기존의 자바스크립트 엔진에서 사용할 수 있다. 타입스크립트의 장점은 정적 타입 언어(static type language)이기 때문에 컴파일 시 시간이 조금 걸리더라도 안정성을 보장한다는 점이다. 자바..