프로그래밍[Univ] 343

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

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 : 응집력)은 ..

[JAVA] 자바란?

1. Java "독립적인 플랫폼을 가지고 있으며, 메모리 사용량이 적은 언어"이다. 독립적 플랫폼을 통해서 자바 언어로 만들어진 프로그램은 "JVM이 설치된 어떠한 곳에서 실행이 가능"하다. 이것을 “WORA”라고하며, Write Once Run Anywhere의 약자 이다. 이러한 자바에서는 사용자의 개발을 편리하게 하기위해 미리 작성된 라이브러리를 제공해주는데 이 종류는 3가지가 있다. 자바 표준 배포판으로 독립적 프로그램 개발시 이용하는 “JavaSE(Standard Edition)”와 제한된 리소스를 가진 하드웨어환경(핸드폰, PDA등)에서의 응용프로그램 개발을 위한 “JavaME(Micro Edition)”, 그리고 기업용 배포판으로 대규모 기업, 다중 사용자 응용프로그램 개발시 이용되는 “Ja..

[OS] 운영체제 / 사용자 인터페이스

* 운영체제 OS(Operating System)의 한글표현은 “운영체제”이다. 사용자에게 컴퓨터를 사용하기 위해 필요한 사용자 인터페이스를 제공해주고, 하드웨어 사용에 편리를 제공해 주는 역할을 한다. 또한, OS는 Input과 Output을 핸들링 해주는데 사용자로부터 Input을 받아 하드웨어에 전달해주고, 하드웨어에서 나온 Output을 다시 사용자에게 전달해주는 의사소통의 수단으로도 사용이 된다. 즉, OS는 사용자로부터 받은 Input을 하드웨어에서 효율적으로 처리 하도록 유도하는 “자원관리자” 역할을 하며, 사용자에게 Input을 받아 하드웨어로 알려주고 하드웨어에서 나온 Output을 사용자에게 다시 전달하여 “컴퓨터와 사용자가 의사소통을 가능”하게 해주는 역할을 한다. 그렇다면 사용자가 ..

[프로그래밍 언어론] 프로그램 언어 평가 기준

1. 가독성(Readability) : 얼마나 읽기 쉬운가?? - 단순성(Simplicity) ⓐ 기능이 너무 많으면 좋지 않다. ⓑ 하나의 기능을 여러가지로 표현이 가능하면 안 좋음 ex) count++ // ++count // count = count+1 // count += 1 >한 가지 기능을 여러가지로 표현이 가능함. ⓒ 연산자 중복(Operator Overloading) : 사용자에게 중복 연산자 생성을 허용 > 좋은 기능이지만, 연산자의 일반적 의미와 다른 의미로 쓰인다면 읽는 사람입장에서 해석하기가 힘들 것이다. - 직교성(Orthogonality) : 결합시 일관적인가?? 예외가 발생하는가?? 예제를 통해서 알아보자... ex1) ⓐ와 ⓑ중 더하기 기능을 보았을때 어떤 것이 더욱 직교적인..

[프로그래밍 언어론] 프로그래밍언어의 개발 목표

프로그래밍 언어는 각각의 목표 분야를 가지고 개발이 된다. 각 분야는 5개로 나눠지며 분야마다 공통점, 고유특성을 가지고 있다. 각 분야별 고유특성을 알아보자. 1. Scientific Applications ⓐ 수학적 함수가 많다. ⓑ 실수형에 많은 데이터타입(선택권)을 제공해 준다. (유효자리수가 많아야 한다.) ex) 복소수 타입. 행렬 타입. ⓒ 제어문 > 반복문에 중점 / 선택문에 중점 2. Business Applications ⓐ 기능 : DB기능/스프레드 쉬트(엑셀기능)/검색/정렬/입력/추가 등에 대한 제어문을 제공 ⓑ 문자/단위별 변수에 많은 선택권을 준다. 언어예) COBOL 3. Artificial Intelligence ⓐ 인공지능/머릿 속에 있는 것을 유사하게 만듬 > 사람의 머릿..