* 클래스와 객체
- 클래스란 '객체를 정의해놓은 것' 또는 클래스는 '객체의 설계도 또는 틀'
- 클래스는 객체를 생성하는데 사용되며, 객체는 클래스에 정의된 대로 생성됨
* 객체와 인스턴스
- 클래스의 인스턴스화 : 클래스로부터 객체를 만드는 과정
- 클래스의 인스턴스 : 어떤 클래스로부터 만들어진 객체
- 결국, 인스턴스는 객체와 같은 의미이지만, 객체는 모든 인스턴스를 대표하는 포괄적인 의미를 갖고 있으며,
인스턴스는 어떤 클래스로부터 만들어진 것인지를 강조하는 보다 구체적인 의미를 갖고 있음
* 객체의 구성요소 - 속성과 기능
- 속성(property) : 멤버변수(member variable), 특성(attribute), 필드(field), 상태(state)
- 기능(function) : 메서드(method), 함수(function), 행위(behavior)
>> 같은 클래스로부터 생성되었을지라도 각 인스턴스의 속성(멤버변수)은 서로 다른 값을 유지할 수 있으며,
메서드의 내용은 모든 인스턴스에 대해 동일하다.
* 모델링
: 현실 세계의 사물을 컴퓨터 세계로 가져오는 과정
1. primitive type : 8
2. reference type : array, class, interface
> 객체를 생성하기 위한 틀, Template, 설계도
- 객체의 설계도 : class
> 구성요소
1. member 변수, 멤버 필드(field)
2. member method
3. 생성자
- 생성자 : 특수 목적 메서드
> 멤버 변수의 초기화를 목적으로 가지고 있는 메서드
> 리턴하지도 않고 리턴 키워드도 없음
> void도 사용하지 않는다.
> 클래스명과 동일한 이름을 갖는다.
> 생성자를 따로 지정하지 않으면
기본생성자는(Marine()) 존재하는 것으로 간주
- 메모리에 올라와있는 변수 : instance
- c 참조값 : 객체
1 ) Car - myCar
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
package day08;
// 객체의 설계도 : class
// 구성요소
// 1. member 변수, 멤버 필드(field)
// 2. member method
// Car 클래스 시작
public class Car {
// 속성, 특징
int 핸들, 바퀴, 엔진, 문, 속도;
String 차종, 제조사;
// 행위, 동작
// 멤버 메서드
// 전진, 후진 정지, 가속, 감속
void 전진() {
System.out.println("부릉부릉~~~~");
}
void 후진() {
System.out.println("띠리리~~~~");
}
void 정지() {
System.out.println("끼익~~~");
}
void 가속() {
System.out.println("슝~~~~");
}
void 감속() {
System.out.println("~~~~ 감속 ~~~~");
}
}
|
cs |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
package day08;
// 현실 세계의 사물을 컴퓨터 세계로 가져오는 과정 : 모델링
// 1. primitive type : 8
// 2. reference type : array, class, interface
// 객체를 생성하기 위한 틀, Template, 설계도
public class TestMain01 {
public static void main(String[] args) {
// 설계도를 가지고 객체 만들기
// 자료형 참조변수
Car c;
// 참조변수 = new 생성자();
c = new Car();
// new 객체 할당 연산자
System.out.println("c : "+c);
System.out.println("핸들 : "+c.핸들);
System.out.println("바퀴 : "+c.바퀴);
System.out.println("차종 : "+c.차종);
// 바퀴 : 0
// 차종 : null
System.out.println("----------------------------");
c.핸들 = 1;
c.바퀴 = 4;
c.문 = 4;
c.차종 = "꼬마자동차 붕붕";
c.제조사 = "엄마자동차";
System.out.println("핸들 : "+c.핸들);
System.out.println("바퀴 : "+c.바퀴);
System.out.println("차종 : "+c.차종);
c.전진();
c.후진();
c.정지();
c.가속();
c.감속();
// 자료형 참조변수 = new 생성자();
Car c2 = new Car();
// c2는 Car 클래스의 instance
System.out.println("c2 : "+c2);
// 메모리에 올라와있는 변수 : instance
// c 참조값 : 객체
// 새로운 자동차 객체를 만들고 멤버변수의 값을 초기화 시키고
// 전진, 후진 메서드를 호출해 보세요.
// 이름 : myCar
// 차종을 출력
Car myCar = new Car();
myCar.핸들 = 1;
myCar.바퀴 = 4;
myCar.엔진 = 1;
myCar.문 = 4;
// myCar.속도 = 0;
myCar.차종 = "벤틀리";
// myCar.제조사 = null;
myCar.전진();
myCar.후진();
}
}
|
cs |
2) Person - p1, p2
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
package day08;
public class Person {
String name;
int age;
int eye;
int nose;
int mouth;
String gender;
String job;
String tel;
Person() {
eye = 2;
nose = 1;
mouth = 1;
System.out.println("Person 클래스의 기본 생성자");
}
void eating() {
System.out.println("맛난 걸 먹어요 냠냠");
}
void sleeping() {
System.out.println("쿨쿨~~~");
}
void talking() {
System.out.println("쏙닥쏙닥...");
}
void thinking() {
System.out.println("나는 생각한다 고로 존재한다...");
}
}
|
cs |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
package day08;
public class TestMain02 {
public static void main(String[] args) {
// 클래스도 자료형, 사용자정의 자료형ㅇ
Person p1 = new Person();
p1.name = "홍길동";
p1.age = 20;
p1.eye = 2;
p1.nose = 1;
p1.mouth = 1;
p1.gender = "남";
p1.job = "도적";
// p1의 멤버변수 출력
System.out.println("p1 : "+p1);
// 이름, 나이, 눈
System.out.println("이름 : "+p1.name);
System.out.println("나이 : "+p1.age);
System.out.println("눈 : "+p1.eye);
p1.eating();
p1.sleeping();
p1.thinking();
System.out.println("----------------------------");
// Person 클래스의 기본 생성자를 만들고 멤버 변수의 값을 초기화
Person p2 = new Person();
p2.name = "IU";
p2.age = 29;
// p2.eye = 2;
// p2.nose = 1;
// p2.mouth = 1;
p2.gender = "여";
p2.job = "가수";
System.out.println("이름 : "+p2.name);
System.out.println("나이 : "+p2.age);
System.out.println("눈 : "+p2.eye);
System.out.println("job : "+p2.job);
p2.eating();
p2.sleeping();
p2.thinking();
}
}
|
cs |
3) Marine / Medic - m1, m2
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
package day08;
public class Marine {
// 클래스의 전역변수
int hp, x, y, 사거리, 공격력, 방어력;
int 공격속도, 이동속도;
// Marine() {
// hp = 100;
// x = 0;
// y = 0;
// 사거리 = 4;
// 공격력 = 5;
// 방어력 = 3;
// 공격속도 = 3;
// 이동속도 = 4;
// }
Marine() {
// 생성자 : 특수 목적 메서드
// 멤버 변수의 초기화를 목적으로 가지고 있는 메서드
// 리턴하지도 않고 리턴 키퉈드도 없음
// void도 사용하지 않는다.
// 클래스명과 동일한 이름을 갖는다.
// 생성자를 따로 지정하지 않으면
// 기본생성자는(Marine()) 존재하는 것으로 간주
hp = 100;
x = 0;
y = 0;
사거리 = 4;
공격력 = 5;
방어력 = 3;
공격속도 = 3;
이동속도 = 4;
System.out.println("마린 기본생성자 호출");
// return XXX
}
void 공격하기() {
System.out.println("뚜뚜뚜뚜뚜");
}
void 공격하기(Marine x) {
System.out.println("공격하기 메서드 내부 x : "+x);
x.hp -= 공격력;
System.out.println("적 캐릭터 공격!!!");
}
void 이동하기() {
System.out.println("GOGOGO~~~");
}
void 정지() {
System.out.println("정지");
}
void 스팀팩() {
System.out.println();
if(hp >3 ) {
System.out.println("오우예~~~");
hp -= 3;
공격속도 += 2;
이동속도 += 2;
} else {
System.out.println("체력이 부족합니다.");
}
}
void 패트롤() {
System.out.println("순찰중~~~");
}
void status() {
System.out.println("---------------------");
System.out.println("체력 : "+hp);
System.out.println("x : "+x+" , y : "+y);
System.out.println("공격속도 : "+공격속도);
}
}
|
cs |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
package day08;
// 클래스의 구성요소
// 1. 멤버변수(멤버 필드)
// 2. 생성자
// 3. 멤버메서드
public class Medic {
int hp, x, y, 사거리, 치료력, 방어력;
int 치료속도, 이동속도;
Medic() {
hp = 100;
x = 0;
y = 0;
사거리 = 4;
치료력 = 5;
방어력 = 3;
치료속도 = 3;
이동속도 = 4;
}
void 치료하기(Marine x) {
if(x.hp <= 100-치료력) {
System.out.println("호 해줄게~~~");
x.hp += 치료력;
}
}
void 이동하기() {
System.out.println("GOGOGO~~~");
}
void 정지() {
System.out.println("정지");
}
void 패트롤() {
System.out.println("순찰중~~~");
}
void status() {
System.out.println("---------------------");
System.out.println("체력 : "+hp);
System.out.println("x : "+x+" , y : "+y);
System.out.println("치료속도 : "+치료속도);
}
}
|
cs |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
package day08;
public class TestMain03 {
public static void main(String[] args) {
Marine m1 = new Marine();
System.out.println(m1.hp);
// m1.hp = 100;
// m1.x = 0;
// m1.y = 0;
// m1.사거리 = 4;
// m1.공격력 = 5;
// m1.방어력 = 3;
// m1.공격속도 = 3;
// m1.이동속도 = 4;
//
System.out.println(m1.hp);
m1.status();
m1.공격하기();
m1.이동하기();
m1.패트롤();
m1.정지();
// for(int i=1; i<100;i++) {
// m1.스팀팩();
// }
m1.status();
Marine m2 = new Marine();
// 초기화를 쉽게 하기 위한 메서드
// m2.hp = 100;
// m2.x = 0;
// m2.y = 0;
// m2.사거리 = 4;
// m2.공격력 = 5;
// m2.방어력 = 3;
// m2.공격속도 = 3;
// m2.이동속도 = 4;
m2.status();
System.out.println("--------------------------");
m1.공격하기(); // 허공에 발사 중
m2.status();
// 대상을 지정해서 공격하기
System.out.println("m2 : "+m2);
m1.공격하기(m2);
// 1. call by value : 값을 복사해 주고 호출
// 2. call by reference : 참조값에 의한 호출 -> 참조값을 전달해 주고 호출
m2.status();
// m3 마린의 체력을 500으로 생성하고
Marine m3 = new Marine();
m3.hp = 500;
// m1이 m3를 공격하도록 코드로 작성하기
m1.공격하기(m3);
// m3 상태 정보 보기
m3.status();
Medic me1 = new Medic();
me1.치료하기(m2);
m2.status();
}
}
|
cs |
4) Man - m
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
package day08;
public class Man {
int eye, arm, age;
String name, gender, job, 종특;
Man() {
name = "홍길동";
eye = 2;
gender = "남";
arm = 2;
age = 20;
job = "도적";
종특 = "스틸";
}
void 스틸() {
System.out.println("내꼬내꼬 다 내꼬얌!!!");
}
void 달리기() {
System.out.println("헛둘헛둘");
}
void 빠르게달리기() {
System.out.println("땀나게 달려요");
}
void 축지법() {
System.out.println("동에 번쩍 서에 번쩍");
}
}
|
cs |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
package day08;
public class TestMain {
public static void main(String[] args) {
Man m = new Man();
System.out.println(m.name);
System.out.println(m.eye);
System.out.println(m.gender);
System.out.println(m.arm);
System.out.println(m.job);
System.out.println(m.종특);
m.스틸();
m.달리기();
m.빠르게달리기();
m.축지법();
}
}
|
cs |
5) GuGuDan - g1
|
1
2
3
4
5
6
7
8
9
10
|
package day08;
public class GuGuDan {
void print() {
for(int i=1;i<=9; i++) {
System.out.println("5 * "+i+" = "+5*i);
}
}
}
|
cs |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
package day08;
public class GuGuTest {
public static void main(String[] args) {
GuGuDan g1 = new GuGuDan();
g1.print();
}
}
|
cs |
[ 응용 ]
Q01.
TestMain 클래스
Man m = new Man();
System.out.println(m.name); // 홍길동
System.out.println(m.eye); // 2
System.out.println(m.gender);// 남
System.out.println(m.arm); // 2
System.out.println(m.age); // 20
System.out.println(m.job); // 도적
System.out.println(m.종특);// 스틸
m.스틸(); // 내꼬내꼬 다 내꼬얌!!!
m.달리기(); // "헛둘 헛둘"
m.빠르게달리기(); // "땀나게 달려요
m.축지법(); // 동해 번쩍 서해 번쩍
package day08;
public class Man {
int eye, arm, age;
String name, gender, job, 종특;
Man() {
name = "홍길동";
eye = 2;
gender = "남";
arm = 2;
age = 20;
job = "도적";
종특 = "스틸";
}
void 스틸() {
System.out.println("내꼬내꼬 다 내꼬얌!!!");
}
void 달리기() {
System.out.println("헛둘헛둘");
}
void 빠르게달리기() {
System.out.println("땀나게 달려요");
}
void 축지법() {
System.out.println("동에 번쩍 서에 번쩍");
}
}
package day08;
public class TestMain {
public static void main(String[] args) {
Man m = new Man();
System.out.println(m.name);
System.out.println(m.eye);
System.out.println(m.gender);
System.out.println(m.arm);
System.out.println(m.job);
System.out.println(m.종특);
m.스틸();
m.달리기();
m.빠르게달리기();
m.축지법();
}
}
Q2. 구구단 클래스를 작성하시오
GuGuTest 클래스
GuGuDan g1 = new GuGuDan();
g1.print();// 5단 출력
package day08;
public class GuGuDan {
void print() {
for(int i=1;i<=9; i++) {
System.out.println("5 * "+i+" = "+5*i);
}
}
}
package day08;
public class GuGuTest {
public static void main(String[] args) {
GuGuDan g1 = new GuGuDan();
g1.print();
}
}