Jose M. Fern�ndez ���ڿ��� �����ϱ�
|
���: �� ���� ����� ������ ���α��ֿ� ����
�������� å�� ������� �Ѵ�. ù ��° ������� �ڹ� ����� Ư���� ���� ������ �Ұ��� �߰�,
�̹����� �ڷ���, ����, ��� ���� ����ؼ� �����Ϸ��� �Ѵ�. ����� Ŭ����(class)���
����� �߿��� ������ �ִ�. Ŭ������ ������ �ڹ� ���α� ����� �ٽ��� �ȴ�.
To center the classes topic, the
first part will be as ESQUEMATICA�? as possible, due to the similarity to the
rest of the programming languages.
�ڹ� �ּ��� ������ �� ���� ��� ���� �ϳ��� �� �ִ�:
�ĺ��ڴ� �����Ϸ��� �װ͵��� �ĺ��ϵ��� ����, Ŭ����, �ҵ�(method)�� �־��� �̸��̴�. ���ĺ� ����, ����, ����, �� ��ȣ�� � ���ڿ��� ����� �� �ִ�. ���ڷ� �����ؼ��� �� �ȴ�.
�ڹٴ� �����ڷμ� �� ���� Ư���� ���ڸ� ����Ѵ�. ���� ���� ���̴� ���� ; ������������, ���� ������ �� �˾� ����:
��ȣ | �ؼ� |
() | �ҵ� ���ǿ� ȣ�� �� �Ű����� ����� �����Ѵ�. ���� ǥ���� �켱 ����(expressions precedence)�� �����ϱ� ���� ���ȴ�. Ȥ��, ���� ����� �ڷ��� ��ȯ���� ǥ������ �����Ѵ�. |
{} | �ڵ������� �ʱ�ȭ�Ǵ� �迭(vector)�� ������ �����Ѵ�. �ڵ� ����(code block)�� �����Ѵ�. Ŭ����, �ҵ�, ���� ����(local scope)�� �Բ� ���ȴ�. |
[] | ��Ʈ����(matrix) �ڷ����� �����Ѵ�. ��Ʈ������ �ִ� ���� �����Ѵ�. |
; | ���� ������. |
, | ���� ���� �������� �ĺ��ڵ�� �����Ѵ�. for ������ ������� �����Ѵ�. |
. | ��Ű��(package), ���� ��Ű��, Ŭ���� ��Ī�� �����Ѵ�. ������ �����κ��� ���� �Ǵ� �ҵ带 �����Ѵ�. |
�ٽɾ�� �ڹ� ���� ���Ǿ����� �ĺ����̸� �ڹٿ� ���� ���ǵ� �ٿ� �ٸ��� ���� �� ����. ���� ǥ�� �ڹ� �ٽɾ���� ���δ�:
abstract | double | int | super |
boolean | else | interface | switch |
break | extends | long | synchronized |
byte | false | native | this |
byvalue | final | new | threadsafe |
case | finally | null | throw |
catch | float | package | transient |
char | for | private | true |
class | goto | protected | try |
const | if | public | void |
continue | implements | return | while |
default | import | short | |
do | instanceof | static |
���� ������� �ڹٴ� �����ϰ� ��ü�������̶�� ����ߴ�. ������ �ұ��ϰ�, ȿ������ �����ؼ�, �ڹٴ� ��ü�� �ƴ� "�ܼ���" �ڷ��� ���� ���� �����Ѵ�. �Դٰ�, �̽ļ��� ������, ��� �ڷ����� �����ϰ� ���ǵ� ������ ������.
�ܼ� �ڷ����� �� ���� ���� ������ �� �ִ�:
�ڷ��� | ��Ī | ũ�� | ���� |
���� | long | 64 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
int | 32 | -2,147,483,648 ~ 2,147,483,647 | |
short | 16 | -32,768 ~ 37,767 | |
byte | 8 | -128 ~ 127 | |
�Ǽ� | float | 32 | 3.4 e-038 a 3.4 e+038 |
double | 64 | 1.7 e-308 a 1.7 e+308 | |
���� | char | 16 | Unicode |
�ο︰ | boolean | true �Ǵ� false |
�Ϲ�������, ������ �̷� ������� ����ȴ�:
identifier type [=value] [,identifier [=value]......]; |
��:
int a = 4, b, c=7; char c; myclass class; |
��κ��� ���α��� ������ �� ������ ���� ���ָ� �����Ѵ�. ����(global)�� ����(local)�� �װ��̴�. ���� �̴� �ڹ� ��ü ������ �� �������� �ʴ�. �� �� �����ؼ�, �� ���� �ֿ� ������ Ŭ������ �ҵ忡 ���� ���ǵǴ� ���̴�.
int
���� byte
���� ������ ��ŭ ����� Ŀ�� �Ѵ�.
���� �������� ��ȯ�� �ʿ�� ���� �ʴ´�.
���� ���� char
�� �Ǵ� boolean
���� ȣȯ���� �ʴ´�.
�Ӹ� �ƴ϶� boolean
���� �ٸ� ������ �ڷ������ ���� ȣȯ���� �ʴ´�.
int ���� byte ���� �����ϰ� �ʹٸ�, ������ ���� ���Ŀ� ���� �������� ��ȯ�� ����Ͽ��� �Ѵ�:
(type) value |
���⼭, type�� �ڷ��� ��ȯ ����� ��Ÿ����. ��:
int a; char b; a=(int) b; |
�ڵ�ȭ�� �� ��ȯ�� ������ ����� �ʷ��ϱ� ������ �ݵ�� �����ؾ� �Ѵ�. ���� ���:
�ε� �Ҽ� ���� ���� ������ ��ȯ�� ��, �Ҽ��� ���ϰ� ���õȴ�:
int a; double d= 125.43; a=(int) d;������ ������ 125.�� ������ byte b; int i=257; b=(byte) i;b�� ������ 1�� �����µ�, 256�� byte ���� ������ ��쿡 257�� 256���� ���� ����κ��� ���� ���̴�. byte b; double d= 340.123; b=(byte) d;b�� 84�� ���� ������ �ȴ� |
�̷� ��� ��ȯ�� �����Ϸ��� ���������ͷ� ����ȴ�. � ������ ������ ã�Ƴ��� ���Ѵٸ� ���̴�.
������ | �ؼ� |
+ | ���ϱ� |
- | ���� |
* | ���ϱ� |
/ | ������ |
% | ������ |
++ | ���� |
+= | ���ϰ� ���� |
-= | ���� ���� |
*= | ���ϰ� ���� |
/= | ������ ���� |
%= | �������� ���ϰ� ���� |
-- | ���� |
������ �����ڴ� ������ �ε� �Ҽ��� �� ���ʿ� ����� �� �ִ�. ���� ���:
int a=38; double d=41.95; int c=a%10; double e=d%10; |
c ������ 8�� �ȴ�. e ������ 1.95�� ������.
���� �����ڵ��� ������ ���� ������ �����ϴ�:
a = a + 4; �� a+=4; �� ����
a = a % 2; �� a%=2; �� ����
����, ������ ���� ���� �� �ִ�:
var = var op expression; �� var op= expression; �� ġȯ�� �� �ִ�.
������ | �ؼ� |
~ | ��Ʈ ������ ���� NOT |
& | ��Ʈ ������ AND |
| | ��Ʈ ������ OR |
^ | ��Ʈ ������ ��Ÿ�� OR |
>> | ���� ����Ʈ |
>>> | 0���� ä������ ���� ����Ʈ |
<< | ���� ����Ʈ |
&= | ��Ʈ ������ AND�� ���� |
|= | ��Ʈ ������ OR�� ���� |
^= | ��Ʈ ������ ��Ÿ�� OR�� ���� |
>>= | ���� ����Ʈ�� ���� |
>>>= | 0���� ä������ ���� ����Ʈ�� ���� |
<<= | ���� ����Ʈ�� ���� |
������ | �ؼ� |
== | �� ���� |
!= | �� �ٸ� |
> | ���� ū |
< | ���� ���� |
>= | ���ų� ���� ū |
<= | ���ų� ���� ���� |
�ٸ� ����(C/C++)���� ��, boolean ������ True�� False�̴�. ��, �̰͵��� ��ġ�� �ƴϴ�..
������ | �ؼ� |
& | ������ AND |
| | ������ OR |
^ | ������ XOR(��Ÿ�� OR) |
|| | ���� OR |
&& | ���� AND |
! | ���� ������ NOT |
&= | AND ���� |
|= | OR ���� |
^= | XOR ���� |
== | �� ���� |
!= | �� ���� ���� |
?: | ���� If-then-else |
OR ���� �������� ����� ������ ����: �� ��° �������� ���� ����Ǿ����� ���� ù ��° �����ڰ� ���̸� ���̴�. ����������, AND ���� �����ڴ� �� ��° �������� ���� ������� ù ��° �����ڰ� �����̸� �����̴�.
���� �������� �Ϲ����� �����̴�:
Expession1 ? expession2 : expression3
���� Expression1�� ���̸�, expresion2�� ����ǰ�; ���� �����̸�, expression3�� ����ȴ�.
���� �켱 ����:
( ) | [ ] | . | |
++ | -- | ~ | ! |
* | / | % | |
+ | - | ||
>> | >>>> | << | |
> | >= | < | <= |
= = | != | ||
& | |||
' | |||
| | |||
&& | |||
|| | |||
?: | |||
= | Op= |
���� | ���� | �ؼ� |
���� | if | if ( condition ) sentence1; else sentence2; |
���� if�� | If (condition ) sentence; else if (condition) sentence; else if (condition) sentence; . . else sentence; | |
switch | switch (expression){ case value1: sentence; break; case value2: sentence; break; . ... default : sentence; } | |
�ݺ� | while | while (condition) { sentence; } |
do while | do { sentences; } while (condition) | |
for | for (initialization, condition, iteration) { sentences; } | |
�б� | break | switch�κ��� ����.
loop��� ���� |
continue | �� loop �ݺ����κ��� ���� �������� ������ loop�� ����Ѵ� | |
return | �ҵ�κ��� ��Ȯ�ϰ� �����Ѵ� |
Ŭ������ ��ü�� ���� �� (����)�̰�, ��ü�� Ŭ������ �ν��Ͻ�(instance)�̴�. �ڹٴ� ���� �Լ� �Ǵ� ������ �������� �ʾ�, ��� ���α� Ȱ��(actions) (�ҵ�)�� �ݵ�� Ŭ���� ������ ���ǵǾ�� �Ѵ�.
Ŭ������ ����� "class"�� ����Ͽ� ���ǵȴ�. ������ Ŭ���� ���Ǵ� ������ ����:
class class_name { Type instance1_of_variable; Type instance2_of_variable; . . ... type instance_variable; type method_name(parameter_list){ //body of the method } . . .. type name_of_the_method(parameter_list){ //body of the method } } |
Ŭ���� ������ ���� �Ǵ� ������ �ν��Ͻ� ����(variables of instances)��� �θ���. �ҵ�� �ڵ带 �����ϰ�, Ŭ������ �����Ͱ� ��� ���� �� �ִ��� �����Ѵ�.
Ŭ������ ��ü�� ��� ���ؼ� �� �ܰ谡 �ʿ��ϴ�:
��ü�� �������� �� �Ҵ��ϰ� �װ��� ������ ���� ��.
variable = new name_of_the_class(); |
���⼭, "variable"�� �����Ϸ��� Ŭ������ �����̰�, name_of_the_class�� �ν��Ͻ��� �Ǵ� Ŭ������ ��Ī�̴�. ��ü�� ������ ������ ǥ���Ѵٸ� ������ ����:
type name_of_the_method (parameter_list) { //method_body } |
"type"�� �ҵ忡 ���� ���ϵǴ� �ڷ����̴�; Ŭ���� ���� �����Ͽ� � ��ȿ�� �ڷ����̶� �����ϴ�. Ȥ��, � ���� �������� ���� ���� �ִ�(void).
�Ű����� ���(parameter list)�� �ڷ���-�ĺ��ڰ� ������ ���ӵ� ���ε� ��ǥ�� ���еȴ�.(������: ���� ���������� �ݷ����� �����Ѵٰ� �Ǿ� ������, �ڹ� ��� ������ �����Ͽ� ��ǥ�� �ٲپ� �ٷ� ����.) �Ű������� �ҵ忡 �־��� ������ ���� �� �����̴�. �ҵ尡 �Ű������� ������ �ʴ´ٸ�, ����� ��� ���� ���̴�.
"void"�� �ƴ� ���� �����ϴ� �ҵ� ����:
return value; |
���⼭ value�� ���ϵǴ� ���̴�.
�ڹٴ� �ſ� ���� �ҵ带 �����ϴµ� ��ô �ٷ�� ���� �����ϴ�. ���� ���⼭���� �̹� ����� ������, �ҵ��� �ſ� �߿��� ������ ���� ������ �Ѵ�.
������, ��� �ռ�, ������ ���μ� ������ ������ �ٽ� ������ ����.
(Ǯ�� ����) �簢�� ����� ������ �뷮�� ����ϴ� Ŭ������ ��������:
�ڵ� | �ּ� |
class capacity { double length; double width; double height; void CalcVolume () { double volume ; volume = length*width*height; System.out.println("Volume: " + volume); } } |
�������� �� �� �ֵ���, �� ���� �ν��Ͻ� ���� length, width, height�� �����ϴ� "capacity"��� �̸��� Ŭ������ �����ߴ�. ���� �� ���Ǹ� ����ϴ� �ҵ带 �����ߴ�. �ҽ� ������ �̸��� capacity.java��� �θ� ���̴�. �װ��� �������ϸ�, capacity.class Ŭ����(����)�� ���� ���̴�. |
�� Ŭ������ ���������� ��� �۵��� ���� �� ������, ���ø��� ����, ���ɾ� ��(command line)���κ��� ����Ǵ� main() �ҵ带 ������ �ʴ´�. �� Ŭ������ ��ü (�ν��Ͻ�)�� ������ �� �ִ� ���ø�(template)�� ������ ���̴�. �� ������ �̷�� ����, ���ɾ� �����κ��� ����� �� �ִ� Ŭ������ �����Ϸ��� �Ѵ�.
�ڵ� | �ּ� |
class example { public static void main(String Arg[]){ capacity p1=new capacity(); capacity p2=new capacity(); p1.length = 16; p1.width=3; p1.height=2; // p2.length = 25; p2.width=6; p2.height=3; // p1.CalcVolume(); // p2.CalcVolume(); } } |
capacity ���� ������ �� �� ���ǵȴ�. p1, p2�� �װ��̴�.
new �����ڷ� capacity ���� ��ü�� �� �� �����ϸ�, p1, p2 ������ ���� ��ü���� ������ �� �ִ�.
��������, ������ ��ü�� ���� ������ ���� �����Ѵ�. p1���� ������ ��ü�� CalcVolume() �ҵ带 ȣ���Ѵ�. ����, ����� "Volume: 96"�� ȭ�鿡 ��������. p2�� ������ ��ü�� ������ �������, "Volume: 450"�� ȭ�鿡 ��������. |
p1.CalcVolume()�� ����Ǵ� ���, �ڹ� �ؼ��Ⱑ CalcVolume() ���� ���ǵ� �ڵ��� ��� ������. �ϴ� ��� ���� ������� ����Ǹ� ȣ���� ��ƾ�� �����ϰ� ������ ȣ���� �ٷ� ���� ��� ��ӵȴ�.
�Ű������� ���� �ҵ�. �� ����.
�ҵ��� ��ټ��� �ҵ带 �Ϲ�ȭ�ϵ��� ����ϴ� �Ű������� �Բ� ���ȴ�. �Դٰ�, �ҵ�� ���� ������ �� �ִ�, ���� ������ ��Ȳ������ ���� �� �ִ�, �پ��� �����Ϳ� �Բ� �۵� ������ �ҵ带 ���� �� �ִ�.
���� ������ ��������:
�ڵ� | �ּ� |
class capacity { double CalcVolume (double l, double a, double p) { double volume=l*a*p ; return volume; } } |
CalcVolume �ҵ�� �� ���� �Ű������� �����ϵ��� �����Ǿ���. ���� double ���� �����ϵ��� ���ǵǾ���. �� �۵��� return volume ���ɿ� ���� ����ȴ�. |
class example { public static void main(String Arg[]){ capacity p1 = new capacity(); capacity p2 = new capacity(); double vol; vol=p1.CalcVolume(10,3,2); System.out.println("Volume: " + vol); // vol=p2.CalcVolume(25,5,2); System.out.println("Volume: " + vol); } } |
�ҵ��� ȣ���� ���ϴ� �Ű������� �����Ͽ� ��������. vol ������ �ҵ��� ���� �����ϴµ�, ������ �ҵ�� ������ ���̾�� �Ѵ�. |
Ŭ������ �ֿ��� ������ ������(constructors)�̴�. Ŭ������ ��ü�� ������ ��, �� ����� � �ϵ��� �Ͼ�°��� �����Ѵ�. �̵��� ��κ��� Ŭ���� ���� ���� �ڽ��� �����ڸ� ���������� �����Ѵ�. ���� ���ǵ��� ������, (���� ������ ����) �ڹٴ� �⺻ ������(default constructor)�� ����Ѵ�.
Ŭ������ ���Ե� �����ڴ� ��Ȯ�ϰ� Ŭ������ ������ ��Ī�� ������. ���� �������� �ҵ��� �װͰ� �����ϴ�. ��ü�� ������ �Ŀ� new �����ڰ� ����DZ� ���� �����ڴ� �ڵ������� ����ȴ�.
�����ڴ� � �ڷ����� ������ �ʴ´�. ���������� Ŭ������ ���� �����ϱ� �����̴�.
�����ڴ� ��� ��ü ������ �ʱ�ȭ�� ����ȴ�. ����, ��ü�� �ν��Ͻ��� �����ϴ� �ڵ�� �װ��� �̿��ϴ� �غ�� ��ü�� ������. ������, �ν��Ͻ� ������ �����ڿ� ���� �ʱ�ȭ�ȴ�.
�̴� �ҵ�� �Բ� �̷����� ������, �����ڴ� �װ͵��� ���� �����ϰ� ����� �Ű������� ���� �� �ִ� . �� ��� ���ο� ������ �����ϱ� ���� ���� ������ �����ϵ��� ����.
�ڵ� | �ּ� |
class capacity { double length; double width; double height; // capacity(double l, double a, double p){ length=l; width=a; height=p; } // void CalcVolume () { double volume ; volume=large*wide*high; return volume; } } |
�����ڰ� Ŭ������ �߰��Ǵµ�, Ŭ������ ������ ��Ī�� �������� � �ڷ����� �������� �ʴ� �ҵ��� �ϸ��� ���δ�. �� �����ڴ� ������ ���ڷ� ����� ������ �ν��Ͻ��� �ʱ�ȭ�Ѵ�. |
class example { public static void main(String Arg[]) { capacity p1=new capacity(10,5,2); capacity p2=new capacity(25,6,2); double vol; vol=p1.CalcVolume(); System.out.println("Volume: " + vol); // vol=p2.CalcVolume(); System.out.println("Volume: " + vol); } } |
new �����ڴ� Ŭ������ �ν��Ͻ��� �����Ѵ�. �� Ŭ������ ���������� �ʿ��� �Ű������� ���Ѵ�. |
���� ��ü�� ���� � ������ �������� �ʴ´ٸ�, �� ��ü�� �� �̻� ���� �� ���ٰ� �����Ǿ�, �Ҵ�� �� �����ȴ�. �� ó���� ���α� ������ ���� �ڵ�ȭ�� ������� ����DZ� ������ ���������� ��ü�� �ı�(destroy)�� �ʿ䰡 ����.
������ �ұ��ϰ�, Ŭ������ �Ҹ���(finisher)�� �����̱� ���� �ҵ� "finalize()"�� ���ȴ�. �ؼ��Ⱑ ��ü�� �ı��� �� �� �ҵ尡 ����ȴ�. �� �ҵ忡, ��ü�� �ı��ϱ� ���� ����Ǿ����� �۵��� ���Խ�ų ���̴�.
�ҵ� ��ø(method overload).
������(�ϳ��� �������̽��� ���� �ټ��� �ҵ�)�� ��ü ���� ���α��ֿ��� �⺻���� �ٽ�(PILLARS )�� �ϳ��̴�. �ڹٴ� �ҵ� ��ø�� ���� �������� �����Ѵ�.
������ ��Ī�� ������ ������ �ҵ���� Ŭ���� ������ ���ǵ� �� ������, �װ͵��� ������ �Ű����� ��� �Ǵ� �ּ��� ������ ���� �ڷ����� �ݵ�� ������ �Ѵ�. ��ø�� �ҵ尡 ȣ��� �� ���Ǿ����� �ҵ��� ������ �����ϱ� ���Ͽ� �ڹ� �ؼ���� �ڷ��� �� ȣ��� �Բ� ���� ���ڵ��� ����Ѵ�.
��� �������� ������ �Ұ����ϵ��� ��������, ��ø�� �ҵ��� �� ������ ������ �½�ũ(task)�� ������ �� �ִ�. ���� �� �� ������ �ҵ� ��ø�� � ���踦 �Ͻ��� �� �־�� �Ѵ�. �ҵ尡 ��ø�Ǿ����� �Ͱ� ������ ������� �����ڵ� ��ø�� �� �ִ�.
���� ����.
�Ϲ�������, ���α��� ���� ���ڸ� �����ϱ� ���� �� ���� ����� ����Ѵ�:
���� ����.
��ü ���� ���α��ֿ��� �� �ٸ� �⺻���� �ٽ��� ĸ��ȭ(ENCAPSULATION)�̴�. �̰��� �����Ͱ� �ڵ�� �����ȴٴ� ���� �ǹ��Ѵ�. ������, ĸ��ȭ�� ���� ������ �����Ѵ�. �ٽ� ���ؼ�, ���α��� �Ϻδ� Ŭ������ ���(member)�� ������ �� �ִ�.
�ڹٿ��� ���� ������ 'public', 'private', 'protected'�̴�.
�ҵ� �Ǵ� �ν��Ͻ�-������ 'public'���� ���ǵ� ��, ���α��� � �κ����κ��͵� ������ �����ϴ�. ���� 'private'���� ���ǵȴٸ�, Ŭ���� ��ü�� �ٸ� �ҵ忡 ���ؼ��� ������ �����ϴ�. �⺻������ ��� �ҵ� �Ǵ� �ν��Ͻ�-�������� (�� �ڽ��� ���� ��Ű����) 'public'�̴�.
'protected' �����ڴ� ��Ӱ� �Բ� �ۿ��� �� ���ȴ�. ����� ���� �� �����̴�.
A ���� Ŭ����(superclass)�� Ư���� ����ϴ� Ŭ������ B�� ����� ���� B ���Ǹ� ���δ�:
class B extends A { // class definition } |
Ŭ���� B�� A ���� Ŭ������ ��� ����� �����ϴµ�, ���ڴ� �����Ӱ� ���Ǵ� ����(AUTONOMOUS) Ŭ������ �� �ִ�. ����, Ŭ���� B�� � �ٸ� Ŭ������ ���� Ŭ������ �� �� �ִ�.
�ڹٴ� ������ ���� Ŭ������κ��� �ϳ��� ���� Ŭ����(subclass)�� ����� ���� ���(multiple inheritance)�� ������� �ʴ´�.
���� ���� Ŭ������ 'private'�� ���ǵ� ������� �ִٸ�, ��ӵ� Ŭ������ ���� ������ �Ұ����ϴ�. ���� Ŭ������ ��������� ���� Ŭ������ ������ �ʿ䰡 �ִٸ�, ����� 'super'�� ���� �� �ִ�. �� ������� ���� Ŭ������ ���� ���е�(hidden) ���� Ŭ������ ������ �Ǵ� �ҵ带 ȣ���� �� �ִ�.
���� Ŭ������ �ҵ尡 ���� Ŭ������ �ҵ�� ������ ��Ī�� �ڷ����� ���� ��, �ҵ尡 �ߺ��ȴ�(overwritten)�� ���Ѵ�. �� Ư���� �ڹ��� ������ �ϸ��� �� ���ʸ� �����Ѵ�. "���� ���� �ҵ�(Dynamic selection method)"��� �θ���. �̴�, �Ź� ȣ�⸶�� ��� �ҵ尡 ���Ǿ�� �ϴ��� ������, ������ ���� �ڷ����� �����Ͽ� �����ϰ� ���� ��(execution time)�� ����ȴٴ� ���� �ǹ��Ѵ�.
���� ��������� �� Ŭ����(abstract classes), �������̽�(interfaces) ��� ���� ����� ��� �ɷ��� ��� ���̴�.
�� ������Ʈ�� Miguel Angel Sep�lveda�Կ� ���� �����˴ϴ�. � Jose M. Fernandez 1998 LinuxFocus 1998 |