Fundamental
72
FundamentalTILDesign pattern
Factory method pattern
팩토리 메소드 패턴은 객체의 새성 코드를 별도의 클래스 또는 메소드로 분리함으로써 객체 생성의 변화에 대비하는데 유용하다. 프로그램이 제공하는 기능은 상황에 따라 변경될 수 있다. 그리고 특정 기능의 구현은 개별 클래스를 통해 제공되는 것이 바람직한 설계다. 그러므로 기능의 변경이나 상황에 따른 기능의 선택은 바로 해당 객체를 생성하는 코드의 변경을 초래한다. 게다가 상황에 따라 적절한 코드를 생성하는 코드는 자주 중복 될 수 있다. 이런 경우 객체 생성 방식의 변화는 해당되는 모든 코드 부분을 변경해야 하는 문제를 야기한다. 여기
FundamentalTILOperating System
OS Structure
운영체제는 프로그래밍이 실행되는 환경을 제공해 준다. 운영체제를 살펴보는 몇가지 관점이 있다. 첫번째는 운영체제가 제공하는 서비스에 초점을 맞추는 것 두번째는 운영체제가 사용자 및 프로그래머에게 제공하는 인터페이스에 초점을 맞추는 것 세번째는 시스템의 구성요소와 그들의 상호연겨에 초점을 맞추는 것 User Interface : 거의 모든 운영체제는 UI를 제공한다. CLI와 GUI가 있다. Program execution : 시스템은 프로그램을 메모리에 적재해 실행할 수 있어야 한다. 프로그램은 정상적이든 비정상적이든 실행을 끝낼
FundamentalTILDesign pattern
Template method pattern
템플릿 메소드 패턴은 전체적으로 동일하면서 부분적으로는 다른 구문으로 구성된 메소드의 코드 중복을 최소화 할 때 유용하다. 다른관점에서 보면 동일한 기능을 상위 클래스에서 정의하면서 확장과 변화가 필요한 부분만 서브 클래스에서 구현할 수 있도록 한다 엘리베이터 제어 시스템에서 모터를 구동시키는 기능을 생각해보자. 예를 들어 A모터를 이용하는 제어잇스템이라면 AMotor 클래스에 move()메소드를 정의할 수 있다. 또한 엘리베이터가 이미 이동중이라면 모터를 구동 시킬 필요가 없다. MortorStatus, DoorStatus, Di
FundamentalTILDesign pattern
Observer pattern
Oberver패턴은 데이터의 변경이 발생했을 경우 상대 클래스나 객체에 의존하지 않으면서 데이터 변경을 통보하고자 할 때 유용하다. 예를 들어 새로운 파일이 추가되거나 기존 파일이 삭제되었을 때 탐색기는 이를 즉시 표시할 필요가 있다. 다른 예로는 차량의 연료가 소진될 떄 까지 주행 가능 거리를 출력하는 클래스, 연료량이 부족하면 메시지를 보내는 클래스 등이 있다. 입력된 성적 값을 출력하는 프로그램을 만들어 보자. 입력된 점수를 저장하는 ScoreRecord클래스와 점수를 목록 형태로 출력하는 DataSheetView클래스가 필요
FundamentalTILOperating System
Introduce Operating System
커리큘럼이 짬뽕식이긴 한데 하다보니 운영체제를 공부하게 됐다. 프로세스 생명주기나 메모리 관리에 대한 내용을 보다보니 지나칠 수가 없었다. 처음엔 Operating System Concepts 책을 보려고 했으나 시간적인 문제도 있고 개론적으로 내용을 알고 있기 때문에 Operating System Concepts Essentials로 진행하기로 했다. 너무 많은 내용을 담지 않겠다. 컴퓨터 시스템은 대게 하드웨어, 운영체제, 응용프로그램, 사용자 네가지 구성요소로 구분할 수 있다. 운영체제는 대부분 사용의 편의성을 위해 설계되고
FundamentalTILDesign pattern
Command pattern
Command패턴은 이벤트가 발생했을 때 실행될 기능이 다양하면서도 변경이 필요한 경우에 이벤트를 발생시키는 클래스를 변경하지 않고도 재사용을 가능하게 할때 유용하다. 실행될 기능을 캡슐화함으로써 기능의 실행을 요구하는 Invoker 클래스와 실제 기능을 실행하는 Receiver클래스 사이의 의존성을 제거한다. 따라서 실행될 기능의 변경에도 Invoker 클래스를 수정없이 그대로 사용할 수 있도록 해준다. 램프를 켜는 버튼을 만들어보자 Button클래스의 생성자를 이용해 불을 켤 Lamp객체를 전달한다. Button클래스의 pres
FundamentalTILDesign pattern
State pattern
실세계의 많은개체는 자신이 처한 상태에 따라 일을 다르게 수행한다. 비가 오거나 눈이 오거나 사람이 많이 붐비는 장소에 있거나 따라 걷는 방식과 말하는 방식이 달리지는 것과 마찬가지인 이치다. 이를 표현하는 가장 직접적이고 직관적인 방법은 이를 수행할 때의 상태에 따라 상태 하나하나를 검사해 일을 다르게 수행하게끔 하는 것이다. 이는 분명히 복잡한 조건식이 있는 코드를 산출할 것이고, 결과적으로 코드를 이해하거나 수정하기 어렵게 만든다. 이런 방식과 달리 State패턴은 어떤 행위를 수행할 때 상태에 행위를 수행하도록 위임한다. 이
FundamentalTILC
Pointer guide; struct
아래 코드가 있다 문자열을 담고있는 다중 배열을 구조체에 담아 반환하는 내용의 함수다. 반환되는 구조체 배열을 순회하는 코드는 다음과 같다 구조체 포인터를 순회하기 위해서는 . 대신 ->로 참조한다.