분류 전체보기 532

[프로그래밍 언어론] Implementation(구현)

각각의 언어는 컴파일러방식 또는 인터프리터 방식으로 재구현 되어 기계로 전달된다. 1. 컴파일 방식 - 프로그램 소스가 컴파일러에 의해 다음 과정을 거치면서 기계언어로 변경된다. ⓐ 프로그램 소스코드 컴파일 실행 ⓑ 어휘 분석(분법적으로 의미가 있는 최소한의 단위로 쪼겜) ⓒ 문법 분석(문법적으로 타당한지를 판단) ⓓ 중간코드 생성 및 지속적인 최적화 실시 ⓔ 기계어 생성 - 과정에서 보면 기계어로 바로 변경되는 것이아니라 중간에 중간 코드를 생성한다. ⓐ 중간코드 : 고차원 언어와 저급 언어의 중간단계코드로 어느 특정 기계에 종속되지 않는 언어 : 기계어는 해당 언어에 종속되는 반면에 중간코드는 기계와 독립적이다. >> 즉, 중간코드단계를 가지고 여러 기계에서 사용이 가능하다. - 장점 : 소스코드가 ..

[HTML4.x / XML 1.x] HTML과 XML

1. HTML(Hypertext Markup Language) - Hypertext : 링크로 문서가 서로 연결 되있다. 즉, 링크가 존재한다. - Markup : Tag기반으로 문서를 표현 - 특징 ⓐ 텍스트 파일 기반 : 가격이 Free ⓑ Web에서 보여질 문서의 내용과 모양을 표현 ⓒ 줄 바꿈, 공백의 무시 / 자신의 일일이 코드로 지정해 주어야 한다. - 표준안 : http://www.w3.org 2. XHTML - XML + HTML / XML구문의 적용으로 문법이 엄격하다. - 문법이 엄격한 만큼 오류를 줄이기가 쉽다. - 호환선 문제로 2.0이상은 사용하지 않음. - HTML과의 차이점 ⓐ element간의 중첩관계가 올바르게 이뤄져야함. ⓑ 모든 element는 닫혀 있어야함. ⓒ 모든 ..

[Swing] KeyEvent / KeyListener

1. KeyEvent 와 Focus / 키 이벤트와 포커스 - 모든 컴포넌트는 Key이벤트를 받을 수 있다. - 여러 컴포넌트가 동시에 Key입력을 받으면 혼잡해지고, 화면을 제어하기가 힘들어진다. (일반적으로 우리가 사용하고 있는 모든 것을 보아라...) > 여기서 나온것이 Focus!! Key입력은 Focus를 받고 있는 것만이 가능하다. - 즉, Focus를 받는것이 Key이벤트를 독점한다!! 2. Focus 주기 - 강제로 임의의 컴포넌트에 포커스를 주는 방법 > component.requsetFocus(); // component 컴포넌트에 포커스를 강제로 줌... - 컴포넌트가 포커스를 받을수 있는 상태로 대기 > component.setFoucsable(true); // component 포..

[프로그래밍 언어론] 프로그램 언어의 카테고리와 언어 설계/디자인의 절충

1. 언어의 카테고리 일단 언어를 나누는 주요 4가지 카테고리를 보도록한다. - 명령형 언어 : 폰 노이만 구조에 의해 생성된 변수, 어사인먼트. 레퍼티션 이 3가지의 요소의 상호관계 존재 대부분의 언어가 이곳에 속한다. - 함수형 언어 : 명령형 언어에서 추구하는 것을 모두 거부 세상의 모든일을 함수로 가능하다는 원리 / 함수가 함수를 부르면서 실행 됨. 변수 없이 함수의 결과물이 다른 함수에 입력되어 결과물이 나올때까지 실행 됨. 함수의 연결리스트와 함수 2가지만 제공된다. ex) 리습(LISP(list processing)) - 조직형 언어 : 명령형/함수형 언어에서 추구하는 것을 모두 거부 prospositions, predicates, logical dedcation으로 이뤄짐 논리 프로그래밍 ..

[프로그래밍 언어론] 언어 설계 / 개발 디자인의 영향을 미치는 것

1. 컴퓨터의 구조 - 폰 노이만 구조 : 현재 대부분의 컴퓨터의 구조로 CPU와 Memory로 이뤄진 것 - 폰 노이만이 컴퓨터를 생각했던 과정과 생성물 ⓐ 수학적 반복계산을 담당할 무언가(CPU)와 중간에 값을 저장할 공간(Memory)가 필요... ⓑ 메모리의 주소를 알아야 하는가?? > 변수의 탄생 ⓒ 메모리의 내용을 변환할 수 있는가?? > 어사인먼트(assignment)의 탄생 ⓓ 반복적인 연산이 가능한가?? > 레퍼티션(Repetition) / 반복연산의 탄생 - 즉, 컴퓨터의 구조가 폰 노이만의 구조를 따른다면 프로그램언어에는 변수, 어사인먼트, 레퍼티션이 존재해야한다!! - 폰 노이만 구조를 기반으로 설계된 언어를 "명령형 언어(imperative language)"라고한다. 2. 프로그..

[Swing] 어댑터 클래스(Adapter Class)

- 리스너 인터페이스를 사용하여 이벤트 리스너를 구현할 시 인터페이스가 제공하는 모든 메소드를 구현해야하는 부담을 줄여주기 위해 생긴 클래스 - 인터페이스의 모든 메소드가 단순 리턴하게 구현 되있는 클래스 - 메소드가 1개인 리스너 인터페이스는 제공해 주지 않는다. ( Action. Item. Text. Adjustment ) ex) class KeyAdapter implements KeyListener{ public void KeyPressed(keyEvent e){} public void KeyReleased(keyEvent e){} public void KeyType(keyEvent e){} } 위는 어뎁터 클래스중 하나의 클래스로 KeyListener의 어댑터 클래스이다. 이번엔 어뎁터 클래스를 ..

[클래스와 객체] 클래스(Class)와 객체(Object) / 함수호출 통신

1. 클래스와 객체 - 클래스 ⓐ 하나의 타입(type)로서 공통된 것을 추출하여 일반화 ⓑ 객체/실체(object)를 만들어내는 틀로 객체가 가질 특징만을 정의 → 추상적 정의 ⓒ 데이터와 메소드(code)로 이뤄져 있다. - 객체 / 실체 ⓐ 추상화된 클래스가 Instantation과정을 거쳐 생성한 인스턴스(Instance) ⓑ 구체적 내용을 가지고 있음. ※ 인스턴스화(Instantation)과정(by Java) Student S; // 이름만 생성 S = new Student(); > new : 클래스에 객체를 생성하라고 명령 / 인스턴스화 진행 및 인스턴스 생성 > Dynamic Binding 이라고도 하며 이름에 몸체를 붙인 것이다. 2. 함수호출 통신 각각의 객체는 캡슐화에 의해 다른 객체..

[객체지향프로그래밍] 프로그램과 객체지향로의 발달

1. 프로그램이란 무엇인가? - 컴퓨터가 해야할 일을 리스트화 해놓은 것 - 데이터와 코드로 이뤄져 있음 - 프로세스를 통해 메모리의 데이터 변경 > CPU의 특정 메모리를 가져와 변형 및 결과 산출 2. 객체지향 프로그램으로의 발달 - 에셈블리언어(최초단계) ⓐ CPU가 코드를 실행하면서 Memory에서 필요한 데이터를 불러옴. - C언어(중간단계/모듈프로그램) ⓐ 프로그램의 규모가 점점 커지면서 프로그램 분할을 시작함 ⓑ 모듈(Modeul) : 프로그램을 분할한 더 작은 프로그램 ⓒ 모듈은 독자적 데이터 코드를 가지며, 프로그램은 모듈단위로 컴파일을 하고, 하나로 묶는다. - JAVA(최종단계 : 객체지향 프로그램) ⓐ 프로그램의 모듈화로 프로그랩 작성에 편의가 제공됨. But!! 한 모듈이 다른 모..

[자바] 관습적 규약

1. 공통 자바언어로 프로그램을 작성시 지켜야 될 몇몇 관습적 규약이 존재한다. 규약은 코드를 짧게 하면서 상대방에게 알기 쉽게 소스를 이해시키는데 목적을 두고 있다. 공통부분은 모든 규약에서의 기초로 2~3장에 소개된 규약에 추가적으로 항상 지켜야 되는 것이다. 공통분야에는 들여쓰기와 선언하는 방법에 대해서 소개된다. 1.1 들여쓰기 지금까지 배워온 C를 통해서도 들여쓰기의 중요성을 알 수 있었다. 자바에서 관습적 들여쓰기는 “Tab키 1번”을 사용하고 있다. 위 그림은 들여쓰기를 했을 때의 코드 모습이다. 만약 이렇게 되지 않고, 들여쓰기가 없이 다 맨 앞줄부터 시작하거나, 의미 없는 곳에서 띄어쓰기를 한다면 자신(코드작성자)이외에는 소스코드를 이해하기 힘들 것이다. 즉, “들여쓰기를 통해서 코드가 ..

[프로그램설계] 프로그램 설계시 기본적으로 생각할 것!!

프로그램 설계시 “Layer Divide”를 하는 것이다. “사람과 상호작용하는 UI부분과 실제 연산을 하는 Model부분을 나눠서 구현하는 것”이다. 이렇게 Layer를 나눠서 프로그램을 설계하면 UI가 변경되어도 실제 연산 부분을 “재사용이 유리”해진다. UI가 변경됨에 따라 문법만 수정을 해준다면 모델부분의 소스를 재사용 할 수 있다. 또한 Model이 변경되어도 사용자 UI가 변경되지 않게 만들어 사용자에게 편리함을 제공하기도 한다. 만약 UI와 Model이 서로 주고받으면서 프로그램이 작성된다면 UI가 변경되면 UI와 Model을 모두 다 다시 작성해야 하는 일이 발생한다. 즉, 프로그램을 설계시에는 커플링(coupling : 데이터 통신량)을 최소화하고, 코히즘(Cohesiem : 응집력)은 ..