Eclipse 단축키

Software/Java 2013. 7. 4. 15:07

Ctrl + O

클래스안에 있는 메소드들의 타입을 확인할 수 있습니다.



Ctrl + F

문자열을 검색할 때 사용합니다.

찾아 바꾸기 (Replace with) 기능을 제공하여 한번에 문자열 치환이 가능합니다.


 

Ctrl + L

위의 단축키를 누르고 줄번호를 입력 시 해당 줄(Line number)로 커서가 이동합니다.



 

Ctrl + D

커서가 위치한 줄 소스 삭제할 때 사용합니다.



Ctrl + Space

클래스나 그에 소속된 메소드 등의 목록을 띄워 원클릭으로 적용하기 쉽게 선택할 수 있는 자동완성 기능입니다.



Ctrl + K

Ctrl + f와 같은 기능입니다.

검색하려는 키워드를 블록 설정하고 위의 단축키를 누르면 검색이됩니다.



Alt + ←

이전에 했던 Action



Alt + →

이후에 했던 Action


Ctrl + F11

전에 실행된 Run as 파일 실행 됩니다.



Ctrl + W

페이지 닫기 기능입니다.

인터넷 브라우저(IE, Chrome 등), 윈도우 파일탐색기 등 여러 곳에서 동일하게 사용 가능합니다.



Ctrl + /

주석처리를 위한 단축키입니다.(단축키를 누르면 해당 줄 전체가 주석처리 됩니다.)


 


Alt + ↓

Alt + ↑

커서가 위치한 줄의 내용이 위치할 순서를 바꿀 때 사용합니다.



Ctrl + Shift + O

자동으로 import할 때 사용합니다.


Ctrl + M

소스코드의 창을 전체화면으로 변경합니다.(좌측의 익스플로러 창이 숨는 기능)



Ctrl + Alt + ↓/↑

커서가 위치한 줄의 내용 복사 시 사용합니다



Ctrl + N

새로운 프로젝트를 생성하거나 새로운 파일을 생성할 때 사용하는 단축키입니다.



 

F11

Debug 시작


F8

Debug 계속 진행


F6

Debug 라인 실행


F5

Debug 라인 단위로 실행(함수 내부로 들어갑니다.)


Ctrl + Shift + B

현재 커서 라인에 브레이크 포인트(Break point) 설정



Ctrl + Shift +X

대문자로 변환



Ctrl + Shift + Y

소문자로 변환



Ctrl + Shift + L

모든 단축키의 내용을 출력합니다.

'Software > Java' 카테고리의 다른 글

Java 유의사항  (0) 2013.07.04
Java 용어  (0) 2013.07.04
Class  (0) 2013.07.04
[JAVA] package 란?  (0) 2013.07.04
Java의 변수 타입  (0) 2013.07.04
Posted by MegaNzine
,

Java 유의사항

Software/Java 2013. 7. 4. 15:03

1. 선언문은 세미클론으로 끝나야 한다.

2. 코드 블록은 중괄호 한쌍에 의해 정의 됩니다. {}

3. int 변수를 정의할때 오른쪽과 같이 이름과 형식을 지정해 줘야 합니다. int x;

4. 대입 연산자는 등호 한 개로 구성됩니다. =

5. 동치 연산자는 등호 두 개로 구성됩니다. ==

6. while 순환문에서는 조건 테스트가 참이면 그 블록(중괄호 안에 있는 부분)에 있는것을 모두 실행시킵니다.

7. 조건 테스트가 거짓이면 while 순환문 코드 블록은 실행되지 않으며 순환문 블록 바로 뒤에 있는 코드로 넘어갑니다.

8. 부울 테스트는 괄호안에 들어갑니다. while(x==4){ }

1. 객체지향적인 프로그래밍을 하면 제작과 테스트 과정이 끝난 코드를 건드리지 않고도 프로그램을 확장할수 있습니다.

2. 모든 자바 코드는 클래스 내에서 정의됩니다.

3. 클래스는 해당 크래스 유형의 객체를 만드는 방법을 설명하는 역활을 합니다. 클래스는 청사진과 같다고 할 수 있지요.

4. 객체는 각자 알아서 자기 할 일을 처리할 수 있습니다. 사용자는 객체에서 작업을 처리하는 방법에 대해서는 신경쓰지 않아도 됩니다.

5. 객체에는 알고 있는 것과 할수 있는 것이 있습니다.

6. 객체가 자기 자신에 대해 알고 있는 것은 인스컨스 변수라고 부릅니다. 객체의 상태를 나타내지요.

7. 객체가 할 수 있는 것은 메소드라고 부릅니다. 객체의 행동을 나타내지요.

8. 클래스 새로 만들때는 그 클래스 유형의 객체를 만들어서 테스트하는 테스트용 클래스를 따로 만들어 보는 것이 좋습니다.

9. 클래스에서는 덜 구체적인 상위 클래스로부터 인스턴스 변수와 메소드를 상속할 수 있습니다.

10. 프로그램을 실행시킬 때 보면 자바 프로그램이란 결국 다른 객체와 대화를 하는 객체에 불과합니다.

1. 클래스에서는 객체가 아는 것과 객체가 하는 것을 정의 합니다.

2. 인스턴스 변수(상태)는 객체가 아는 것입니다.

3. 메소드(행동)는 객체가 하는 것입니다.

4. 메소드에서 인스턴스 변수를 이용하여 같은 유형의 객체가 다른 식으로 행동하게 할 수 있습니다.

5. 메소드에서 매개변수를 사용할 수 있습니다. 즉 메소드에 값 한 개 이상을 전달할 수 있습니다.

6. 전달하는 값의 개수와 유형은 반드시 메소드를 선언할 대 지정한 것과 같아야 하며 그 순서도 같아야 합니다.

7. 메소드 안팎으로 전달되는 값은 상황에 따라 자동으로 더 큰 유형으로 올라갈 수 있습니다. 더 작은 유형으로 바꿔야 한다면 강제로 캐스팅을 해야 합니다.

8. 메소드에 인자를 전달할대는 리터럴값(2, 'c'등)을 사용할수 있고 선언된 매개변수 유형의 변수 (예를 들어,int 변수 x)사용할 수도 있습니다.

9. 메소드를 선언할때 반드시 리턴 유형을 지정해야 합니다. 리턴 유형을 void 로 지정하면 아무것도 리턴하지 않아도 됩니다.

10. 메소드를 선언할때 void가 아닌 리턴 유형을 지정했을 때는 반드시 선언된 리턴 유형과 호환 가능한 값을 리턴해야 합니다.

1. 자바 프로그램을 만들때에는 우선 고수준 설계부터 시작합니다.

2. 새로운 클래스를 만들 때는 일반적으로 다음과 같은 세가지를 만들어야 합니다. 준비코드 -> 테스트 코드 -> 실제 (자바)코드

3. 준비 코드에서는 어떻게 해야 할지 보다는 무엇을 해야 할지를 기술해야 합니다. 구현은 나중에 하면 됩니다.

4. 테스트 코드를 설계할 때는 준비 코드를 활용하면 좋습니다.

5. 메소드를 구현하기 전에 테스트 코드를 만들어야 합니다.

6. 순환문 코드 반복 횟수를 미리 알 수 있는 경우에는 while보다는 for를 쓰는 것이 좋습니다.

7. 변수에 1을 더할때는 선/후 증가 연산자를 쓰면 됩니다.

8. 변수에서 1을 뺄 때는 선/후 감소 연산자를 스면 됩니다.

9. String 을 int 로 바꿀때에는 Integer.parseInt()를 쓰면 됩니다.

10. Integer.parseInt()는 숫자를 나타내는 String("0","1","2"등)에 대해서만 사용할수 있습니다.

11. 순환문을 중간에 무조건(부울 테스트 조선이 아직 참인 경우에도) 빠져 나올때는 break를 사용하면 됩니다.

1. ArrayList 는 자바 API에 포함되어 있는 클래스 입니다.

2. ArrayList에 뭔가를 집어넣을 때는 add()를 쓰면 됩니다.

3. ArrayList에서 뭔가를 제거할 때는 remove()를 쓰면 됩니다.

4. ArrayList에 들어있는 어떤 것의 위치를 알고 싶다면 (또는 들어있는지 알고 싶다면)indexOf()를 쓰면 됩니다.

5. ArrayList가 비어잇는지 확인할 때는 isEmpty()를 쓰면 됩니다.

6. ArrayList의 크기(원소의 개수)를 알고 싶다면 size()메소드를 쓰면 됩니다.

7. 일반 배열의 길이 (원소의 개수)를 알고 싶을 때는 length라는 변수를 쓰면 됩니다.

8. ArrayList는 필요에 따라 그 크기가 동적으로 바뀝니다. 객체를 추가하면 커지고 제거하면 작아집니다.

9. 선언할때 지정한 배열 유형에 매치되는 것만 넣을수 있는 일반 배열과 달리 ArrayList에는 아무객체나 집어 넣을수 있습니다.

10. 원시 유형은 ArrayList에 직접 집어 넣을수 없습니다.

11. 클래스는 패키지 단위로 묶입니다.

12. 클래스에는 패키지명과 클래스명을 합쳐서 만든 전체 이름이 있습니다. ArrayList 클래스의 전체 이름은 java.util.ArrayList입니다.

13. java.lang을 제외한 다른 패키지에 들어있는 클래스를 사용하려면 자바에 클래스의 전체 이름을 알려줘야 합니다.

14. 소스 코드 맨 위에서 import 선언문을 사용하거나 코드에서 그런 클래스를 사용할 때마다 항상 전체 이름을 입력해도 됩니다.


1. 인스턴스 변수는 그 변수가 들어있는 객체 안에(힙 안에)저장됩니다.

2. 인스턴스 변수가 객체에 대한 레퍼런스인 경우에는 레퍼런스와 객체가 모두 힙에 저장됩니다.

3. 어떤 클래스 유형에 대해 new키워드를 사용할 때 실행되는 코드를 생성자라고 합니다.

4. 생성자명은 반드시 클래스명과 같아야 하며 리턴 유형은 없어야 합니다.

5. 생성자를 이용하여 생성되는 객체의 상태(인스턴스 변수)를 초기화할 수 있습니다.

6. 클래스에 생성자가 없으면 컴파일러에서 기본 생성자를 만듭니다.

7. 기본 생성자는 언제나 인자가 없는 생성자입니다.

8. 클래스를 만들 때 생성자를 만들면(어떤 종류의 생성자를 만들어도) 컴파일러에게 기본 생성자

를 만들어 주지 않습니다.

9. 인자가 없는 생성자를 만들고 싶은데, 인자가 있는 생성자가 따로 있다면 인자가 없는 생성자도

손수 만들어야 합니다.

10. 가능하면 프로그래머가 제대로 된 객체를 만들 수 있게 인자가 없는 생성자도 만드는 것이 좋

습니다. 그런 경우에는 기본값ㅇ르 지정해야 겠죠?

11. 생성자 오버로딩을 활용하면 클래스에 두개 이상의 생성자를 만들수 있습니다.

12. 오버로드된 생성자들의 인자 목록은 반드시 서로 달라야 합니다.

13. 인자 목록이 똑같은 생성자가 두개 이상 있을 수 없습니다. 인자 목록을 따질때는 순서와 인자

의 유형을 모두 따집니다.

14. 프로그래머가 직접 기본값을 지정하지 않아도 인스턴스 변수는 자동으로 기본값이 지정됩니다.

원시 유형의 기본값은 0/0.0/false고 객체에 대한 레퍼런스의 기본값은 null입니다.

1. 정적 메소드(static method)는 객체 레퍼런스 변수 대신 클래스명을 써서 호출합니다.

Math.random() vs. myFoo.fo()

2. 정적 메소드는 힙에 그 메소드가 들어있는 클래스의 인스턴스가 없어도 호출할수 있습니다.

3. 특정 인스턴스 변수값에 의존하지 않는(그리고 그럴 가능성도 전혀 없는)유틸리티 메소드는 정

적 메소드로 만드는 것이 좋습니다.

4. 정적 메소드에서는 특정 인스턴스와는 연관되지 않기 때문에(클래스 하고만 연관되기 때문에)

어떤 인스턴스 변수값도 사용핤 없습니다. 어떤 인스턴스에 들어있는 인스턴스 변수값을 사용

해야 할지 결정할 수 없기 때문입니다.

5. 정적 메소드가 아닌 메소드는 보통 인스턴스 변수 상태와 연관되어 있기 때문에 정적 메소드에서

는 정적 메소드가 아닌 메소드를 사용할 수 없습니다.

6. 정적 메소드만 들어있는 클래스가 있다면 그 클래스의 인스턴스를 만들 필요가 없기 때문에 그

생성자를 private로 지정하는 것이 좋습니다.

7. 정적변수(static Variable)는 해당 클래스에 속하는 모든 객체에서 공유하는 변수입니다. 인스턴

스 변수는 각 인스턴스마다 사본이 하나씩 있지만 정적 변수는 한 클래스에 복사본이 하나밖에

없습니다.

8. 정적 메소드에서도 정적 변수를 사용할 수 있습니다.

9. 자바에서 상수를 만들때는 변수에 static과 final로 지정하면 됩니다.

10. final로 지정한 정적변수는 변수를 선언할 때 또는 정적 초기화 부분에서 반드시 값을 대입해야

합니다.

static{

DOG_CODE=420;

}

11. 상수(final로 지정한 정적 변수)의 이름은 (일반적으로)모두 대문자로 붙입니다.

12. final로 지정한 변수값은 값을 한번 대입하면 바꿀 수 없습니다.

13. final 인스턴스 변수값은 선언할때 또는 생성자에서 대입해야 합니다.

14. final 메소드는 오버라이드할 수 없습니다.

15. final 클래스는 확장할 수 없습니다.(하위클래스를 만들 수 없습니다.)

1. 실행 중에 문제가 생기면 메소드에서 예외를 던질 수 있습니다.

2. 예외는 언제나 Exception 유형의 객체입니다. (다형성을 설명한 장에서 배웠듯이 어떤 객체이 상

속 트리 위쪽 어딘가에 Exception이 있다면 그 객체는 Exception객체입니다.).

3. RuntimeException 유형에 속하는 예외에 대해서는 컴파일러에서 신경을 쓰지 않습니다.

RuntimeException은 선언하지 않아도 되고 try/catch로 포장할 필요도 없습니다(물론, 선언을 하

거나 try/catch블럭을 써도 되긴 합니다.)

4. 컴파일러에서 항상 확인하는 Exception 유형을 '확인 예외' 라고 부르는데 정확하게 말하자면

'컴파일러에서 확인하는 예외'라고 할 수 있습니다. 컴파일러에서 확인하지 않는 예외는

RuntimeException 뿐입니다. 다른 모든 예외에 대해서는 정해진 규칙에 따라 적절한 코드를 사

용해야 합니다.

5. 메소드에서 예외를 던질 때는 throw 키워드를 사용하며, 그 뒤에는 새로운 예외 객체를 만드는

구문을 적어주면 됩니다. throw new NoCaffeineException();

6. 확인 예외를 던질 수 있는 메소드를 선언할 때는 반드시 throw Exception선언문을 써서 예외를

던질 수 있다는 사실을 공표해야 합니다.

7. 확인 예외를 던지는 메소드를 호풀할 때는 반드시 정해진 규칙을 준수해야 합니다.

8. 예외를 처리할 준비가 되어있다면 예외를 던지는 메소드를 호출하는 코드를 try/catch로 감싸야

하며 예외 처리/복구 코드는 catch 블록안에 넣어야 합니다.

9. 예외를 처리할 준비가 되지 않았다면 공식적으로 예외를 '회피'함으로써 컴파일러에서 그냥 넘어

가게 할수 있습니다.

'Software > Java' 카테고리의 다른 글

Eclipse 단축키  (0) 2013.07.04
Java 용어  (0) 2013.07.04
Class  (0) 2013.07.04
[JAVA] package 란?  (0) 2013.07.04
Java의 변수 타입  (0) 2013.07.04
Posted by MegaNzine
,

Java 용어

Software/Java 2013. 7. 4. 15:02

A

abstract

메소드 선언에 abstract가 오면 메소드의 선언만 갖고 body 부분은 생략할 수 있는
메소드를 만들 수 있습니다.
즉 메소드의 body 부분에 대한 구현은 sub class에서 하겠다는 것입니다.
만약 어떤 class의 메소드들 중 누군가 abstract로 선언되어 있다면 그 class는
반드시 abstract로 선언해야 합니다.

access modifier

private, protected, public과 같은 각 member들의 access 범위를 결정해 주는
modifier를 말합니다.

anonymous inner class

class 내부에 정의되는 inner class의 한 종류로, 이름 없는 inner local class를
말합니다.

Applet

web browser 환경에서 실행되는 자바 프로그램을 말합니다.

appletviewer

자바를 지원하는 web browser 없이 직접 applet을 볼 수 있게 해주는 JDK가
제공하는 프로그램.

argument

메소드를 호출할 때 같이 전달하는 매개변수.

array

 

같은 type의 변수들을 여러개 묶어서 index 값을 통해 각각의 변수를 사용할 수
있도록 해주는 구조체.

automatic 변수

메소드 내부에 선언된 변수를 말합니다.
즉 사용 범위가 메소드를 벗어나서는 사용될 수 없습니다. local변수라고도 합니다.

B

base class

class들의 상속관계에서 보다 더 위에 있는 class를 말합니다.
이것을 super class라고도 합니다.

behavior

어떻게 object가 행동하고 반응하는지를 말합니다.
주로 언어 차원에서는 어떤 메소드를 정의하느냐에 따라 어떤 behavior를 갖는다고
말합니다.

block

{ 로 시작하여 } 로 끝나는 프로그램 코드.

boolean

true 또는 false만을 가질 수 있는 데이터 type.

boolean literal

true나 false로 선언된 리터럴

C

character literal

한 개의 문자 값.

char data type

16 bit 유니코드 값을 나타내는 데이터 타입.

casting

어떤 operand의 type을 잠깐 다른 type으로 강제로 type conversion 하려고 할 때,
(type name)operand와 같은 모양으로 type conversion 하는 것을 의미합니다.

catch block

try와 같이 사용하는 statement로, exception이 try block에서 발생했을 때
exception을 잡아서 처리해 주는 문장입니다.

class

c의 struct 처럼 사용자가 정의하는 abstract data type을 만들어 낼 수 있는 도구를
말합니다. 자바는 struct를 지원하지 않고 class를 통해 지원하고 여기에는
member variable 뿐만아니라 member function도 정의할 수 있습니다.
자바에서는 member function을 메소드라는 표현으로 사용합니다.

class library

class들의 집합.

class variable

어떤 class의 모든 instance object들이 동시에 사용할 수 있도록 class 안에
선언된 변수.
static keyword로 선언된 변수를 말합니다.

constructor

class의 instance가 만들어질 때 즉 new 로 생성될 때 내부적으로 불려지는
특별한 메소드를 말합니다.
constructor는 반드시 class 이름과 같은 이름의 함수로 만들어야 하고
return type을 지정하면 안됩니다.

critical section

한 thread가 코드의 일부를 실행 도중 다른 thread가 같은 코드를 수행하는 경우
데이터의 consistancy가 위반될 소지가 있으므로 한 thread의 수행이 끝날 때 까지
다른 thread가 실행되서는 안되는 코드 부분

D

data type

변수 안에 들어갈 수 있는 값의 종류를 정의할 때 사용됩니다.

declaration statement

변수나 프로그램 문장을 선언하는 문장.
선언문은 맨 끝에 세미콜론으로 끝납니다.

Default character encoding

영문자를 표현하는 ASCII code와 한글을 표현하는 ksc5601과 같이 어떤 문자를
computer로 인식시키기 위한 코드값을 갖게 만들어 놓은 것을
character encoding 이라고 하고 각 character encoding 체계는 나라마다
다를 수 있습니다.
Default character encoding은 자바에서 현재의 locale에 따라 기본으로
설정되어 있는 character encoding체계를 의미합니다.
우리 한글은 자바에서 ksc5601로 이름 지어져 있습니다.

 

default constructor
constructor는 프로그래머가 제공하지 않아도 기본으로 컴파일러가 제공해 주는
매개변수 없는 constructor가 있습니다. 이것을 default constructor라고 합니다.
derived class
class들의 상속관계에서 보다 더 아래에 있는 class를 말합니다.
즉 파생된 class를 의미합니다.
이것을 sub class라고도 합니다.
double data type

64 bit 크기의 배정도 부동 소수 형태의 실수를 나타내는 data type.

 

 

 

E

 

encapsulation

object의 기본적인 특성인 것 이외에는 자세한 모든 것을 감춰 버리는 것.
즉 object의 구조 또는 메소드의 자세한 구현같은 것들을 hide시켜 버림.

 

 

Event Listener

component에서 발생되는 event를 받아서 처리할 수 있는 object를 말합니다.

 

 

Event Source

Event를 발생시킨 Component를 말합니다.

F

 

final

선언에 영향을 주는 modifier로, 변수에 붙을 때는 상수로 만들고 class에 올 때는
base class 역할을 못하게 하고 메소드에 붙을 때는 그 메소드에 대하여
override 불가능한 상태를 만들어 줍니다.

 

finally block

try statement와 같이 사용하는 문장으로, try block에서 exception이 발생했거나
또는 하지 않았거나와 상관없이 반드시 처리해줄 것을 보장하는 block입니다.

 

 

float data type

32 bit 크기의 단정도 부동 소수 형태의 실수를 나타내는 data type

 

floating point literal

소수점을 포함하는 숫자 값.

 

friendly

자바 keyword는 아니지만 access modifier들 처럼 어떤 member의
access 범위를 정할 수 있는 의미 입니다.
즉 member 앞에 아무 access modifier도 붙이지 않으면 기본으로 friendly가
됩니다.
그러면 같은 package에 있는 class 들에게는 public 이지만 다른 package에 있는
class에게는 private이 되어 버립니다.

 

 

 

G

 

garbage collection

자동쓰레기수집 기능. 자바에서는 new와 같은 메모리 할당 연산자는 있는 반면에
메모리 해제와 같은 기능을 해주는 연산자는 없습니다. 그러니까 시스템에서 알아서
생성된 메모리를 해제해 주게 되어 있습니다.
즉 아무도 사용하고 있지 않은 생성된 object 들을 골라서 heap 메모리로 돌려 주는
것이지요.

 

 

H

 

heap memory

한 process에서 동적으로 메모리를 생성하고 소멸 시키면서 사용할 수 있는
메모리 공간

 

 

I

 

 

identifier

변수나 class, 메소드의 이름으로 사용되는 단어들

 

 

implements

자바 keyword로, class로부터의 상속이 아닌 interface로부터의 상속을 표현할 때
사용합니다.

 

implicit type conversion

서로 다른 type의 operand를 갖는 연산식을 처리 하고자 할 때 promotion에 의해
내부적으로 자동 type conversion이 일어나는 것을 말합니다.

 

import

자신의 package가 아닌 다른 package에 있는 class를 참조하고자 할 때
import 문장을 통해 먼저 선언하고 그 class를 참조할 수 있습니다.
즉 자신의 name space를 확장시켜주는 역할을 합니다.

 

 

inheritance

class들 사이의 관계에서 한 class가(sub class) 다른 class(super class)에
정의된 structure나 behavior를 공유할 수 있게 함.
그리고 두 class는 "is kind of" 관계를 갖게 됨.

 

 

inner class

class 내부에 정의된 class를 말합니다.

 

inner local

class 내부에 정의되는 inner class의 한 종류로, 특별히 메소드 내부에 정의되는
class를 말합니다.

 

input stream

데이터를 입력 받기 위해 프로그램에서 참조하는 data stream.

 

interface

class들 중 abstract class의 변화된 모양입니다.
즉 class처럼 user defined type을 만들어 낼 수 있으나 interface 구조 안에는
abstract 메소드들과 final static member variable만이 정의될 수 있습니다.

 

integer literal

숫자 즉 10진수 8진수 16진수 형태의 숫자.

 

instance

변수화를 말합니다. 즉 어떤 class type을 변수로 선언하고
그 변수에 new 연산자를 이용하여 memory를 할당하면 그것을 우리는
instance화 했다 라고 말할 수 있습니다.
그리고 instance화 한 것을 object라고 말하기도 합니다.

 

instanceof

자바의 연산자의 일종으로 어떤 object가 특정 class의 instance인지를
boolean value로 알려 줍니다.

J

javac

JDK가 제공하는 자바 compiler 명령어

 

 

javadoc

API style html 화일을 자동으로 생성해주는 JDK가 제공하는 명령어

 

 

 

javah

자바 native 메소드를 C 에서 작성할 때 필요로 하는 header file(.h) 과
stub(.c) 화일을 생성해주는 JDK가 제공하는 명령어

 

javap

class를 .java로 disassemble해주는 명령어

 

jdb

JDK가 제공하는 debugger

1)클래스(Class)
클래스란 어떤 특정 종류의 모든 객체들에 대해 일반적으로 적용할 수 있는 변수와 메소드를 정의하고 있는 소프트웨어적인 설계도(blueprint) 또는 프로토타입(prototype). 실세계에 존재하는 객체들이 가질 수 있는 상태와 행동들에 대해 소프트웨어적으로 추상화(abstraction) 해 놓은 것.


2)추상클래스

-추상 클래스는 객체가 가지는 특성들을 추상화시켜 놓았을 뿐 아직 구체화 시키지 못한 클래스이므로, 이 추상클래스를 상속하는

하위 클래스에서 좀 더 구체화 시키도록 하는 것이다. 따라서, 추상클래스를 상위 클래스로 하여 상속하는 하위 클래스는 추상클래스

인 상위 클래스에서 완전히 구현하지 못한 부분들을 완전하게 구현해 주어야만 하위 클래스에 대한 객체 생성이 가능하고, 그렇지

못할 경우 하위 클래스는 상위 클래스인 추상 클래스와 같이 미완성이므로 자체적으로 객체를 생성할 수 없고, 이 하위 클래스는

다시 추상 클래스가 된다.


* 추상 메소드의 특징

- 추상메소드는 추상클래스와 마찬가지로 아직 구현이 이루어지지 않고 단지 그 프로토입만 가지고 있는 메소드이다.

1. 추상메소드는 미완성 메소드이어야 하므로, 메소드의 몸체(body)를 가질수 없다

2. 추상메소드는 클래스가 가져야 할 인터페이스에 대한 프로토타입(메소드의 형태)을 정의하고 있다.

3. 추상메소드는 하위클래스가 가져야 할 인터페이스를 정의한다.

4. 추상메소드를 포함하는 클래스는 반드시 추상클래스로 선언되어야 한다.


* 추상클래스(메소드) 선언 시 주의사항

1. abstract 메소드를 하나라도 가지고 있다면 그 클래스는 반드시 abstract 클래스로 선언되어야 한다.

2. abstract 클래스는 직접 객체를 생성할 수 없다.

3. abstract 클래스를 사용하기 위해서는 이 클래스를 상속한 클래스에서 abstract 메소드를 구현해 주어야만 한다.

4. 만약 abstract 클래스를 상속했는 데 abstract 메소드를 구현해 주지 않았다면 이 클래스 역시 abstract 클래스로 선언되어야 한다.

5. abstact 한 메소드가 없어도 abstract class로 선언할 수 있다.( 상속을 통해서만 접근 가능)






3)상속(Inheritance)
-
객체지향 개념은 클래스를 이용하여 다른 클래스를 생성 또는 정의할 수 있다. 다시 말해서, 하위클래스는 상위클래스가 갖고 있는 모든 특성들을 상속하여 사용할 수 있다. 이러한 상속 관계를 트리로 나타낼 수 있고, 이 상속관계 트리를 클래스 계층도(class hierarchy)라 한다. 상속의 장점을 살펴보면, 상위클래스는 하위클래스들이 가질 수 있는 일반적인 상태와 행동을 정의하고 있고, 하위클래스는 하위클래스 만이 갖는 특별한 상태와 행동을 정의하도록 함으로써 상위클래스를 여러 하위클래스들이 재사용할 수 있고 소프트웨어 개발에 드는 비용을 감소할 수 있다. 프로그램 개발자는 상위클래스를 일반적인 행동(genericbehavior)을 정의하도록 할 수 있고, 이러한 클래스를 추상 클래스(abstract class)라 한다. 이러한 추상 클래스는 부분적으로 구현되거나 구현이나 정의가 이루어지지 않을 수 있는데, 이는 하위클래스를 정의하면서 완성할 수 있도록 가이드라인을 제공해 주는 역할을 한다.


4)인터페이스

-추상메소드와 파이널 변수로만 이루어진 클래스. 따라서, 인터페이스 내에 정의된 메소드는 자바에 의해 자동으로 ‘public abstract’로 변수는 자동으로 ‘public static final’로 선언된다. 구현이 이루어지지 않은 추상메소드를 포함하고 있는 인터페이스는 객체 생성을 할 수 없다. 클래스가 인터페이스를 구현해주어야 상속이 가능하다. 이 때, 클래스는 인터페이스의 모든 메소드 및 변수들을 상속하게 되며, 인터페이스에 정의되어 있는 모든 메소드를 구현해 주지 않을 경우 이 클래스는 추상메소드를 포함하고 있으므로 추상클래스로 선언되어야 한다.
다음은 인터페이스의 일반적인 형태이다.
접근지정자 interface 인터페이스이름 [extends 상위인터페이스] {
상수선언;
메소드선언;
}

인터페이스의 용도
1. 강제적인 클래스 관계를 만들지 않으면서 서로 관련없는 클래스들 상이의 유사성을 나타내야 할 경우
2. 하나 이상의 클래스들이 구현하기를 원하는 메소드를 선언할 경우
3. 클래스를 보여주지 않고서 객체의 프로그래밍 인터페이스를 보여주어야 할 경우

인터페이스와 다중상속의 차이
자바에서 인터페이스가 다중 상속을 할 수 있도록 해준다고 하는데, 인터페이스는 다중 상속을 할 수 있도록 해 주는 것이 아니라 다중 상속을 하는 것처럼 해 주는 것이다.
1. 클래스는 인터페이스로부터
단지 상수만을 상속
한다.
2. 클래스는 인터페이스로부터 메소드의 구현(몸체)에 대해서는 상속할 수 없다.
3. 인터페이스의 계층 구조는
클래스의 계층 구조와 서로 무관
하다.
- 같은 인터페이스를 구현하는 클래스들은 클래스 계층 구조 상에서 서로 관련이 있을 수도 없을 수도 있다. 이러한 특성 때문에 진정한 다중 상속이라 할 수 없다. 그러나 자바에서는 하나의 인터페이스가 여러 개의 상위인터페이스를 가질 수 있도록 함으로써, 다중 인터페이스 상속을 할 수 있도록 해 준다.

인터페이스의 구현
클래스가 이 인터페이스를 상속(implements)하여 인터페이스에 정의된 모든 메소드를 구현해 주어야 객체생성이 가능하다. 그리고, 클래스의 상속에서 하나의 클래스는 하나의 클래스만을 직속으로 상속할 수 있는 것과는 달리, 하나의 클래스는 여러 개의 인터페이스를 구현해 줄 수 있다.
인터페이스도 클래스와 마찬가지로 인터페이스를 상속할 수 있다. 그러나, 클래스 상속과 한 가지 차이점은 클래스는 오직 하나의 클래스만 상속 가능한테 비해,
인터페이스는 여러 개의 인터페이스를 상속할 수 있다. 인터페이스가 상속하는 상위인터페이스들은 ‘,’로 구분
하고, 상위인터페이스가 가지는 모든 상수와 메소드들을 상속하게 된다.
다음은 인터페이스 구현의 일반적인 형태이다.
접근지정자 class [extends 클래스이름] implements 상위인터페이스리스트 {
// 인터페이스에 선언된 메소드 구현
}


5)커넥션풀이란??

-커넥션 풀 기법이란 데이터베이스와 연결된 커넥션을 미리 만들어서 풀(pool)속에

저장해 두고 있다가 필요 할때에 커넥션을 풀에서 가져다 쓰고 다시 풀에 반환하는 기법을 의미

동시 접속자가 사용하는곳에 많이 사용하는 기법...



6)Overloading Method

- 하나의 이름으로 여러 개의 메서드를 가지고 있다.

같은 이름을 가진 여러 개의 메서드를 말합니다. 보통 다중정의, 중복 메서드라고 부르며 일반적으로는 Overloading이라고 합니다. 이것은 하나의 이름으로 여러 개의 메서드를 가지고 있다는 뜻을 내포하고 있다.


Overloading Method의 규칙

n매개변수의 개수가 달라야 한다.

n매개변수의 타입이 달라야 한다.

n위의 개수와 타입 중 하나만 달라도 중복메서드의 조건이 성립 됩니다.

n메서드의 리턴타입은 중복메서드 구분할 때 사용하지 않습니다.




7)오버라이딩

-상속관계에서 상위 클래스와 하위 클래스에 동일한 이름의 메서드가 있는 것을 보고 이야기 하는 것

8)오버로딩와 오버라이딩의 공통점

-오버로드와 오버라이드는 메소드의 이름이 같지만 때에 따라 다른 기능을 가지므로 다형성을 구현한 것


9)인스턴스(Instance)
클래스를 실제로 사용할 수 있도록 선언하는 것, 다시 말해서 클래스에 대한 변수를 선언하는 것을 “인스턴스를 생성한다(instantiate)”라 하고, 이렇게 생성된 변수를 인스턴스라 하며, 이 인스턴스는 메모리 공간을 차지하게 된다. 그리고 인스턴스의 메소드를 이용하여 변수들의 값을 설정 및 변경할 수 있다.

10)객체(Object)
클래스를 실제 사용할 수 있도록 변수 선언한 것을 인스턴스이며, 이 인스턴스를 객체라 할 수 있다. 객체는 높은 모듈성(modularity)과 정보은닉(information hiding)의 장점을 제공.



11)다형성(Polymorphism)
다형성의 기본 개념은 여러 개의 클래스가 같은 메시지에 대해서 각자의 방법으로 작용할 수 있는 능력이라고 볼 수 있다. 다형성은 같은 이름을 갖는 여러 가지 형태가 존재한다. 다형성을 제공해 주기 위해 C++에서는 연산자 다중 정의(overloading), 함수 다중 정의, 그리고 함수 재정의(overriding) 등을 제공해 주고 있지만, 자바에서는 메소드(함수) 다중 정의와 메소드 재정의를 제공해 주고 있다.


12)static


1.클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통적으로 사용해야하는 것에 static을 붙인다.
- 인스턴스를 생성하면, 각 인스턴스들은 서로 독립적기 때문에 서로 다른 값을 유지한다.
경우에 따라서는 각 인스턴스들이 공통적으로 같은 값이 유지되어야 하는 경우 static 을붙인다.

2. static이 붙은 멤버변수는 인스턴스를 생성하지 않아도 사용할 수 있다.
- static이 붙은 멤버변수(클래스변수)는 클래스가 메모리에 올라갈때 이미 자동적으로
생성되기 때문이다.

3. static이 붙은 메서드(함수)에서는 인스턴스 변수를 사용할 수 없다.
- static이 메서드는 인스턴스 생성 없이 호출가능한 반면, 인스턴스 변수는 인스턴스를
생성해야만 존재하기 때문에... static이 붙은 메서드(클래스메서드)를 호출할 때
인스턴스가 생성되어있을수도 그렇지 않을 수도 있어서 static이 붙은 메서드에서
인스턴스변수의 사용을 허용하지 않는다.
(반대로, 인스턴스변수나 인스턴스메서드에서는 static이 붙은 멤버들을 사용하는 것이
언제나 가능하다. 인스턴스변수가 존재한다는 것은 static이 붙은 변수가 이미 메모리에 존재한다는 것을 의미하기 때문이다.)

4. 메서드 내에서 인스턴스 변수를 사용하지 않는다면, static을 붙이는 것을 고려한다.
- 메서드의 작업내용중에서 인스턴스 변수를 필요로 한다면, static을 붙일 수 없다.
반대로 인스턴스변수를 필요로 하지 않는다면, 가능하면 static을 붙이는 것이 좋다.
메서드 호출시간이 짧아지기 때문에 효율이 높아진다.
(static을 안붙인 메서드는 실행시 호출되어야할 메서드를 찾는 과정이 추가적으로
필요하기 때문에 시간이 더 걸린다.)

5. 클래스 설계시 static의 사용지침
- 먼저 클래스의 멤버변수중 모든 인스턴스에 공통된 값을 유지해야하는 것이 있는지
살펴보고 있으면, static을 붙여준다.
- 작성한 메서드 중에서 인스턴스 변수를 사용하지 않는 메서드에 대해서 static을
붙일 것을 고려한다.

일반적으로 인스턴스변수와 관련된 작업을 하는 메서드는 인스턴스메서드(static이 안붙은
메서드)이고 static변수(클래스변수)와 관련된 작업을 하는 메서드는 클래스메서드(static이 붙은 메서드)라고 보면 된다.


컨테이너 : 어플리케이션의 실행환경


EJB : Enterprise JavaBeans - 한마디로 말해 분산 컴포넌트와 DB에 대한 접근 방법을 제공하는 기술이라고 할 수 있다. 복잡한 구조와 많은 코드, 복잡한 XML 정의가 필요


POJO : Plain Old Java Object - EJB나 Servlet과 같이 컨테이너에 의존하는게 아니다. EJB에 얼마나 당했으면... 자바 SDK의 순수자바로 프로그래밍하는것이라고 이해하면 될것같음


IoC : Inversion of Control 역제어 - 꽉짜여진(무거운) 컨테이너에서는 운신의 폭이 넓지 않다. 객체 생성및 의존성에 대해서는 컨테이너가 제어권을 갖기 시작하면서 발생하는 문제점때문에 다시 개발자가 제어권을 일정부분 가져올수 있도록 만들자는것. 가령 교통신호를 완벽히 준수하는 자동차를 만들었다고 하자. 화재가 발생했는데 소방차가 교통신호 전부지키고 다닐순 없는법... 신호 조작을 하던지 아님 무시해야겠지..

 

lightweight container : 경량급 컨테이너 - EJB아키텍처처럼 무겁지 않으면서 EJB컨테이너가 지녀야할 기능을 갖는넘들. 스프링에 관한 소개를 보면 lightweight container 이고 IoC를 갖는다라고 나와있다.

 

SOA : Service-oriented architecture
비즈니스 프로세스(예를 들면, 신용카드 거래를 인증하거나 구매 주문을 처리하는 일)를 수행하는 일련의 소프트웨어 컴포넌트들을 말한다. 잘 정의된 인터페이스들을 가진, 재사용이 가능한 일련의 컴포넌트들로 구축되는 기술건축방식

개발을 하다보면 기술력보단 업무 이해가 우선되는 경우가 많이 있다.

예를 들어 재고관리시스템을 만들기 위해선 재고관리에 대한 오프라인 노하우가 필요하다.

이런 노하우를 정리하여 인터페이스로 만들고 개발자는 그 인터페이스를 구현하면 맨땅에 헤딩하는것보단 쉽게 개발할수 있지 않을까나..

 

느슨한 연결 : Loosely coupled - 인터페이스등으로 통일감을 잃지 않으면서도 자율성을 보장. Ioc, lightweight container 요런 것들도 다 이런 느슨한 연결을 구현했다고 할수 있지 않을까.


SOAP : simple object access protocol 단순객체접근프로토콜 - xml이나 http방식으로 다른 컴퓨터의 데이터나 서비스를 호출하는 프로토콜


WSDL : Web services description language 웹서비스기술언어


Component : 컴포넌트 - 특정 동적을 하는 부품이라고 할까. 여러 객체가 모여 구분되는 동작을 하는 부품이 된다로고 생각하면 될것 같다.


CBD : Component Based Development 컴포넌트 기반 개발 OOP개념에서 진화하여 몇년전부터 자꾸 나오는 단어다.


ORM : Object-Relational Mapping - 객체(Object)와 디비(Relational Database 관계형 데이타베이스)를 맵핑하자는 거라고나 할까. 요즘에는 iBatis와 Hibernate가 대표적


Persistence : 메모리상의 데이터를 반영구적인 장소에 저장하는 것을 의미(디비에 읽고 쓰는것). 퍼시스턴스 레이어, 비지니스 레이어, 프리젠테이션 레이어란 단어는 많이 봤을것임


Persistence 프레임워크 : 에플리케이션이 Persistence 를 수행하는 방식을 의미


CRUD : Create,Read,Update,Delete


MVC 패쑤


DAO : Data Access Object


VO : value object 음.. 전에는 Vector Object의 약자로 코딩할때 VO라 써먹었는데

value object라 정확히는 모르겠슴....ㅡㅡ;


콜백메소드 : 곁다리로 수행하는 메소드.. Swing할때 콜백메소드 많이 봤었는데..



datasource : DrivierManager를 이용하여 디비커넥션을 가져오지 않고 datasource 네이밍만으로 커넥션을 가져옴. 디비설정변경시 환경파일하나만 수정함으로 모든게적용됨


rmi Remote Method Invovation 분산 시스템에서 상대의 자바 객체를 호출할 수 있는 프로토콜.

 

stub rmi 통신을 할때 클라이언트에서 서버쪽으로 보내는 대리인같은 존재(인터페이스)


skeleton rmi 통신을 할때 서버에서 받기위해서 내세우는 대리인같은 존재(인터페이스)


deploy : 애플리케이션을 사용할수 있게끔 해주는 과정 J2EE에서는 보통 war라는 형태로 묶어서 deploy한다.

 

JMS : Java Message Service : RMI는 원격지 메소드명을 반드시 알아야 하나 메시징 시스템에선 알필요없다. 그냥 메시지만 던지면 중간에서 통역관 같은 놈이 받아서는 상대편이 오면 전달해줌. 정팀장님이 메시징쪽 업무 한다고 들은것 같은데.

 

x-internet : 뭔가 좋은것 잔뜩 같다붙여놓은것, Rich Internet Application 웹이 하기 힘들었던 현란한 그래프나 엑셀의 그리드 형태, AJax등등...

 

xhtml : 기존의 html을 xml방식으로 표현 - 보면 별거 없다. 기존 html태그앞에 <xhtml:head>요런식으로 붙여주고 </>로 끝나게끔 해서 xml로 둔갑시킨놈. 요즘 내가 하는 일이다.

[출처] Java용어정리|작성자 Vaccine

'Software > Java' 카테고리의 다른 글

Eclipse 단축키  (0) 2013.07.04
Java 유의사항  (0) 2013.07.04
Class  (0) 2013.07.04
[JAVA] package 란?  (0) 2013.07.04
Java의 변수 타입  (0) 2013.07.04
Posted by MegaNzine
,