Software Engineering 37

시간복잡도(Time Complexity)

코드의 실행 시 시간이 얼마나 걸리는지 나타내는 지표로 알고리즘이 얼마나 효율적인지 나타낸다. 대표적으로 빅오메가 표기법, 빅세타표기법, 빅오표기법이 존재한다. 오메가 표기법 Big-Ω, 알고리즘이 나타낼 수 있는 최상의 경우에 사용된다. 빅세타표기법 Big-Θ, 알고리즘이 나타낼 수 있는 평균의 경우에 사용된다. 빅오표기법 Big-O, 알고리즘이 나타낼 수 있는 최악의 경우에 사용된다. ***흔히 제일 많이 쓰이는 표기법 O(1) -> O(log n) -> O(n) -> O(n^2) -> O(2^n) constant -> logarithmic -> linear -> quadratic -> exponeital 상수 -> 대수 -> 선형 -> 2차 -> 기하급수 입력된 n의 크기에 따라 실행되는 조작의 수..

자료구조(Data Structure)

자료(Data) 문자, 숫자, 소리, 그림, 영상, 단어 등의 형태로 된 의미 단위 자료를 의미 있게 정리하면 정보가 된다. 컴퓨터의 언어는 명령, 데이터로 구성되어있고, 0과 1만 이해할 수 있다. 전기가 통하면 1, 통하지 않는다면 0 //2진수 데이터로 나타나게 되어있다. 데이터 타입(Date Type) 컴퓨터에 0과 1로 저장되어있는 데이터를 인간이 사용하는 여러 가지 데이터들의 종류로 해석하기 위한 장치. 같은 이진 데이터라도 인간의 해석에 따라 다른 데이터가 될 수 있음 //ASCII Table 등 원시 타입(Primitibe type) 정수, 문자, 논리 사용자 정의 타입(Custom Type) 구조체, 객체, 클래스 등.. 결론 : 하나의 데이터를 어떻게 해석할지 정의한 것 자료구조 여러 ..

Scope & Closure In Javascript

Scope 1. 변수의 값(변수에 담긴 값)을 찾을 때 확인하는 곳을 뜻한다. 2. 변수 접근 규칙에 따른 유효범위를 뜻한다. //변수와 그 값이 어디서부터 어디까지 유효한지 판단하는 범위이다. //안쪽 Scope에서 바깥 변수/함수에 접근하는것은 가능하나, //바깥쪽 Scope에서 안쪽 변수/합수에 접근하는 것은 불가능하다 //어떤 변수의 '유효범위' 란 보통 Lifecycle(생명주기) 이라고 칭한다. //예를들어 Test 라는 함수 내에 존재하는 변수 data 의 Lifecycle 은 Test 함수 Scope 내에 존재하게 된다. 3. JavaScript는 기본적으로, 함수가 선언되는(lexical) 동시에 자신만의 Scope를 가진다. 4. 스코프는 중첩이 가능하다. //함수안에 함수를 넣을 수 ..

객체지향(OOP)의 특징 4가지

1. Encapsulation(캡슐화) 1-1 절차지향의 언어를 객체지향으로 바꾸어준다. 1-2 속성(prototype)과 기능(method)을 캡슐화 한다. //데이터와 기능을 하나의 단위로 묶음 1-3 구현 숨기기 및 동작 노출 //구현 방법은 숨기고 동작 방식만 노출시킨다. 1-4 느슨한 결합 : 언제든지 구현 수정 1-5 복잡도 감소, 재사용율 증가 ex) let age = 0; let food = 'jelly'; let color = 'pink'; //속성(property) function eat() { return 'Mmmmmmmmm jelly' } //기능(method) class Grub { constructor() { this.age = 0; this.food = 'jelly'; this..

Class 키워드를 대체하는 여러가지 방법들 In Javascript

i1. Functional let Car = function(){ let someInstance = {}; //함수 실행 시 결과가 담길 객체 선언 someInstance.position = 0; //인스턴스의 속성값posigion을 초기값 0으로 설정 someInstance.move = function(){ this.position++ } //position이 1씩 증가하는 메소드 구현 return someInstance; } let car1 = Car(); car.move() //position : 1 //생성된 객체 선언 및 사용 let Car = function(position){ let someInstance = {}; someInstance.position = position; someInst..

객체지향(OOP) in Javascript

객체 지향 프로그래밍(OOP : Object Oriented Programming) 어떠한 프로그래밍의 방식, 프로그램의 방법 하나의 모델이 되는 청사진(blueprint)를 만들고, //class(템플릿의 개념) 청사진을 바탕으로 한 객체(object)를 만드는 프로그래밍 패턴 //instance 클래스는 함수로 정의할 수 있다(ES5 version) function Car(brand, name, color){ this.brand = brand this.name = name this.color = color } //클래스 속성의 정의 Car.prototype.refuel = function(){ console.log(this.name + ' 기름을 충전합니다') } Car.prototype.drive ..

Arrow function(화살표 함수) in Javascript

화살표 함수는 보통의 함수 표현식을 축약하기 위하여 사용된다. 일반 함수와 화살표함수를 비교하기 ex1) 함수표현식 let add = function(x, y){ return x + y; } 화살표 함수로 표현하기 let add = (x, y) => x + y; //function 키워드를 화살표로 축약해서 표시할 수 있다. //함수의 본문(body)에 return 문만 있는 경우, 화살표 함수는 return을 생략할 수 있다. //return을 생략할 경우, {}(중괄호)는 사용하면 안된다. ex2) 함수 표현식 let add2 = function(x){ return x + 2; } 화살표 함수로 표현하기 let add2 = x => x + 2; //매개변수가 하나일 때 ()(소괄호) 생략이 가능하다 ..

This in Javascript

this는 함수 실행 시 호출(Invocation)방법에 의해 결정되는 특별한 객체이다. 모든함수 scope 내에서 자동으로 설정되는 특수한 식별자다. 실행되는 맥락(Execusion Context)에 따라 다르게 결정 된다. 실행됨에 따라 바인딩 패턴이 다르다. Global : 함수 실행 시가 아닌, 전역에서 this를 참조할 때 console.log(this) 바인딩 되는 객체(browser) : window //strict mode에서는 undefined ┗ 문법적으로 실수할 수 있는 부분들을 에러로 판단하게 한다. 바인딩되는 객체(node.js) : module.exports //알아만 두기 Fuction 호출 foo() //strict mode에서는 undefined ┗ 문법적으로 실수할 수 있..

Function(함수) in Javascript

함수란 지시사항의 묶음이다. // 입력 -> 함수 -> 출력의 과정으로 이루어져있다. // 어떤 기능을 할 때의 가장 작은 기능의 단위 함수 선언식 function myFunction(input) { console.log(input); }; //input 함수 표현식 let myFunction = function(input){ console.log(input); }; // 여기서의 input은 매개변수(parameter)가 된다. // 매개변수란 특별히 함수에서 사용 될 입력 값으로, //입력에 따라 바뀔 수 있는 변수지만 let 등의 키워드 없이 사용 가능하다. 함수의 호출 myFunction(study); // study //input대신에 study를 넣은 결과를 출력한다. //study는 전달인자..