Class

Software/Java 2013. 7. 4. 14:52

객체지향 프로그래밍(OOP)에서 클래스는 특정 종류의 객체내에 있는 변수와 메쏘드를 정의하는 일종의 틀, 즉 템플릿이다.

따라서, 객체는 클래스로 규정된 인스턴스로서, 변수 대신 실제값을 가진다.

클래스는 OOP를 정의하는 개념 중 하나인데, 클래스에 대한 중요한 몇가지의 개념들은 다음과 같다.

클래스는 전부 혹은 일부를 그 클래스 특성으로부터 상속받는 서브클래스를 가질 수 있으며, 클래스는 각 서브클래스에 대해 수퍼클래스가 된다.

서브클래스는 자신만의 메쏘드와 변수를 정의할 수도 있다.

클래스와 그 서브클래스 간의 구조를 "클래스 계층(hierarchy)"이라 한다.

-위키피디아

클래스(Class)

- 객체의 구조, 종류, 동작 등을 나타내고 객체를 생성하는 일종의 틀. 클래스는 객체의 모든 특성을 가지고 있으며 자바 프로그램은 클래스의 집합이다.

- 학교에서 학생을 학급단위로 나누듯이 자바 프로그램을 실행할 수 있는 기본 단위를 말한다. 하나의 프로그램 영역을 나타내며 프로그램의 성격을 정의한다.

{}로 묶어준다. public 클래스는 단 하나만 존재하고, piblic 클래스의 이름은 반드시 파일이름과 같아야 한다.

- 객체를 생성하기 위한 명세. 클래스 안에는 데이터와 메소드가 존재

메소드(Method)

- 객체의 기능을 표현하는 방법. C언어에서의 함수와 역할과 정의 방법이 유사하지만 C에서처럼 독립적으로 호출될 수 없고, 반드시 객체와 같이 사용되어야 한다.

 

 


 

메소드는 객체가 할 수 있는 동작을 나타냅니다. 다른언어의 함수나 프로시저와 비슷합니다. 단, 자바에서 메소드는 반드시 클래스 안에 정의되어야 합니다. 메소드는 다음과 같은 형식으로 정의됩니다.

접근제한자

: private - 같은 클래스 내에서만 접근이 가능

protected - 하위클래스 또는 같은 패키지 내의 모든 클래스에서 접근가능

default(접근제한자생략시) - protected와 유사하나 하위클래스에서는 접근불가

public - 어떤 클래스에서도 접근이 가능

리턴타입

: 메소드의 실행결과로 반환되는 데이터타입입니다. 리턴값의 타입과 반드시 일치해야 하며, 반환값은 하나만 가능합니다.

void는 리턴값이 없다는 것을 의미합니다.

매개변수선언

: 메소드가 외부로부터 전달받는 데이터타입과 일치해야 합니다. 지역변수와 같습니다.

메소드이름

: 특별한 규칙이 있는것은 아니지만 소문자로 시작되는 동사가 먼저오고 다음에 명사나 형용사가 오는것이 관례입니다.

자바에서는 항상 값에 의한 전달(call by value)을 합니다. 어떤 변수에 담긴 값을 다른 변수에 담는 다는 것은 복사본을 담는것과 같습니다. 따라서 한쪽에서 값이 변해도 다른쪽 변수의 값에는 영향을 미치지 않습니다. 이것은 참조타입의 변수에도 똑같이 적용됩니다.

여러가지 데이터 타입에 같은 처리를 수행하는 경우에는 이름이 같고 매개변수의 개수, 타입, 순서 등이 다른 메소드를 여러개 선언합니다. 이를 중복메소드(overloading)라고 합니다.

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

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

패키지란 클래스와 소스파일을 폴더형태로 관리하기 위한 저장공간을 의미한다.

프로젝트 생성시

다음 구문의 의미는

이 파일(*.java)에 선언된 클래스들이

컴파일된 후 *.class로 변환후 속하게 될 패키지의 경로(디렉토리경로)를 나타낸다.

package exam.bluetoothtestyoo; //자신이 속할 패키지 이름을 적어준다

public class test4 {
}

 

이렇게 클래스들을(*.class) 한곳에 모아두면 아래와 같은 import문을 통해서 필요한 클래스들을 불러 쓸 수 있다.

한번만 import 해주면 그 파일일 내에서는 더이상 전체 패키지 경로를 사용하지 않아도 된다.

import exam.bluetoothtestyoo.*; //패키지명.클래스명,

 

아래와 같은 패키지 이름을 사용한다면

소스파일(xxx.java)은 아래의 경로에 생성된다.

BlueToothTestYoo\src\exam\bluetoothtestyoo

 

javac.exe로 컴파일되면 클래스파일(xxx.class)는 아래의 경로에 생성된다

BlueToothTestYoo\bin\exam\bluetoothtestyoo

 

패키지이름 설정 창

 

 

 

출처:http://daniel00.tistory.com/18

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

Java 용어  (0) 2013.07.04
Class  (0) 2013.07.04
Java의 변수 타입  (0) 2013.07.04
Java Data Type (Primitive & Reference)  (0) 2013.07.04
[과제]1 ~ 9 까지 int 형식으로 입력 받아서 해당하는 단을 출력  (0) 2013.07.04
Posted by MegaNzine
,
2. 변수의 타입(Type)

모든 변수에는 타입(Type 또는 형形)이 있으며, 변수의 타입 따라 변수에 저장할 수 있는 값의 종류와 범위가 달라진다. 변수를 선언할 때 저장하고자 하는 값을 고려하여 가장 알맞은 타입을 선택하면 된다.
변수의 타입은 크게 기본형과 참조형, 2가지로 나눌 수 있는데, 기본형 변수는 실제 값(Data)을 저장하는 반면에, 참조형 변수는 어떤 값이 저장되어 있는 주소를 값으로 갖는다.

자바는 C언어와는 달리 String을 제외한 참조형 변수간의 연산을 할 수 없으므로 실제 연산에 사용되는 것은 모두 기본형 변수이다.


기본형(Primitive Type)
- boolean, char, byte, short, int, long, float, double 계산을 위한 실제 값을 저장한다.

참조형(Reference Type)
- 8개의 기본형을 제외한 나머지 타입, 객체의 주소를 저장한다.

[참고]참조형 변수는 null 또는 객체의 주소(4 byte, 0x0~0xffffffff)를 값으로 갖는다. null은 어떤 값도 갖고 있지 않음, 즉 어떠한 객체도 참조하고 있지 않다는 것을 뜻한다.

기본형의 개수는 모두 8개이고, 참조형은 프로그래머가 직접 만들어 추가할 수 있으므로 그 수가 정해져 있지 않다.

참조형 변수를 선언할 때는 변수의 타입으로 클래스의 이름을 사용하므로 클래스의 이름이 변수의 타입이 된다. 그러므로 새로운 클래스를 작성한다는 것은 새로운 참조형을 추가하는 셈이다.

다음은 참조변수를 선언하는 방법이다.


클래스이름 변수명;

Date today;


Date클래스 타입의 참조변수 today를 선언한 것이다. 참조형 변수는 null 또는 객체의 주소를 값으로 갖으며 참조변수의 초기화는 다음과 같이 한다.


Date today = null;
또는
Date today = new Date();


객체를 생성하는 연산자 new의 연산결과는 생성된 객체의 주소이다. 이 주소가 대입연산자(=)에 의해서 참조변수 today에 저장되는 것이다.
이제 참조변수 today를 이용해서 생성된 객체를 사용할 수 있게 된다.

[참고]기본형은 저장할 값(Data)의 종류에 따라 구분되므로 기본형 변수의 종류를 얘기할 때는 자료형(Data Type)이라는 용어를 쓰고, 모든 참조형은 종류에 관계없이 4 byte의 주소(0x0 ~ 0xffffffff 또는 null)을 저장하기 때문에, 참조형 변수들은 값(Data)이 아닌, 어떤 객체의 주소를 담을 것인가에 따른 객체의 종류에 의해서 구분되므로, 참조형 변수의 종류를 구분할 때는 자료형(Data Type)대신 타입(Type)이라는 용어를 사용한다. 타입이 자료형을 포함하는 보다 넓은 의미의 용어이므로 반드시 구분해서 사용할 필요는 없다.


2.1 기본형(Primitive Types)

기본형에는 모두 8개의 타입이 있으며, 크게 논리형, 문자형, 정수형, 실수형, 4가지로 구분된다.


논리형 - true와 false 중 하나를 값으로 갖으며, 조건식과 논리적 계산에 사용된다.
문자형 - 문자를 저장하는데 사용되며, 변수 당 하나의 문자만을 저장할 수 있다.
정수형 - 정수 값을 저장하는 데 사용된다. 주로 사용되는 것은 int와 long이며,
byte는 이진데이터를 다루는데 주로 사용되며,
short은 C언어와의 호환을 위해서 추가하였다.
실수형 - 실수 값을 저장하는데 사용된다. float와 double밖에 없다.



[표2-2]기본형의 종류와 크기

[참고] 4개의 정수형(byte, short, int, long)중에서 int형이 기본(default) 자료형이며, 실수형(float, double)중에서는 double형이 기본 자료형이다.

논리형인 boolean은 나머지 7개의 자료형과 연산이 가능하지 않지만, char는 문자를 내부적으로 정수값 코드로 저장하고 있기 때문에 정수형과 밀접한 관계가 있다.
정수형과 실수형의 경우에는 여러 개의 변수형이 있지만, 특별히 큰 값을 다루어야 하지 않는 한 int 와 float를 주로 사용한다.


[표2-3] 8가지 기본형(Primitive Type)과 저장 가능한 값의 범위

[참고] float와 double의 음의 최대값과 최소값은 양의 최대값과 최소값에 각각 음수 부호를 붙이면 된다. 실수형은 소수점이하의 자리수, 즉 정밀도가 중요하기 때문에, 얼마나 0에 가까운 값을 표현할 수 있는지도 큰 의미를 갖는다.

각 자료형이 가질 수 있는 값의 범위를 정확히 외울 필요는 없고, 정수형(byte, short, int, long)의 경우 -2n-1~ 2n-1-1(n: bit수)이라는 정도만 기억하고 있으면 된다.
예를 들어 int형의 경우 32bit(4byte)이므로 -231~ 231-1의 범위를 갖는다.

210=1024≒103이므로 231=210*210*210*2 = 1024 * 1024 * 1024 * 2 ≒ 2 * 109

따라서, int형은 대략 9자리수(약 2,000,000,000)의 값을 저장할 수 있다는 것을 알 수 있다. 9자릿수에 가까운 자리수(7자리나 8자리)의 수를 계산할 때는 넉넉하게 long형(약 19자리)을 사용하는 것이 좋다. 연산 중에 저장범위를 넘어서게 되면 원하지 않는 값을 결과로 얻게 될 것이기 때문이다.
정수형에서 int를 실수형에서는 float를 주로 사용하므로, int와 float의 범위를 기억해서, int와 float의 범위를 넘는 값을 다뤄야 할 때 long과 double을 사용하면 된다.

기본 자료형의 크기를 쉽게 외우는 방법은 다음과 같다.


- boolean은 true와 false 두 가지 값만 표현할 수 있으면 되므로 가장 작은 크기인 1 byte.
- char은 자바에서 유니코드(2 byte 문자체계)를 사용하므로 2 byte.
- byte는 크기가 1 byte라서 byte.
- int(4 byte)를 기준으로 짧아서 short(2 byte), 길어서 long( 8byte). (short <-> long)
- float는 실수값을 부동소수점(floating-point)방식으로 저장하기 때문에 float.
- double은 float보다 두 배의 크기(8 byte)와 두 배의 정밀도(double-precision)를 갖기 때문에 double.




2.2 논리형 - boolean

논리형에는 boolean, 한가지 밖에 없다. boolean형 변수에는 true와 false 중 하나를 저장할 수 있으며 기본값(default)은 false이다.
boolean형 변수는, 대답(yes/no), 스위치(on/off) 등의 논리구현에 주로 사용된다. 그리고, boolean형은 true와 false, 두 가지의 값만을 표현하면 되므로 기본형 중에서 가장 크기가 작은 1 byte이다.

[참고] 1 byte는 8 bit이므로 2의 8제곱, 256가지의 값을 표현할 수 있다. 따라서 boolean형은 크기가 1byte이므로 256가지의 값을 표현할 수 있으나, true와 false, 2가지의 값만을 표현하는데 사용되고 있다.
아래 문장은 power라는 boolean형 변수를 선언하고 true로 변수를 초기화 했다.


boolean power = true;


[주의] Java에서는 대소문자를 구별하기 때문에 TRUE와 true는 다른 것으로 간주하므로 주의하도록 한다.



2.3 문자형 - char

문자형 역시 char 한가지 밖에 없다. 기존의 많은 프로그래밍의 언어에서 문자형의 경우 1 byte(ASCII코드)의 크기를 갖지만, Java에서는 유니코드(Unicode)문자 체계를 사용하기 때문에 크기가 2byte이다.

[참고] Unicode는 세계 각 국의 언어를 통일된 방법으로 표현할 수 있게 제안된 국제적인 코드 규약이다.
미국에서 개발되어진 컴퓨터는 그 구조가 영어를 바탕으로 정의되어 있기에 26자의 영문 알파벳과 몇 가지 특수 문자를 표현하기에는 1바이트로 충분하였기 때문에 모든 정보(문자)가 1바이트를 단위로 표현되고 있었으나 동양3국의 언어 표현인 한글, 한자 또는 일어 등과 같은 문자는 그 구조가 영어와 달라서 1 바이트로는 표현이 불가능하기에 2바이트로 조합하여 하나의 문자를 표현하는 컴퓨터의 구조적 문제점을 바탕으로 유니코드가 만들어 졌다. 유니코드에 대한 보다 자세한 내용은 원한다면, http://www.unicode.org/standard/translations/korean.html을 방문해보도록 하자.

[참고]아스키는 128개의 가능한 문자조합을 제공하는 7비트(bit) 부호로, 처음 32개의 부호는 인쇄와 전송 제어용으로 사용된다. 보통 기억장치는 8비트(1바이트, 256조합)이고, 아스키는 단지 128개의 문자만 사용하기 때문에 나머지 비트는 특수문자에 사용된다.


char형의 크기는 2 byte이므로 16진수로 0000부터 ffff까지, 문자를 표현하는데 65536개(2의 16제곱)의 코드값을 사용할 수 있으며, char형 변수는 이 범위 내의 코드값 하나를 저장할 수 있다.
예를 들어 알파벳 A의 유니코드값은 0041이다. char형 변수에 문자 A를 저장하려면 아래와 같이 한다.


char firstLetter = 'A' ;
또는
char firstLetter = '\u0041' ; // 16진수 41은 10진수로 65


char형 변수 firstLetter를 선언하고, 문자 A를 저장했다. char형 변수에 문자를 저장할 때는 "(홑따옴표)로 문자를 둘러싼다. 두 번째는 문자의 코드를 이용해서 문자형 변수 firstLetter에 값을 저장했다.
문자형 변수에 값을 저장하는 데는 위의 두 가지 모두 가능하지만, 주로 첫 번째 방식으로 문자를 저장한다.
다음은 char형이 저장되는 방식을 short형과 함께 비교해 보았다.


[표2-4]char형과 short형의 값 비교

char형이나 short형은 크기가 모두 2 byte(16 bit)지만, 범위가 다르다. char형은 0~65535이고 short형은 -32768~32767이다.

하지만, 둘 다 2 byte이기 때문에 표현할 수 있는 수는 65536개로 같다. char형은 문자의 코드값을 저장하므로 음수를 필요로 하지 않기 때문에 2진수로 표현했을 때의 첫 번째 자리를 부호에 사용하지 않는다. 반면에 short형은 첫 번째 자리를 부호를 표현하는데 사용하기 때문에 서로 다른 범위를 갖게 되는 것이다. 이처럼 char형은 정수형과 표현방식이 같기 때문에 정수형과 깊은 관계가 있다.

만일 어떤 문자의 코드값을 알고 싶으면, char형 변수를 정수형(int)으로 변환하면 된다. 어떤 타입(Type, 형)을 다른 타입으로 변환하는 것을 형변환(캐스팅, casting)이라고 하는데, 형변환에 대해서는 후에 자세히 설명하도록 하겠다. 지금은 문자의 코드값을 알아내는 방법과, 어떤 코드가 어떤 문자를 나타내는가를 알아내는 방법이 있다는 정도만 알면 된다.

[예제2-1] CharToCode.java

class CharToCode {
public static void main(String[] args) {
char ch = 'A'; // char ch = '\u0041';로 바꿔 써도 같다.
int code = (int)ch;
System.out.println(ch);
System.out.println(code);
}
}
[실행결과]
A
65

위의 예제를 실행하면 65가 화면에 출력되는데, 문자 A의 코드가 10진수로 65임을 뜻한다.(16진수로는 41)

[예제2-2] CodeToChar.java

class CodeToChar {
public static void main(String[] args) {
int code = 65; // 또는 int code = 0x0041;
char ch = (char)code;

System.out.println(code);
System.out.println(ch);
}
}
[실행결과]
65
A

이 예제는 코드값 65(16진수로 41)가 어떤 문자를 뜻하는지를 알아낼 수 있는 방법을 알려 준다.
[참고] char형은 크기가 2byte이고, 2byte는 16bit이므로 2의 16제곱(65536)개의 값을 저장할 수 있다. 0을 포함하므로 범위는 0~65535, 16진수로는 0x0000~0xffff가 된다.

두 예제에서 볼 수 있듯이 char형의 변수를 정수형(int)으로 변환(casting)하면, 변수에 저장되어 있는 문자의 코드값을 10진수로 얻을수 있다(CharToCode.java). 반대로 한 코드가 어떤 문자를 나타내는지 알고 싶으면, 코드를 정수형 변수에 저장한 다음, char형으로 변환하여 출력하면 된다(CodeToChar.java).

임의로 0~65535사이의 값을 하나 선택한 다음, CodeToChar.java를 이용해서 선택한 코드가 어떤 문자를 뜻하는지를 알아보거나 반복문을 이용해서 유니코드 전체를 출력해 보는 것도 흥미로울 것이다.

10진수로 66(16진수로 42)을 문자형으로 변환하여 출력하면 어떤 문자가 출력될까?

[참고]유니코드(Unicode)는 ASCII코드와의 호환을 위해서, 유니코드 코드번호 1부터 128까지의 문자를 ASCII코드의 1부터 128까지의 문자와 동일하게 지정하였다.

영문자 이외에 Tab이나 space 등의 특수문자를 저장하려면 아래와 같이 하도록 한다.


char tab = '\t';


\t는 실제로는 두 문자로 이루어져 있지만, 단 한 문자 Tab을 의미한다.
아래의 표는 Tab과 같이 특수한 문자를 어떻게 표현할 수 있는지 알게 해준다.


출처 : http://cafe.naver.com/javachobostudy/34960

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

Class  (0) 2013.07.04
[JAVA] package 란?  (0) 2013.07.04
Java Data Type (Primitive & Reference)  (0) 2013.07.04
[과제]1 ~ 9 까지 int 형식으로 입력 받아서 해당하는 단을 출력  (0) 2013.07.04
Java의 기초  (0) 2013.07.04
Posted by MegaNzine
,