CS (69) 썸네일형 리스트형 25장 클래스(3) 2023년 4월 26일 448p~468p 25.8 상속에 의한 클래스 확장 상속에 의한 클래스 확장은 프로토타입 기반 상속과는 다른 개념이다. 프로토타입 기반 상속은 프로토타입 체인을 통해 다른 객체의 자산을 상속받는 개념이지만, 상속에 의한 클래스 확장은 기존 클래스를 상속받아 새로운 클래스를 확장하여 정의하는 것이다. 클래스는 상속을 통해 기존 클래스를 확장할 수 있는 문법이 기본적으로 제공되지만 생성자 함수는 그렇지 않다. 상속에 의해 확장된 클래스 Bird를 통해 생성된 인스턴스의 프로토타입 체인은 아래와 같다. 상속에 의한 클래스 확장은 코드 재사용 관점에서 매우 유용하다. class Animal { constructor(age, weight) { this.age = age; this.weigh.. 25장 클래스(2) 2023년 4월 25일 435p~448p 25.6 클래스의 인스턴스 생성 과정 1.인스턴스 생성과 this바인딩 new 연산자와 함께 클래스를 호출하면 암묵적으로 빈 객체(인스턴스)가 생성된다. 빈 객체는 this에 바인딩된다. 2.인스턴스 초기화 constructor 내부의 코드가 실행되며 this에 인스턴스 프로퍼티를 추가한다. 이로써 빈 객체 즉, 인스턴스에 프로퍼티가 추가되어 인스턴스를 초기화된다. 3.인스턴스 반환 클래스의 모든 처리가 끝나면 완성된 인스턴스가 바인딩된 this가 암묵적으로 반환된다. 인스턴스 프로퍼티는 언제나 public하다. class Person { // 생성자 constructor(name) { // 1. 암묵적으로 인스턴스가 생성되고 this에 바인딩된다. consol.. 25장 클래스(1) 2023년 4월 24일 417p~434p 25장 클래스 25.1 클래스는 프로토타입의 문법적 설탕인가? 자바스크립트는 프로토타입 기반 객체지향 언어다. 프로토타입 기반 객체지향 언어는 클래스가 필요 없는(class free)객체지향 프로그래밍 언어다. ES5에서는 클래스 없이도 아래와 같이 생성자 함수와 프로토타입을 통해 객체지향 언어의 상속을 구현할 수 있다. // ES5 생성자 함수 var Person = (function () { // 생성자 함수 function Person(name) { this.name = name; } // 프로토타입 메서드 Person.prototype.sayHi = function () { console.log('Hi! My name is ' + this.name); };.. [운영체제] 공유자원과 임계영역/교착상태/CPU 스케줄링 알고리즘 2023년 4월 24일 172p~181p 3.3.7 공유 자원과 임계 영역 공유 자원은 시스템 안에서 각 프로세스, 스레드가 함께 접근할 수 있는 모니터, 프린터, 파일, 데이터 등의 자원이나 변수를 의미한다. 이 공유 자원을 두 개 이상의 프로세스가 동시에 읽거나 쓰는 상황을 경쟁 상태(Race Condition)라고 한다. 동시에 접근을 시도할 때 접근의 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태인 것이다. Race Condition이 발생하는 경우를 정리하면 다음과 같다. - 커널 작업을 수행하는 중에 인터럽트 발생 문제점 : 커널모드에서 데이터를 로드하여 작업을 수행하다가 인터럽트가 발생하여 같은 데이터를 조작하는 경우 해결법 : 커널모드에서 작업을 수행하는 동안, 인터럽트를 disa.. [운영체제] 프로세스와 스레드/ 멀티프로세싱과 멀티스레딩 2023년 4월 22일 157p~172p 3.3 프로세스와 스레드 기본적으로 프로세스마다 최소 1개의 스레드를 소유 (메인 스레드 포함)한다. 하나의 프로세스가 생성될 때, 기본적으로 하나의 스레드가 같이 생성된다. 프로세스(process) : 실행 중인 프로그램으로, 디스크로부터 메모리에 적재되어 CPU 의 할당을 받을 수 있는 것 스레드(thread) : 프로세스의 실행 단위 그림처럼 프로그램이 메모리에 올라가면 프로세스가 되는 인스턴스화가 일어나고, 이후 운영체제의 CPU 스케줄러에 따라 CPU가 프로세스를 실행한다. 3.3.1 프로세스와 컴파일 과정 (예시 : C언어) 프로세스는 프로그램이 메모리에 올라가 인스턴스화 된 것을 말한다. 예를 들어 프로그램은 구글 크롬 프로그램과 같은 실행 파일이며,.. 24장 클로저(2) 2023년 4월 21일 401p~416p 24.4 클로저의 활용 클로저는 상태를 안전하게 변경하고 유지하기 위해 사용된다. 상태를 안전하게 은닉(information hiding)하고 특정 함수에게만 상태 변경을 허용하기 위해 사용된다. 1.전역 변수로 관리 // 카운트 상태 변수 let num = 0; // 카운트 상태 변경 함수 const increase = function () { // 카운트 상태를 1만큼 증가 시킨다. return ++num; }; console.log(increase()); // 1 console.log(increase()); // 2 console.log(increase()); // 3 위 코드는 오류의 가능성이 있어 좋지 않은 코드다. num 전역 변수에 언제든지 누구나 접.. [운영체제] 운영체제와 컴퓨터/메모리 2023년 4월 21일 134p~157p 3.1 운영체제와 컴퓨터 운영체제(Operation System)는 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스로, 한정된 메모리나 시스템 자원을 효율적으로 분배하게 해주는 일꾼이다. 참고로 운영체제와 유사하지만 소프트웨어를 추가로 설치할 수 없는 것을 펌웨어라고 한다. 3.1.1 운영체제의 역할과 구조 1. 프로세스 관리 프로세스, 스레드 스케줄링 동기화 IPC 통신 운영체제에서 작동하는 응용 프로그램을 관리하는 기능이다. 어떤 의미에서는 프로세서(CPU)를 관리하는 것이라고 볼 수도 있다. 현재 CPU를 점유해야 할 프로세스를 결정하고, 실제로 CPU를 프로세스에 할당하며, 이 프로세스 간 공유 자원 접근과 통신 등을 관리하게 된다. 2. 저장장치 관리 메.. 24장 클로저(1) 2023년 4월 20일 388p~400p 24장 클로저 클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다. 렉시컬 환경의 외부 렉시컬 환경에 대한 참조에 저장할 참조값, 즉 상위 스코프에 대한 참조는 함수 정의가 평가되는 시점에 함수가 정의된 환경(위치)에 의해 결정되고, 이것이 렉시컬 스코프다. 렉시컬 스코프가 가능하려면 함수는 자신이 호출되는 환경과 상관없이 자신이 정의된 환경, 즉 상위 스코프를 기억해야 한다. 이를 위해 함수는 자신의 내부 슬롯 [[Environment]]에 자신이 정의된 환경, 즉 상위 스코프의 참조를 저장한다. 이때 [[Environment]]에 저장된 상위 스코프의 참조는 현재 실행 중인 실행 컨텍스트의 렉시컬 환경을 가리킨다. const x = 1; function.. 이전 1 2 3 4 5 6 7 ··· 9 다음