복습 순서 |
메모 | ||
ch09> Employee EmployeeMainTest MainTest2 |
ch10> Marine Zealot Zergling MainTest1 GateWay GateWayMainTest Hatchery HatcheryMainTest |
ch11> Company MainTest1 |
사번 생성하는 클래스 설계
package ch09;
public class Employee {
public static int serialNum = 1000;
private int employeeId;
private String employeeName;
private String department;
public Employee() {
serialNum++;
employeeId = serialNum;
}
public int getEmployeeId() {
return employeeId;
}
//static메서드 활용
public static int getSerialNum() {
//주의 : static 메서드 안에서는 멤버 변수를 사용할 수 없다
//why : 객체가 만들어지기 전 (new)에 접근해서 사용할 수 있는
//static이기 때문
//객체가 생성되기 전에 실행 될 수 있는 메서드
// department = "개발팀";
return serialNum;
}
}//end of class
사번 부여
package ch09;
public class EmployeeMainTest {
public static void main(String[] args) {
//2.
int temp = Employee.getSerialNum();//static 메서드
System.out.println(temp);//1000
// Employee test1 = new Employee();
// test1.getEmployeeId; // <---일반 메서드
//1.
//serialNum -> static 변수
Employee employee1 = new Employee();
System.out.println(employee1.serialNum);//1001
System.out.println(employee1.getEmployeeId());//1001
Employee employee2 = new Employee();//1002
Employee employee3 = new Employee();//1003
Employee employee4 = new Employee();//1004
Employee employee5 = new Employee();//1005
System.out.println("-----------------------");
System.out.println(employee5.getEmployeeId());
System.out.println(employee5.serialNum);
System.out.println(employee1.serialNum);
System.out.println(employee2.serialNum);
System.out.println(employee3.serialNum);
//멤버변수와 스테틱 변수는 다르다
System.out.println("-----------------------");
//static변수, 멤버변수, 지역변수 -> 메모리 위치 확인
//Q1
//employee1~5 : 인스턴스 변수로 접근해서 getSerialNum()
//실행
System.out.println(employee1.getSerialNum());
System.out.println(employee2.getSerialNum());
System.out.println(employee3.getSerialNum());
System.out.println(employee4.getSerialNum());
System.out.println(employee5.getSerialNum());
//Q2
//클래스 이름으로 접근해서 getSerialNum() 메서드 사용
System.out.println("-------------------------");
System.out.println(Employee.getSerialNum());
System.out.println(Employee.getSerialNum());
System.out.println(Employee.getSerialNum());
System.out.println(Employee.getSerialNum());
System.out.println(Employee.getSerialNum());
System.out.println(Employee.getSerialNum());
}//end of main
}//end of class
랜덤 클래스 사용
java.util 패키지(Package)는 Java 프로그래밍에 유용한 클래스들을 모아둔 것
package ch09;
import java.util.Random;
public class MainTest2 {
public static void main(String[] args) {
//JDK 만들어준 도구
Random r = new Random();
int value = r.nextInt(20);//정수값을 랜덤으로 만들어줌
System.out.println("value : " + value);
//Source > generate getters and setters 자동완성
}
}
Marine, Zealot, Zergling 클래스 설계
package ch10;
public class Marine {
private int power;
private int hp;
private String name;
public Marine(String name) {
this.name = name;
this.power = 5;
this.hp = 100;
}
public void showInfo() {
System.out.println("=====정보창=====");
System.out.println("이름 : " + this.name);
System.out.println("공격력 : " + this.power);
System.out.println("체력 : " + this.hp);
System.out.println("===============");
}
// 공격당합니다.
public void beAttacked(int power) {
this.hp -= power;
if(this.hp <= 0) {
System.out.println(this.name + "은 사망했습니다.");
this.hp = 0;
}
}
//attackZealot
// // 1.마린이 질럿을 공격
//
// public void attackZealot(Zealot zealot) {
// String targetName = zealot.getName();
// System.out.println(this.name + "이 " + targetName +"을 공격");
// zealot.beAttacked(this.power);
// }
//attackZergling
// // 2. 마린이 저글링을 공격
// public void attackZergling(Zergling zergling) {
// String targetName = zergling.getName();
// System.out.println(this.name + "이 " + targetName +"을 공격");
// zergling.beattacked(this.power);
// }
//getName
public String getName() {
return name;
}
//메서드 오버로딩을 사용해 보자
public void attack(Zealot zealot){
String targetName = zealot.getName();
System.out.println(this.name + "이 " + targetName +"을 공격");
zealot.beAttacked(this.power);
}
public void attack(Zergling zergling) {
String targetName = zergling.getName();
System.out.println(this.name + "이 " + targetName +"을 공격");
zergling.beattacked(this.power);
}
}// end of class
클래스 사용 : 서로 공격하고 공격 받은 정보창 출력
package ch10;
public class MainTest1 {
// main function start of code
public static void main(String[] args) {
Zealot zealot1 = new Zealot("질럿1");
Zealot zealot2 = new Zealot("질럿2");
Marine marine1 = new Marine("마린1");
Marine marine2 = new Marine("마린2");
Zergling zergling1 = new Zergling("저글링1");
Zergling zergling2 = new Zergling("저글링2");
// zealot1.showInfo();
// marine1.showInfo();
// zergling1.showInfo();
zealot1.attack(marine1);
zealot2.attack(marine2);
zealot1.attack(marine1);
zealot2.attack(marine2);
marine1.showInfo();
zealot1.attack(zergling1);
zealot2.attack(zergling2);
zealot1.attack(zergling1);
zealot2.attack(zergling2);
zealot1.attack(zergling1);
zergling1.showInfo();
marine1.attack(zergling1);
marine2.attack(zergling2);
marine1.attack(zergling1);
marine2.attack(zergling2);
zergling1.showInfo();
marine2.attack(zealot2);
marine1.attack(zealot1);
marine2.attack(zealot2);
marine1.attack(zealot1);
zealot1.showInfo();
zergling2.attack(marine2);
zergling1.attack(marine1);
zergling2.attack(marine2);
zergling1.attack(marine1);
zergling2.attack(marine2);
zergling1.showInfo();
zergling1.attack(zealot1);
zergling2.attack(zealot2);
zergling1.attack(zealot1);
zealot1.showInfo();
//문제 저글링 , 질럿, 마린 체력이
//0 또는 이하라면 사망했습니다.
zealot2.attack(zergling2);
zergling2.showInfo();
//
// System.out.println("----------------------");
// System.out.println("가나다");
// System.out.println(1);
// System.out.println(0.5);
// System.out.println('A');
}// end of main
}// end of class
질럿 생산 하는 클래스 설계
package ch10;
public class GateWay {
public static int zealotCount = 0;
private int gateWayId;
private String name;
public GateWay(int id) {
this.gateWayId = id;
name = "게이트웨이";
}
//질럿생성하기
public Zealot createZealot() {
System.out.println("질럿을 생산합니다.");
zealotCount++;
return new Zealot("질럿");
}
}//end of class
생산된 질럿 확인
package ch10;
public class GateWayMainTest {
// start of code
public static void main(String[] args) {
GateWay gateWay1 = new GateWay(1);
GateWay gateWay2 = new GateWay(1);
GateWay gateWay3 = new GateWay(1);
Zealot zealot1 = gateWay1.createZealot();
Zealot zealot2 = gateWay1.createZealot();
Zealot zealot3 = gateWay1.createZealot();
Zealot zealot4 = gateWay1.createZealot();
Zealot zealot5 = gateWay1.createZealot();
Zealot zealot6 = gateWay1.createZealot();
Zealot zealot7 = gateWay1.createZealot();
Zealot zealot8 = gateWay1.createZealot();
Zealot zealot9 = gateWay1.createZealot();
gateWay2.createZealot();
gateWay2.createZealot();
gateWay2.createZealot();
gateWay2.createZealot();
gateWay3.createZealot();
gateWay3.createZealot();
gateWay3.createZealot();
gateWay3.createZealot();
zealot1.showInfo();
// static 변수는 인스턴스들이 공유할 수 있는 변수이다.
//--> 객체를 생성하지 않고도 클래스 이름을 접근이 가능하다.
//ex) -> 태양 (객체가 생성되기 전에 메모리에 올라가 있다.)
System.out.println("현재 생성된 질럿 수 : " + GateWay.zealotCount);
}
}
저글링 생산하는 클래스 설계
package ch10;
public class Hatchery {
//static
public static int zerglingCount = 1 ;//초기값
//멤버변수 설계
private String name;
//생성자 설계
public Hatchery(String name) {
this.name = name;
}
//저글링을 생산하는 메서드 만들어 주세요
public Zergling createZergling() {
System.out.println("저글링을 생산합니다.");
zerglingCount++;
return new Zergling("저글링" + zerglingCount);
}
}
생산된 저글링 확인
package ch10;
public class HatcheryMainTest {
public static void main(String[] args) {
System.out.println(Hatchery.zerglingCount);
Hatchery hatchery = new Hatchery("해처리1");
hatchery.createZergling();
hatchery.createZergling();
hatchery.createZergling();
hatchery.createZergling();
hatchery.createZergling();
System.out.println("현재 생성된 저글링 수 : "
+ Hatchery.zerglingCount);
}
}
싱글톤 패턴 만들기
package ch11;
//싱글톤 패턴 만들기
public class Company {
//1.생성자 private 로 만든다.
private Company() {
}
//2. static 변수를 활용해서 내부에서 객체를 생성한다.
private static Company instance = new Company();//변수선언과 동시에 초기화
//3. 외부에서 유일한 인스턴스를 참조할 수 있는 public 메서드를 제공해야 한다.
public static Company getInstance() {
//방어적 코드
return instance;
}
}
클래스 사용 , 캘린더 유틸 패키지 사용
package ch11;
import java.util.Calendar;
public class MainTest1 {
// main function
public static void main(String[] args) {
// company 객체 생성 5개
//생성자가 private라서
Company company1 = Company.getInstance();
Company company2 = Company.getInstance();
Company company3 = Company.getInstance();
Company company4 = Company.getInstance();
Company company5 = Company.getInstance();
//화면에 주소값을 출력해보세요
System.out.println(company1);
System.out.println(company2);
System.out.println(company3);
System.out.println(company4);
System.out.println(company5);
Calendar c = Calendar.getInstance();
System.out.println(c);
}
}
수업내용
[출처] https://blog.naver.com/devnote1 작성자 devnote1
'코리아 IT아카데미 > Java' 카테고리의 다른 글
9일차| 다형성, 업캐스팅, 배열다형성, 다운캐스팅, 추상메서드, 템플릿 메서드 패턴 (0) | 2021.10.28 |
---|---|
8일차 | 배열, 배열리스트, 상속, 오버라이드, 상속할수없는클래스 (0) | 2021.10.27 |
5일차 | 학생과 교통수단 클래스 설계, 마법사·전사 전투 과제 (0) | 2021.10.25 |
6일차 | getter, setter, this, static, 마법사·전사 전투 과제에 추가하기 (0) | 2021.10.25 |
4일차 | 함수와 메서드 (0) | 2021.10.21 |