본문 바로가기

TIL ( CODESTATES)

(62)
pseudoclassical vs.ES 6 class 인스턴스화와 상속 (sprint) 코드스테이츠 immersive 4주차 과정 'inheritance patterns'에 대해 학습한 내용을 궁금했던 점들과 함께 정리해 보았다. 스프린트 내용 클래스 structur와 정해진 스펙에 따라 각 클래스를 구현한다. ES 6 Class Instantiation & Inheritance class Grub { constructor(age, color, food){ // 질문 1. this.age = 0; this.color = 'pink'; this.food = 'jelly'; } eat() { return 'Mmmmmmmmm jelly'; } } module.exports = Grub; 질문 1. constructor에 인자를 전달하지 않아도 되나? 전달 인자로 들어가는 값이 만들어질 insta..
ES6 Class 개념, ES5 vs.ES6 instantiation and inheritance ES6 Class 파헤치기 라는 글을 읽고 참고해서 다시 정리해 보았다. 좋은 글 감사합니다. ES6 class constructor super() Class JavaScript Class는 ECMAScript 6에서 소개되었다. Class 도 함수다. 함수를 선언식과 표현식으로 정의하는 것처럼 Class도 두 가지로 정의할 수 있다. instance의 속성은 반드시 class method 내에 정의되어야 한다. Class 선언식 함수 선언과 클래스 선언의 중요한 차이점은 함수 선언의 경우 호이스팅이 일어나지만, 클래스 선언은 그렇지 않다는 것이다. 클래스를 사용하기 위해서는 클래스를 먼저 선언 해야 하며, 그렇지 않으면 ReferenceError가 발생한다. class Car { constructor(..
Instantiation Patterns : instance를 만드는 여러가지 패턴들 ES6 class 키워드가 나오기 전에는 JavaScript를 객체지향적으로 사용하기 위한 다양한 시도가 있었다. 이러한 다양한 패턴 중 Pseudoclassical한 방법을 자세히 다루려고 한다. 그 중 Pseudoclassical한 방법은 ES6 class 키워드를 이용한 방법과 내부적으로 정확히 동일한 원리로 작동한다. Instantiation Patterns : JavaScript의 Class 가 나오기 전 사용하던 4가지 Class 선언 방식 1. Functional Instatiation 2. Functional Shared Instantiation 이전의 Functional 방식은 instance를 생성할 때마다 모든 메소드를 someInstanc..
OOP (Object Oriented Programming), concept, prototype 프로그래밍 언어 3 Machine Languages Assembly Languages HighLevel Languages ( 인간의 언어와 가까움, JavaScript) Machine Languages 0,1로만 조합 사람이 Machine Language로 프로그래밍을 하기는 어려움 Assembly Languages and 나 or 처럼 미리 저장되어 있는 기능들이 몇 개 있다. 컴퓨터가 프로세스하려면 machine language로 변환해야 한다. High-Level Languages 어셈블리어로 미리 함수를 만들어 놓고 그 함수를 사용할 수 있게 만든 언어 C : 현재에서 보면 어셈블리어에 가까움 java, C는 컴파일을 하지만 JavaScript는 하지 않음 java나 C는 컴파일을 거쳐서 어셈블리..
Complexity Analysis - 시간복잡도, Big-O Notation 복잡도 분석 어떤 문제를 푸는데 시간과 공간이 얼마나 필요한지에 대한 분석 시간과 공간 복잡도가 그 알고리즘이 얼마나 효율적인지를 나타내기 때문에 중요하다. 여기서는 시간 복잡도에 관한 내용만 다룬다. 아래 그림을 참고하여 두 수의 차가 가장 큰 수를 찾아보자. 방법 1. : 모든 숫자를 비교한다. 방법 2. : 가장 큰 수와 가장 작은 수를 찾은 후 (모든 수를 돌면서 가장 큰지/작은지 확인해야함) 비교한다. 방법 3. : 숫자가 정렬되어 있다면 가장 처음, 가장 마지막 숫자만 찾아서 비교한다. 시간 복잡도를 나타내는 방법 : Big-O Notation 보는 법 : 계산한 연산에서 상수를 제거하고 가장 큰 지수만 적어준다. O(1) : constant execution time : 일정한 시간을 유지한..
자료 구조 구현하기 - BST, graph, tree BST : Binary Search Tree pseudocode && implementation class BinarySearchTreeNode { constructor(value) { this.value = value; this.left = null; this.right = null; } 1. insert(value) 전달 인자로 받은 value 값이 현재 노드의 값보다 작으면 this.left 가 있는지 확인해서 있으면 this.left에 대해서 재귀하고 없으면 this.left에 새 노드를 추가한다. 전달 인자로 받은 value 값이 현재 노드의 값보다 크면 this.right 가 있는지 확인해서 있으면 this.right에 대해서 재귀하고 없으면 this.right에 새 노드를 추가한다. inse..
자료구조 구현하기 - queue, stack, linked list, hash table addToTail(value) { // 마지막에 값을 추가한다. // 만약 size가 0이면 처음 들어간 value가 head, next = null. size++. if(this._size === 0) { this.head = new Node(value); this._size++; } //size가 1이면 tail 값 변경. 이후 헤드의 next 가 곧 tail이 됨. size++ // size가 1일 때와 그 이상일 때를 분리한 이유는 // size = 0 으로 비어 있을 경우 : head = value, next = null, tail = null // size = 1 로 head가 존재할 때 : head = 이전 value, next = value, tail = value; // size >= 2..
Data Structure - Graph, Tree graph Graph는 Vertex와 Edge의 쌍이다. V는 vertex(혹은 node, 정점)의 집합(set)이고 E는 edge(간선)의 집합이다. vertex는 독립된 개체로 동그라미로 표현하고 edge는 두 vertex를 잇는 개체로 선이나 화살표가 있는 선으로 표현한다. 1. Directed graph 방향성이 있는 간선을 가지는 그래프 화살표가 있는 선을 사용한다. 일반적으로, 각 vertex는 숫자나 이름(알파벳)으로 구분한다. V = {1,2,3,4,5,6} edge는 두 개의 (출발 vertex, 도착 vertex)로 나타낸다. E = {(1,2,)(2,2),(2,4),(4,5),(5,4)} 2 개의 vertex에 대해 최대 2개의 간선이 존재할 수 있다. 즉, (4,5)는 (5,4) 서..