2021. 4. 30. 17:52ㆍ인공지능 수업(자바)
#인공지능
#자바
#연습
ex)
ex) 상속
if문을 통해 size의 크기에 따라 나오는 값이 다르게 설정하였다.
package com.hb.ch04;
public class GuessGame {
Player p1;
Player p2;
Player p3;
public void startGame() {
p1 = new Player();
p2 = new Player();
p3 = new Player();
int guessp1 = 0;
int guessp2 = 0;
int guessp3 = 0;
boolean p1isRight = false;
boolean p2isRight = false;
boolean p3isRight = false;
int targetNumber = (int) (Math.random() * 10);
System.out.println("I'm thinking of a number between 0 and 9...");
System.out.println();
while (true) {
System.out.println("Number to guess is " + targetNumber);
p1.guess(); //이 부분이 핵심
p2.guess(); //이 부분이 핵심
p3.guess(); //이 부분이 핵심
guessp1 = p1.number;
System.out.println("Player one guessed " + guessp1);
guessp2 = p2.number;
System.out.println("Player two guessed " + guessp2);
guessp3 = p3.number;
System.out.println("Player three guessed " + guessp3);
if (guessp1 == targetNumber) {
p1isRight = true;
}
if (guessp2 == targetNumber) {
p2isRight = true;
}
if (guessp3 == targetNumber) {
p3isRight = true;
}
if (p1isRight || p2isRight || p3isRight) {
System.out.println("We have a winner!");
System.out.println("Player 1 got it right? " + p1isRight);
System.out.println("Player 2 got it right? " + p2isRight);
System.out.println("Player 3 got it right? " + p3isRight);
System.out.println("Game is over");
break;
} else {
System.out.println("Players will have to try again.");
}
System.out.println();
}
}
}
변수에는 객체 변수라는 것은 없고 reference 변수만 있다.
package com.hb.ch04;
class _Dog {
String name;
public static void main(String[] args) {
_Dog dog1 = new _Dog();
dog1.bark();
dog1.name = "Bart";
_Dog[] myDogs = new _Dog[3];
myDogs[0] = new _Dog();
myDogs[1] = new _Dog();
myDogs[2] = dog1;
myDogs[0].name = "Fred";
myDogs[1].name = "Marge";
System.out.println("last dog's name is");
System.out.println(myDogs[2].name);
int x = 0;
while (x < myDogs.length) {
myDogs[x].bark();
x = x + 1;
}
}
public void bark() {
System.out.println(name + " says Ruff!");
}
public void eat() {
}
public void chaseCat() {
}
}
메모리 사용영역 (이것이 자바다. p 140)
여태까지 설명했던 것은 책(이것이 자바다 11장 p454)을 보면 도움이 되기 때문에 한번 보는 것을 권장한다.
Head First java 책에서 아래에 있는 코드는 캡슐화한 코드이다.
위에있는 코드는 수치스러운 코드이며, 우스꽝스럽다고 한다.
instance 변수는 private로
getters and setters 변수는 public 으로 해라.
캡슐화 : 관련이 있는 변수와 함수를 하나의 클래스로 묶고 외부에서 쉽게 접근하지 못하도록 은닉하는게 핵심이다.
캡슐화의 가장 큰 장점은 정보은닉(Information Hiding)이다.
접근을 위해 setter와 getter라는 장치를 만들어 내부에서 접근 가능하다.
입력할 때는 set, 가져올 때는 get을 사용하여 작동할 수 있음을 확인한다.
EletricGuitar 클래스 내부에 있는 변수들은 접근제어자가 private으로 선언되어 있기 때문에
EletricGuitar클래스 내부에서만 접근이 가능하다.
setter : ElectricGuitar클래스내에 있는 변수(brand)에 회원의 아이디값을 저장
public void setBrand(String brand) {
this.brand = brand;
}
public : 어디서든 접근이 가능
void : 리턴값이 없음
setBrand : 메소드이름
String brand : 입력된 매개변수
this.brand : EletricGuitar 클래스 내에 있는 private String brand
setter : 사용하고 싶을 때 void를 사용해야한다.
getter : member클래스내에 있는 변수(brand)에 저장되어 있는 회원의 아이디값을 리턴
public String getBrand() {
return brand;
}
public : 어디서든 접근이 가능
String : 리턴값의 데이터타입
getBrand : 메소드이름
return : 리턴
brand : ElectricGuitar 클래스 내에 있는 private String brand에 저장되어 있는 값
Ex)
위의 if는 참조 변수를 비교하는 것이고
아래의 if는 안에 있는 변수를 비교하는 것이다.