메소드(method)와 변수 - 5

메소드(method)와 변수 - 5

💡 학습 목표
    1. 메소드와 함수에 차이점을 이해 한다.
    2. 변수의 위치에 따라 지역변수와 멤버 변수로 부를 수 있다.
package basic.ch07;

/**
 * 객체의 속성은 멤버 변수로 객체의 기능은 메서드로 구현 한다.
 */
public class Student {

	// 멤버 변수
	// 특징 - 초기화 값을 넣지 않는다면 기본 값으로 초기화 된다.
	// new .. 생성장(); --> heap 메모리에 올라 갔을 시 값이 없다면 기본값으로 초기화 된다.
	int studentID;
	String studentName;
	String address;

	// 메서드 설계하기
	public void study() {
		System.out.println(studentName + "학생이 공부를 합니다.");
	}

	public void breakTime() {
		System.out.println(studentName + "학생이 휴식을 합니다.");
	}

	public void showInfo() {
		System.out.println("------------상태창------------");
		System.out.println("학생 ID : " + studentID);
		System.out.println("학생 이름 : " + studentName);
		System.out.println("학생 주소 : " + address);
	}

	// 메서드란?
	// 객체의 기능을 구현하기 위해 클래스 내부에 구현되는 함수
	// 멤버 함수(member function) 이라고도 한다.
	// 메서드 - 멤버 변수를 활용해서 기능을 구현한다.
	
	
} // end of class
package basic.ch07;

public class StudentMainTest {

	public static void main(String[] args) {

		Student student1 = new Student();
		student1.studentID = 1001;
		student1.studentName = "샤코";
		student1.address = "푸른언덕";
		student1.study();
		student1.breakTime();
		student1.showInfo();

		Student student2 = new Student();
		student2.studentID = 2001;
		student2.studentName = "야스오";
		student2.address = "붉은언덕";
		student2.showInfo();

	} // end of main

	// 함수
	// 자바에서 함수란 객체와 상관없이 독립적으로
	// 기능을 수행하는 일련의 코드 묶음
	static double addDouble(double d1, double d2) {
		return d1 + d2;
	}
} // end of class

연습 문제 포함

package basic.ch07;

/**
 * 객체의 속성은 멤버 변수로 객체의 기능은 메서드로 구현 한다.
 */
public class Student {

	// 멤버 변수
	// 특징 - 초기화 값을 넣지 않는다면 기본 값으로 초기화 된다.
	// new .. 생성장(); --> heap 메모리에 올라 갔을 시 값이 없다면 기본값으로 초기화 된다.
	int studentID;
	String studentName;
	String address;

	// 메서드 설계하기
	public void study() {
		System.out.println(studentName + "학생이 공부를 합니다.");
	}

	public void breakTime() {
		System.out.println(studentName + "학생이 휴식을 합니다.");
	}

	public void showInfo() {
		System.out.println("------------상태창------------");
		System.out.println("학생 ID : " + studentID);
		System.out.println("학생 이름 : " + studentName);
		System.out.println("학생 주소 : " + address);
	}

	// 메서드란?
	// 객체의 기능을 구현하기 위해 클래스 내부에 구현되는 함수
	// 멤버 함수(member function) 이라고도 한다.
	// 메서드 - 멤버 변수를 활용해서 기능을 구현한다.
	
	// 연습 문제 (메소드를 정의해 보세요)
	// 1. 시험을 친다. studentID + "학생이 시험을 친다."
	
	public void takeTest() {
		System.out.println(studentID + "번 학생이 시험을 친다.");
	}
	// 2. 청소를 한다. cleanUp, studentName + " 학생이 청소를 한다."
	public void cleanUp() {
		System.out.println(studentName + " 학생이 청소를 한다.");
	}
	
} // end of class

 

자유 실습

두 개의 캐릭터를 생성해 공격을 주고 받아 한쪽의 체력이 0이하가 되면 체력이 남은 쪽이 승리하는 코드

package basic.ch07;

public class Warrior {

	String name;
	int level;
	int str;
	int health;

	public void showInfo() {
		System.out.println("----------상태창----------");
		System.out.println("이름 : " + name);
		System.out.println("레벨 : " + level);
		System.out.println("힘 : " + str);
		System.out.println("체력 : " + health);
		System.out.println("공격력 : " + attakPower());
		System.out.println("방어력 : " + defensePower());
	}

	public int attakPower() {
		return (level * 10) + (str * 5);
	}
	public int defensePower() {
		return (level * 10) + 100;
	}
}
package basic.ch07;

public class WarriorMainTest {

	public static void main(String[] args) {

		Warrior ork = new Warrior();
		ork.name = "오크";
		ork.level = 10;
		ork.str = 55;
		ork.health = 1580;

		Warrior human = new Warrior();
		human.name = "인간";
		human.level = 12;
		human.str = 70;
		human.health = 1200;
		ork.showInfo();
		human.showInfo();

		int redTeam = ork.health;
		int blueTeam = human.health;
		int i = 0;
		boolean flag = true;
		while (flag) {
			i++;
			redTeam -= (human.attakPower() - ork.defensePower());
			blueTeam -= (ork.attakPower() - human.defensePower());
			System.out.println("---------" + i + "번째 턴 결과 -----------");
			System.out.println("오크의 남은체력 : " + redTeam);
			System.out.println("인간의 남은체력 : " + blueTeam);
			if (redTeam < 0 && blueTeam < 0) {
				System.out.println("비겼습니다.");
				break;
			} else if (redTeam < 0) {
				System.out.println("인간이 이겼습니다. ");
				break;
			} else if (blueTeam < 0) {
				System.out.println("오크가 이겼습니다. ");
				break;
			}
		}

	}

}

결과(콘솔창)

----------상태창----------
이름 : 오크
레벨 : 10
힘 : 55
체력 : 1580
공격력 : 375
방어력 : 200
----------상태창----------
이름 : 인간
레벨 : 12
힘 : 70
체력 : 1200
공격력 : 470
방어력 : 220
---------1번째 턴 결과 -----------
오크의 남은체력 : 1310
인간의 남은체력 : 1045
---------2번째 턴 결과 -----------
오크의 남은체력 : 1040
인간의 남은체력 : 890
---------3번째 턴 결과 -----------
오크의 남은체력 : 770
인간의 남은체력 : 735
---------4번째 턴 결과 -----------
오크의 남은체력 : 500
인간의 남은체력 : 580
---------5번째 턴 결과 -----------
오크의 남은체력 : 230
인간의 남은체력 : 425
---------6번째 턴 결과 -----------
오크의 남은체력 : -40
인간의 남은체력 : 270
인간이 이겼습니다.

Java 객체지향 핵심 - 2 으로 돌아가기

 

'Java > Java 객체 지향 핵심' 카테고리의 다른 글

생성자(constructor) - 7  (0) 2024.04.16
RunTime Data Area - 6  (0) 2024.04.15
함수와 만들기 {연습 문제}  (1) 2024.04.15
함수와 메서드 - 4  (0) 2024.04.15
객체에 값 할당하기 - 3  (0) 2024.04.15