본문 바로가기

전체 글62

코드스테이츠 8주차 회고 회고에 앞서 회고에 대한 회고를 진행해야 할 듯 하다. 회고에 대한 작성 필요성을 최근에 다시 느끼게 되었다. 회고에 대한 회고 계획했던 회고록에 대한 방향 2주마다 회고록을 작성하며 자신을 돌아보려함 이에 대한 이행 여부 의도한 대로 이행되지 않음. 문제점 파악 및 개선방안 변명처럼 들릴지 모르지만 아주 많이 바빴다. 이머시브 들어오고 나서 이전 내용들과 동일한 성취도를 달성하기 위해 소요되는 시간이 현저히 늘어났음을 느꼈다. 개념적인 내용에 대해 충분한 이해를 요구하고, 이를 통하여 어떻게 풀어나갈지 논리회로 구성에 대한 사고력이 중요해져 그렇다고 생각한다. 아래는 회고작성에 대한 나의 문제점들이다. 시간관리가 제대로 되고 있지 않는것 같다. 시간이 모자라 무언가를 하나 미루거나 포기하게되고, 지금 .. 2020. 8. 8.
JavaScript 다중상속에 대한 고찰 JavaScript는 객체지향에 맞게 구성할 수 있음에도 불구하고 Class기반 언어가 아닌 prototype기반 언어이기에 완벽한 객체지향이 아니라고 부르는 사람도 있다. 그중 하나의 키워드가 다중상속 이다. 다중상속이 무엇인가 A클래스 A를 상속받은 B클래스 B를 상속받은 C클래스 D클래스 D를 상속받은 E클래스 E를 상속받은 F클래스 이때 C클래스와 F클래스 모두를 상속받는 G클래스가 있다면 G클래스는 다중상속을 하고있는 것이다. 하지만 prototype에 대한 이해도가 어느정도 있다면 여러가지 편법을 동원해서 다중상속을 구현할 수 있을것이라고 생각하게 되었다. 이 아래에서 등장하는 여러 명칭은 Python과 JavaScript가 섞여있다. 필자도 이를 착각하고 혼용하는 경우가 많으니 잠시 설명하고.. 2020. 8. 2.
JavaScript - class 다중상속 다중상속이란 일반적인 상속(prototype chain)은 다음과 같이 구성되어있다. A클래스 A를 상속받은 B클래스 B를 상속받은 C클래스 C를 상속받은 D클래스 하지만 간혹 특수한 상속이 필요할 때가 존재한다. A클래스 A를 상속받은 B클래스 B를 상속받은 C클래스 D클래스 D를 상속받은 E클래스 E를 상속받은 F클래스 C클래스와 F클래스를 모두 상속받은 G클래스 JavaScript에서 이러한 유형의 상속은 불가능하다. 타언어였다면...? 타 언어들을 기준으로 다중상속이 가능한 언어들이 있다. 다만 해당 언어들도 모든것이 완벽한것이 아니다. 몇가지 규칙이 있는데 다중상속시 우선순위 되는 class가 있다. 상속받은 class에 없는 메서드 호출시 우선순위가 되는 class의 상속관계 라인에서 먼저 확.. 2020. 7. 29.
OOP - 객체지향 / 상속 객체지향이란 Object Oriented Programming 의 약자로 하나의 페러다임이다. 간단하게... 각각의 객체를 생성하는 것은 클래스이며 생성된 객체를 인스턴스라고 부른다. 인스턴스는 각각의 고유한 속성을 지니는것이 가능하다. 또, 새로운 클래스를 만들 때 이전에 만든 클래스를 상속 받을 수 있다 왜 써야 하나? 객체 지향을 사용하는 이유는 실생활의 무언가를 가장 잘 표현할 수 있기 때문이다. 감이 잡히지 않는다면 class instance 또는 Object Oriented Programming 에 대해서 real-life example 키워드와 함께 검색해 보는것을 권장한다. 예제 금형 - 클래스 빵틀 - 금형 클래스를 상속받는다. 붕어빵 틀 - 빵틀 클래스를 상속받는다. (모양 이라는 속성.. 2020. 7. 29.
2020.07.23 - JavaScript에서 Stack과 Queue의 구현 - 2 (Stack, Queue에 관한 내용은 이 페이지에서 상세하게 설명하지 않는다. 추후 정리하여 JavaScript 카테고리에 업로드 예정.) Queue 구현을 위한 생각 배열 (Array)를 사용하지 않고 구현하자. (pop, unshift, push 등의 메서드 사용시 바로 해결되버린다..) Queue클래스 Stack클래스를 정의하여 front, rear, storage라는 인스턴스 속성을 만들어준다. front는 가장 먼저 들어온 값의 키값(빼낼 때의 키값)을 가르키는 포인터 역할이다. rear는 가장 나중에 들어온 값의 키값(추가 되어야 할 키값)을 가르키는 포인터 역할이다. storage는 빈 오브젝트를 넣어준다. enqueue메서드 Queue에 전달인자를 추가하는 메서드 새로 들어온것은 가장 뒤.. 2020. 7. 24.
2020.07.23 - JavaScript에서 Stack과 Queue의 구현 - 1 Stack과 Queue에 대하여 JavaScript에서 이를 구현해보기로 했다. (Stack, Queue에 관한 내용은 이 페이지에서 상세하게 설명하지 않는다. 추후 정리하여 JavaScript 카테고리에 업로드 예정.) Stack 구현을 위한 생각 배열 (Array)를 사용하지 않고 구현하자. (pop, unshift, push 등의 메서드 사용시 바로 해결되버린다..) Stack클래스 Stack클래스를 정의하여 top, storage라는 인스턴스 속성을 만들어준다. top은 들어올 값의 키값(추가될 때의 키값)을 의미하게 만들고 이는 곧 Stack의 크기가된다. storage는 빈 오브젝트를 넣어준다. push메서드 Stack에 전달인자를 추가하는 메서드 새로 들어온것이 가장 위에 추가된다. 전달인자.. 2020. 7. 24.
복잡도 - 시간복잡도 복잡도란? 복잡도는 우리가 정의한 알고리즘(로직, 함수 등)이 입력값에 대한 연산을 수행하는데 있어서 걸리는 시간, 차지하는 공간 에 대한 상관관계를 나타낸 것으로시간복잡도 와 공간복잡도 로 나누게 된다. 시간복잡도 - 표기 일반적으로 시간복잡도를 표기할 때에는 점근표기법중 하나인 대문자O표기법 (Big-O Notation)이 사용된다. - $O(1)$, $O(n)$ 등 으로 표기한다. 표기할때에 유의 할 점은 최고차항을 제외한 모든 항과, 최고차항의 계수는 무시한다. 예를들어 함수가 n개의 요소에 대한 연산을 처리할때에 걸리는 연산횟수가 $4n^2+2n+1000$ 와 같다면 이에 대한 시간복잡도는 $O(n^2)$으로 표현한다. 아래는 모두 같은기능 (0부터 n까지(n을 포함)를 더한 값을 돌려주는)을 .. 2020. 7. 19.
재귀호출 함수의 재귀호출이란 이름에서 유추할 수 있듯이 자기 자신을 호출하는 행위이다. 이때에 주의해야 할 점은 함수가 무한루프에 빠지지 않도록 작성 해줘야 한다. 사용법 사용방법 자체는 매우 간단하다. 함수 내에서 자기 자신을 호출하는 행위가 존재하면 된다. 위에서 언급한대로 무한루프에 빠지지 않도록 탈출구문을 작성해준다. function logHi(num) { if (num === 0) {return} console.log('hi') logHi(num - 1) } logHi(3) // hi // hi // hi // undefined (return 값이 undefined일 뿐이다.) 입력받은 num의 수만큼 'hi'를 console.log를 통하여 출력하는 함수이다. 정말 별것 아닌 함수처럼 보이지만 이처럼 .. 2020. 7. 18.
함수의 메서드 - call, apply, bind this에서 잠깐 튀어나왔던 call, apply, bind에 대해 다루는 글이다. 함수를 호출하는 일반적인 방법은 함수뒤에 전달인자를 소괄호 ( )로 묶어 호출하게된다. 이러한 방법말고 call, apply와 같이 원하는 this와 전달인자를 바인딩하여 실행하는 메서드가 있고, bind와 같이 무언가를 바인딩한 함수 자체를 돌려주는 메서드가 있다. 사용방법 함수명.call, 함수명.apply, 함수명.bind로 메서드 이기 때문에 역시 호출해줘야 한다. 각 메서드 모두 첫번째 전달인자로는 this를 받는다. 호출할 함수가 this에 관한 작업을 하지 않는다면 null, undefined등 어떤값을 넣어주어도 무방하다. 다만 undefined는 의도치 않게 들어갈 수도 있는 값이기 때문에 null을 써주.. 2020. 7. 17.