이번에는 Java의 꽃
객체 ( Object ) 에 대하여 끄적여 보려고 한다
우리가 바론을 잡을 때, 오브젝트 ( Object ) 라고 하지 않던가?
그 오브젝트에 대해 공부해보자
1. 객체는 기본적으로
속성과 동작을 나타낼 수가 있다
그리고, 여러 번 생성을 할 수 있다
군인으로 예를 들어보자면
속성
군인은 방탄모, 군복, 총기, 군번, 등을 정의한다
동작
총을 쏠 수 있다
관등성명을 말할 수 있다탈영을 할 수 있다
여러 번 생성
훈련소에 여러 명이 입소한다
전쟁에 여러 명이 참전한다
위와 같이 생각을 하면서 코드로 작성해 보자
2. 코드 작성
2-1 객체 정의
일단 군인을 정의해 보자. ( 군인한테는 뭐가 필요한지 정의한다 )
속성
군번 |
성명 |
나이 |
계급 |
소속부대 |
출신지 |
총기소지여부 |
하이바소지여부 |
군복종류 |
퇴소날짜 |
동작
관등성명 말하기 |
간단하게 이 정도로 정의해 봤다. 위의 정의한 군인을 코드로 작성해 보자!
패키지에 오른쪽 클릭한 후, Class생성을 해보자
Name에 이름을 정의한다. 그리고 바로 「Finish」 클릭하면, 새로운 클래스가 생겼다.
여기다가 위의 표에 적혀있는 군인 정의를 해보자
이렇게 간단하게 정해주었다.
2-2. private에 대해서
private는 클래스 내에서만 접근할 수 있다는 뜻이다
public은 클래스 외에서도 접근할 수 있다는 뜻이다
지금 Soldier라는 Java파일 안에 군인의 정보를 정의했는데, 다른 Java파일에서는 군인의 정보를 꺼내 볼 수가 없다.
실제로도, 모르는 군인의 군번을 알 수가 없고 직접 불러서 "너 군번 뭐야?"라고 물어봐야 알 수 있듯이 말이다
그럼 접근할 수 있는 Getter와 Setter를 만들어보자
2-3. Getter와 Setter
Class내에 마우스 오른쪽 클릭한 다음, 「Generate Getters and Setters...」를 클릭하자
「SelectAll」 클릭해서 모두 선택한 다음 「Generate」를 클릭
그러면 코드가 자동으로 생성된다.
Getter와 Setter의 기능은
get : 내가 불렀을 때 대답을 해야 한다
set : 내가 정보를 부여할 수 있다
중요하다 꼭 기억해 두자!
2-4. 동작 작성
이번에는 관등성명을 말하는 동작을 넣어보자
동작은 메서드라고 생각하면 된다.
지금 까지 작성한 소스와 위에 군인을 정의한 표를 확인해 보면 비슷한 것을 알 수가 있다
3. 객체 사용해 보기
지금까지는 객체의 정의까지만 했다.
군인을 정의했고, 전장에 투입해 보도록 한다
Class생성 버튼을 누른 다음, Name 작성한 후, 「public static void main(String[] args)」에 체크를 한 후
「Finish」 버튼을 클릭하자!
이렇게 main 메서드가 생성되어 있을 것이다 ( class이름은 아무거나 상관없음 )
자 이제부터 빡집중해서 보도록 하자
1. 군인 생성
Soldier soldier = new Soldier();
이게 정의한 객체를 생성하는 방법이다. 새롭게 생성하는 것을 new라고 생각하면서 살자
생성만 했고, 아직 군복도 총도 주지 않았기 때문에 위의 상태가 되어 있을 것이다
// 헬멧 부여 (true) soldier.setHelmet(true); // 계급 부여 soldier.setSoldierClass("이병");
위에도 말했다시피 set의 경우는 뭔가를 부여하는 것이다
이번에는 방탄모와 계급이 부여되었기 때문에 위의 상태 (속성) 가 되었다고 보면 된다.
이렇게 병사 한 명이 이런 식으로 탄생하는 것이다.
스타크래프트로 치면, 게이트웨이에서 질럿 하나 뽑을 때마다
Zealot zealot = new Zealot();
라고 생각하면 간단하다
그다음은 동작을 불러 보자
soldier.myNameIs();
이렇게 하면 아까의 메서드가 실행하면서
관등성명을 말할 것이다
이병 null이 나왔다.
그렇다. 우리는 군인에게 이름을 부여하지 않았다.
그렇기 때문에 이름도 넣어주자
soldier.setName("올빼미");
※ 관등성명을 부르기 전에 먼저 이름을 부여하도록 한다
그다음 다시 실행해보면
이렇게 결과가 잘 나왔다
반복문 (for 또는 while)을 이용해서 여러 개의 객체 ( Object ) 를 생성해서
웹사이트에 화면에 표시하거나, 스타크래프트처럼 유닛의 시각화를 하면 된다고 생각하면 된다.
이게 객체의 기초이다
객체에 대하여 어렵게 생각하는 분들이 많을거라고 생각을 한다.
옛날에 내친구도 그랬기 때문에, 객체에 대해서 자세하게 설명해주고 싶었는데, 내가 글 쓰는 실력이나 어휘력이 좀 딸리는 편이라 걱정이 되긴 하지만.. 그래도 누군가에게 도움이 되었으면 좋겠다
뭔가를 이해할때는 뭔가를 비유해가면서 이해해보도록 하자!!
전체 소스
Soldier.java
package Test; import java.util.Date; public class Soldier { // 군번 private String soldierNo; // 성명 private String name; // 나이 private int age; // 계급 private String soldierClass; // 소속 또는 부서 private String dep; // 출신지 private String from; // 총기소지여부 private boolean gun; // 하이바소지여부 private boolean helmet; // 군복종류 ( 개구리 또는 디지털 ) private String dress; // 퇴소날짜 private Date finishDate; /** * 관등성명 말하기 */ public void myNameIs() { String myName = this.soldierClass + " " + this.name; System.out.println(myName); } public String getSoldierNo() { return soldierNo; } public void setSoldierNo(String soldierNo) { this.soldierNo = soldierNo; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSoldierClass() { return soldierClass; } public void setSoldierClass(String soldierClass) { this.soldierClass = soldierClass; } public String getDep() { return dep; } public void setDep(String dep) { this.dep = dep; } public String getFrom() { return from; } public void setFrom(String from) { this.from = from; } public boolean isGun() { return gun; } public void setGun(boolean gun) { this.gun = gun; } public boolean isHelmet() { return helmet; } public void setHelmet(boolean helmet) { this.helmet = helmet; } public String getDress() { return dress; } public void setDress(String dress) { this.dress = dress; } public Date getFinishDate() { return finishDate; } public void setFinishDate(Date finishDate) { this.finishDate = finishDate; } }
TestClass.java
package Test; public class TestClass { public static void main(String[] args) { Soldier soldier = new Soldier(); soldier.setHelmet(true); soldier.setSoldierClass("이병"); soldier.setName("올빼미"); soldier.myNameIs(); } }
'Programming > Java' 카테고리의 다른 글
#Java 15화) List 사용하기 (0) | 2022.03.13 |
---|---|
#Java 13화) While문 (반복문) 사용하기 (0) | 2021.10.03 |
#Java 12화) for문(반복문) 사용법 (0) | 2021.10.02 |
#Java 11화) IF문, ELSE 문(조건문)사용법 (0) | 2021.09.29 |
#Java 10화) 메소드 사용법 (Function) (0) | 2021.09.04 |