본문 바로가기

Define Java

Jakarta Commons Lang 1. 살펴보기 Jakarta Commons Lang 1. 살펴보기 1. Jakarta Commons Lang Package Commons Lang 라이브러리는 자바 표준 JDK의 java.lang 패키지에 있는 기능들을 확장 또는 사용이 편하게 만들어 놓은 패키지입니다. 즉java.lang 패키지의 기능을 보다 편리하게 사용하기 위한 패키지입니다. 최상위 패키지에는 여러가지 유틸 클레스를 포함하고 있으며 서브클레스에는 여러 종류의 클레스와 예외 클레스 등을 포함하고 있습니다. 2. Download http://jakarta.apache.org/site/downloads/downloads_commons-lang.cgi (현재 2.3 최신버젼) 3. 패키지 구조 org.apache.commons.lang 사용하기 편한 정.. 더보기
JNDI 소개 많은 J2EE개발자들이 환경 변수(environment entries), DataSource 객체, JMS 메시지 수신지(JMS message destinations) 그리고 엔터프라이즈 빈 홈 인터페이스(enterprise bean home interfaces)를 찾고자 Java Naming and Directory Interface (JNDI)를 이용한다. 하지만 많은 사람들은 JNDI에 대한 진정한 이해 없이 이러한 기능을 하는 코드를 단순히 복사해서 붙이고 고칠 뿐이다. 이 팁은 사용자의 엔터프라이즈 시스템에 배포된 리소스를 액세스하기 위해 JNDI를 사용하는 방법을 소개한다. 엔터프라이즈 애플리케이션들은 그것들의 특성상, 비즈니스 오퍼레이션을 지원하기 위해 여러곳에 배포된 리소스들을 한데 모아야.. 더보기
정적 변수를 선언하는 방법들 정적 변수를 선언하는 방법 static을 이용하여 정적 변수를 선언할 떄 대부분 어떻게 사용하는가? public class StaticTest { private static int SIZE= 10; private static int[] myStatic = new int[SIZE]; } 대부분 이렇게 사용할 것이다. myStatic이라는 배열을 만들었다. 그렇다면 이 myStatic에 값을 할 당할때 어떻게들 사용하는가? myStatic은 배열이다. 배열에 값을 할당 할때 과연 어떻게 할 수 있을까?(반복문을 이용하는 방법중) 생성자를 만드는 방법도 있을것이고 메인메소드나 기타메소드에서 값을 할당 받는경우도 있다. 가장 쉽게 생각한 방법이 다음과 같은 두가지 방법일 것이다. ex1) public class.. 더보기
클래스? 인스턴스? 속성? 메소드? 객체? ① 클래스(Class) 2개 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현하는 요소, 즉 공통된 특성과 행위를 갖는 객체의 집합. 한 클래스를 기준으로 하여 그 기준 클래스의 상위 클래스를 슈퍼 클래스, 하위 클래스를 서브 클래스라고 함. ② 인스턴스(Instance) 하나의 클래스에 속하는 각각의 객체를 의미 ③ 속성(Attribute) 한 클래스내에 속한 객체들이 가지고 있는 데이터 값들을 단위별로 정의하는 것으로서 성질, 분류, 식별, 수량 또는 현재 상태 등을 표현. ④ 메소드(Method) 객체의 정의된 연산을 의미 하며, 객체의 상태를 참조하거나 변경하는 수단이 됨. ⑤ 객체(Object) 속성과 이를 처리하기 위한 메소드를 결합시킨 실체로써 객체는 각각의 상태를 가지고 있음. 객체.. 더보기
자바 예외처리(간단) 예외처리 의도한대로 프로그램이 진행되지 않고 다른 상황으로 흐름이 진행되는 상황을 말한다. 이런 예외가 발생했을 때 적절한 조취를 취해줄 수 있는 절차를 구현하도록 문법을 정해놓은 것이 예외처리이다. 에러의 종류 1. 문법에러(Syntax Error) 컴파일시 자바 컴파일러가 체크하기 때문에 쉽게 수정 할 수 있다. 2. 실행에러(Runtime Error) 1) 논리에러 개발자가 프로그램을 작성을 잘못하여 다른 결과가 나오는 것을 말한다. 2) 시스템에러 개발자의 의지와는 상관 없는 에러 수정을 할 수 없다. (Server Down) 3) 예외사항 예외사항은 정상적으로 프로그램이 동작하는 과정에서 만날 수 있는 에러를 말한다. 예를 들어 파일을 찾아서 열어야 하는데 없는 경우 같은 것이 속한다. 자바에서.. 더보기
자바의 접근제한자(한정자) Public 같은 클래스, 하위클래스, 또는 같은 패키지 내에 있는 어떤 클래스에서도 접근할 수 있습니다. 이 접근 권한은 클래스 또는 객체의 외부 인터페이스를 제공해 줄 때 주로 사용합니다. Private 같은 클래스 내에서만 접근가능 합니다. 다시 말해서, 이 접근 권한으로 지정된 변수 또는 메소드를 다른 객체에서 참조하거나 사용하는 것이 불가능하고, 자신의 클래스 내에 있는 메소드에서만 참조하거나 사용할 수 있습니다. 클래스가 제공하는 기능을 내부적으로 구현할 때 주로 사용하고, 이렇게 함으로써 완벽한 정보은닉이 가능합니다. Protected 자바에서 정의된 클래스들은 기본적으로 하나의 그룹 단위 또는 묶음단위로써 유지되는데, 이를 패키지라 합니다. 다시 말해서 패키지는 클래스들의 그룹이라 볼 수 .. 더보기
상속 상속 객체지향 개념은 클래스를 이용하여 새로운 클래스를 생성 또는 정의할 수 있도록 하고 있습니다. 예를 들어, 자동차가 갖는 일반적인 상태와 행동들을 자동차 클래스로 정의해 놓고, 이 자동차 클래스를 확장하여 버스만이 갖는 상태와 행동을 추가하여 버스 클래스를 정의하고, 트럭이 갖는 상태와 행동을 추가하여 트럭 클래스를 정의하고, 그리고 자가용이 갖는 상태와 행동들을 추가하여 자가용 클래스를 정의 할 수 있겠지요. 이 때, 자동차 클래스를 상위클래스(superclass)라 하고 버스 클래스, 트럭 클래스, 자가용 클래스 등을 하위클래스(subclass)라 하며, 이들 간의 관계에 대해 얘기할 때 “하위클래스는 상위클래스를 상속한다(inherit)”라고 합니다. 다시 말해서, 하위클래스는 상위클래스가 갖.. 더보기
생성자 생성자는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다. 따라서 인스턴스변수의 초기화 작업에 주로 사용되며, 인스턴스 생성 시에 실행되어야 할 작업을 위해서도 사용된다. 생성자 역시 매서드처럼 클래스 내에 선언되며, 구조도 메서드와 유사하지만 리턴값이 없다는 점이 다르다. 그렇다고 해서 생성자 앞에 리턴값이 없음을 뜻하는 키워드 void를 사용하지는 않고, 단지 아무 것도 적지 않는다. 1. 생성자의 이름은 클래스의 이름과 같아야 한다. 2. 생성자는 리턴 값이 없다. 클래스이름(타입 변수명, 타입 변수명, ... ) { 인스턴스 생성 시 수행될 코드, 주로 인스턴스멤버의 초기화 코드를 적는다. } Ex class Card { Card() { // 매개변수가 없는 생성자 //... } Ca.. 더보기
java.lang.Object Object 클래스 java.lang 클래스 Object java.lang.Object public class Object Object 클래스는 클래스 계층 루트입니다. 모든 클래스는 슈퍼 클래스로서 Object 를 가집니다. 배열을 포함한 모든 오브젝트는 이 클래스의 메소드를 구현합니다. 도입된 버젼: JDK1. 0 생성자의 개요 Object () 아무것도 하지 않음. 메소드의 개요 protected Object clone () 이 오브젝트의 카피를 작성해 돌려줍니다. boolean equals (Object obj) 이 오브젝트와 다른 오브젝트가 동일한지 어떤지를 나타냅니다. protected Object finalize () 이 오브젝트에의 참조는 이제 없으면 가베지 콜렉션에 의해 판단되었을 때에,.. 더보기
Strategy Pattern #2 Strategy Pattern #2 스트래티지 패턴 두번째 시간이다. 우선 저번에 필자가 냈던 문제를 생각해보자~ 1. 개발자는 로봇 게임을 제작중이다. 2. 게임을 더 재밋게 하기 위하여 개발자는 특수기능을 넣을려고 한다. 3. 현재는 특수기능이 "날 수 있는 기능" 밖에 없지만 이후에는 여러가지 기능이 추가 될 수도 있다. 해결방법으로 생각했던 상속을 사용하게 되면 현재 날아다니는 기능은 구현이 가능하나 나중에 특수기능이 더 많이 추가 된다면 문제가 발생한다. 그리고 또 오버라이딩을 한다면 로봇 수가 늘어 나게 될 때 개발자는 죽도록 노가다 코딩을 해야 될 것 이다. 이제 조금 더 쉽게 이 문제를 해결할 수 있는 방법을 생각 해 보자. 필자는 이 문제의 해답은 인터페이스를 잘 사용하므로써 해결 가능하.. 더보기